Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - hammer

#16
Gimbal Lock, hasta el apolo 13 tuvo problemas con el.
 
Basicamente las rotaciones por eule se aplican una a una en ciierto orden y por separado, en este caso es xyz(unity no deja cambiarlo),entonces.......como no se me ocurre como explicarlo te dejo un video(no he encontrado en español,aunque me extraña que no haya) y un ejemplo para que puedas reproducirlo en Unity para poder verlo bien y se entiende a la primera.
 
Puedes hacer la prueba, crea 3 planos uno para cada eje(ponle su color correspondiente son solo para que se vea la idea), pon cada plano con su normal apuntando en su eje, un plano para x donde su normal apunte en la misma direcion que el eje X,otra para y ,otro para z.Luego crea 3 gameobjects vacios y emparentalos uno detras de otro y dentro de cada uno emparentas el plano que le corresponda(no se pueden utilizar los planos ya que al posicionarlos ya no partiriamos de r:0,0,0 que queden asi:(los planos son solo para ayuda visual
 
-x(vacio rotacion 0 , 0 ,0)
 
  --planoX
 
  --y(vacio rotacion 0 , 0 ,0)
 
       --planoX
 
       ---z(vacio rotacion 0 , 0 ,0)
 
          --planoX
 
Ahora prueba a rotar el objecto, y ,en el eje y(el gameobject vacio) en el inspector y veras como se reproduce el problema.
 
Esto no tiene solucion,es asi,no hay mas.Cada año miles de riggers y animadores se suicidan por culpa del gimbal lock.Y es la razon por la que se utilizan Quaternions para representar rotaciones en el espacio.
 
Como lo has implementado?? porque se supone que haciendolo con quaternions no deberias encontrarte este problema.Tambien es posible que segun que jerarquia padres/hijos tengas y como la estes rotando estes reproduciendo el error como hemos hecho con el ejemplo.
 


   
eature=oembed" width="459">

 

 
:)
 
edit el ejemplo estaba mal, no recordaba que unity no deja resetear rotations,estaba pensando en maya :)
#17
Buenas!!Otra forma con quaternions.
 
Calculas el offset que hay entre las dos rotaciones
 
Luego a la rotacion del que manda le aplicas el offset.
 
https://docs.unity3d.com/ScriptReference/Quaternion-operator_multiply.html
 
Mind Blow!!!
 

public Transform boss;
public Transform constrained;
private Quaternion offset;
public void OnEnable()
{
offset = Quaternion.Inverse(boss.rotation) * constrained.rotation;
}
public void Update()
{    
constrained.rotation =  boss.rotation * offset;
}

 
:)
#18
General (Antiguo) / Animacion de vela de barco pirata
Diciembre 19, 2017, 12:13:45 AM
Pues con huesos solo se me ocurre hacer como un Grid de huesos independientes,hacerles un constraint a su posicion correspondiente de la maya,hacer una simulacion de cloth y bakear la posicion de los huesos.Luego esos huesos les haces un el skinning con un mesh sin animacion.
 
Asi tendrias la animacion  del pliegue/despliege hecha con los huesos, y los huesos libres por si quieren hacer algo par darle una deformacion extra.
 
Ahora si no se van a utilizar los huesos "inGame" yo lo plantearia de otra manera,que dara mejores resultados y consumira practicamente lo mismo,o incluso menos.
 
Tochete is coming!!!
 
La animacion del pliegue/despliegue pues la haria directamente en blender con cloth,la bakearia y la importaria en unity como meshAnimation/vertexAnimation(o como se diga).Puede parecer que esto consuma mucho, pero todo lo contrario, piensa que por ejemplo en la era de la play2 solo los juegos punteros como doom3/halfLife2 utilizaban huesos porque consumian muchos recursos,en la mayoria usaban vertexAnimations en los personajes que podian tener cientos de animaciones y mas de 5000 polygonos.Tu solo necesitarias dos,la del pliegue y la del despliegue,y una bandera de 5000 polygonos tendria una animacion muy buena que no conseguiras con huesos a menos que usaras un grid de huesos muy grande.
 
Esto para el pliegue/despliegue, para controlar la potencia del viento cuando sopla a favor de la vela pues con un blendShape para la potencia que lo controlas con alguna variable de direccion del viento.
 
Y por ultimo para simular las pequeñas turbulencias,pues atraves de un shader con alguna textura noise animada deformas un pelin los vertexs,puedes pasarle al shader tambien la variable que marque la direccion del viento y asi mover la textura noise que simula las tarbulencias hacia la derecha o la izquierda dependiendo de por donde venga el aire.
 
Para evitar que las turbulencias afecten en los anclajes de la vela pintas algun canal de los vertexColors para controlar cuanto le afectan,0 en los anclajes superiores 0.5 en los inferiores que van mas sueltos y en el resto de la maya a 1.
 
 
 
Asi te podria quedar una vela que consuma muuuyy poco,muy realista y con bastante control.
 
Pliegue/despliegue---VertexAnimations de una animacion bakeada en blender
 
potencia aire--blendshape + direccion del viento
 
turbulencias-- shader moviendo un noise con la direccion del viento
 
A menos que los huesos se quieran utilizar ingame para algo,me parece que esta opcion es muchissimo mejor.
 
 
 
Cheers.
 
 
 
 
#19
General (Antiguo) / Girar array[] "X" grados
Diciembre 18, 2017, 11:27:53 PM
Holas!!!
 
no puedes rotar las uvs?? es mas barato seguro en texturas grandes y no te tienes que pelear con arrays, lo puede haces por script o mejor aun si puedes por shader que seria lo mas rapido.
 

public void RotateUVs(float radians)
    {
        MeshFilter mf = this.GetComponent<MeshFilter>();
        Vector2[] uv = mf.mesh.uv;
 
        float c = Mathf.Cos(radians);
        float s = Mathf.Sin(radians);
        Vector2[] rotMatrix = new Vector2[2];
            rotMatrix[0] = new Vector2(c, -s);
            rotMatrix[1] = new Vector2(s, c);
        Vector2 uvPivot = new Vector2(0.5f, 0.5f);
        for (int j = 0; j < uv.Length; j++)
        {
            uv[j] = uv[j] - uvPivot;
            float u = rotMatrix[0].x * uv[j].x + rotMatrix[0].y * uv[j].y + uvPivot.x;
            float v = rotMatrix[1].x * uv[j].x + rotMatrix[1].y * uv[j].y + uvPivot.y;
            uv[j].x = u;
            uv[j].y = v;
        }
        mf.mesh.uv = uv;
    }

 
Por shader no lo he probado,puede que haya algo mal escrito,pero diria que tiene que ser asi
 
 
 

void vert(inout appdata_full v)
{
  float s = sin(_radians);
  float c = cos(_radians);
  float2x2 rotationMatrix = float2x2(c, -s, s, c);
  float2 uvPivot = float2(0.5, 0.5);
  v.texcoord.xy = mul(v.texcoord.xy - uvPivot, rotationMatrix) + uvPivot;
}

 
 
#20
General (Antiguo) / RenderCam y materiales
Julio 25, 2017, 11:58:35 AM
Oh, pues hace un tiempo me vi en un problema parecido,en verdad no pero una parte de la solucion creo que te puede servir.Lo que hice fue hacerme un shader para poder controlar los uv mediante los vertexcolors del mesh.
 
Acabo de hacer uno a ver si te sirve,hay dos versiones, la version que pone test es una modificacion con 4 sliders en el material simulando los vertex colors del mesh para que se vea mejor como funciona,que me suelo explicar muy mal :D
 
un pequeño resumen.
 
tilesinwidth/tilesinheight => especificamos n filas/columnas
 
textura => el "spritesheet"  generado (tiling y offset por defecto)
 
canal r => sirve para escojer que sprite se muestra (tendras que calcular el rango de cada sprite teniendo en cuenta el numero de sprites)
 
canal g => para tintar el sprite mediante un HUE
 
canal b => intensidad del tintado
 
canal a => para controlar el clipping del sprite
 
En cuanto lo veas lo pillas en un momento,ahora mismo el shader es del tipo Unlit,se puede cambiar si quieres.
 
 
 
un saludo!
 
//www.unityspain.com/applications/core/interface/file/attachment.php?id=10657">TileSheetShaderTest.shader
//www.unityspain.com/applications/core/interface/file/attachment.php?id=10656">TileSheetShader.shader
#21
mhh quiza te sirva asi
 

Quaternion.FromToRotation (Vector3.forward, dir);

 
 
#22
Buenas,diria que  dentro del transform tienes lo que buscas, "TransformDirection()"; , tambien tienes variantes como point/Inverse, por si el vector es un punto o una direcion, y por si quieres cambiar a local o a global.
 
Tambien lo tienes con matrices con , worldToLocalMatrix o localToWorldMatrix,dentro del transform tambien ofcourse.
 
 
 
Saludos!
#23
General (Antiguo) / Trigonometría con Mathf en Unity
Febrero 14, 2017, 03:08:14 AM
Wow. Menudo curro te has pegado.
 
Muchisimas gracias,mañana le pegare un repaso.
#24
General (Antiguo) / Terreno para mundo abierto
Enero 27, 2017, 12:52:15 AM
Eiii, le has puesto una isla enorme ahora xD,tiene buena pinta.Podrias jugar un poco con el ambien intensity en lighting,si no se ve muy oscuro al personaje aun cuando no es de noche del todo.
 
Yo creo que el motor de terrains de unity esta un poco anticuado ya,hay muy buenos assets en el store que tienen mejores herramientas.Para hacer un terreno muy grande lo mejor es partirlo en trozos y ir cargandolos y quitandolos.
 
Pero bueno , el que has puesto parece bastante grande ya,como para tardar un rato de punta a punta XD.
 
Saludos!
#25
Vale ya esta,capullada mia XD , resulta que cuando abro la ventana en el editor cojo los .json los leo y tal, pues se me havia olvidado hacerle el .Close() al StreamReader despues de leerlos, facepalm XD,la de rato que he perdido por un descuido
 
Merci por las respuestas.
 
Saludos!!
 
 
#26
Gracias por la respuesta.
 
Lo probe de las dos maneras con application.datapath y sin, con el mismo resultado,se borra el .unity pero el .json no.
 
Ya tenia el Refresh()  ;)
 
Supongo que es por temas de seguridad, pero joer, desde el editor dentro del projecto tendria que dejar. :(
#27
Buenas a todos, llevo todo el dia con un problema que no consigo solucionar
 
Estoy intentando borrar unos archivos desde un custom editorWindow,el problema es que solo consigo borrar los archivos .unity y .meta los otros no hay manera lo he probado de varias maneras,alguno me da una IOException: Sharing violation y en otros no dice nada pero los deja sin borrar.
 
 
 

------      
DirectoryInfo dir = new DirectoryInfo ("Assets/Scenes/BuildScenes/");
FileInfo[] fileInfo = dir.GetFiles (name + ".json") as FileInfo[];
fileInfo
  • .Delete ();
--------
File.Delete(Application.dataPath + "/Scenes/BuildScenes/" + name + ".unity");
File.Delete(Application.dataPath + "/Scenes/BuildScenes/" + name + ".unity.meta");
File.Delete(Application.dataPath + "/Scenes/BuildScenes/" + name + ".json");
File.Delete(Application.dataPath + "/Scenes/BuildScenes/" + name + ".json.meta");
--------   
AssetDatabase.DeleteAsset ("Assets/Scenes/BuildScenes/" + name + ".json");
AssetDatabase.DeleteAsset ("Assets/Scenes/BuildScenes/" + name + ".unity");
--------
FileUtil.DeleteFileOrDirectory (Application.dataPath + "/Scenes/BuildScenes/" + name + ".json");
FileUtil.DeleteFileOrDirectory (Application.dataPath + "/Scenes/BuildScenes/" + name + ".unity");
FileUtil.DeleteFileOrDirectory (Application.dataPath + "/Scenes/BuildScenes/" + name + ".json.meta");
FileUtil.DeleteFileOrDirectory (Application.dataPath + "/Scenes/BuildScenes/" + name + ".unity.meta");
--------

 
Estas son las formas con las que he probado y siempre lo mismo,se borra solo el .unity, el .json ahi se queda,he probado con otras extensiones .xml .txt y lo mismo.Entiendo que alomejor es por un tema de seguridad,pero veo por internet que la gente lo hace asi.Se me esta pasando algo?? o es que no se pude de ninguna manera?no me puedo creer que no haya alguna forma de eliminar archivos desde el editor, he probado a inicar unity en modo administrado(por probar) y tampoco.
 
Aguien sabe como se hace??
 
Cheers!!! :)
#28
Tiene una pinta tremenda
#29
General (Antiguo) / ¿De donde sois? solo para el foro
Noviembre 22, 2016, 10:33:49 PM
Barcelona!!!!
 
lml
#30
General (Antiguo) / Dibujar en tiempo real
Noviembre 03, 2016, 05:55:12 PM
this is