Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Hastur en 05 de Octubre de 2005, 06:50:50 PM

Título: Md5 Y Meshes De Dx
Publicado por: Hastur en 05 de Octubre de 2005, 06:50:50 PM
 Buenas!

Estoy liado creandome un parser para los MD5 del doom 3 con MDX, la cosa esta en que ya parseo (creo que bien) el .md5mesh, el problema viene a la hora de parsear las animaciones, no entiendo demasiado bien que es lo que deberia leer ni como, por ejemplo, los valores que tiene cada bone en hierarchy, que son?
Deduzco que despues del nombre, viene el numero de bone, pero los demas ni idea :S
hierarchy {
"origin" -1 0 0 //
"Body" 0 6 0 // origin ( Ty Tz )
"Hips" 1 3 2 // Body ( Tx Ty )
"Lupleg" 2 56 4 // Hips ( Qx Qy Qz )
...


Despues, que son los valores que salen para cada fotograma? Supongo que la posicion/rotacion, pero al haber un numero diferente de valores por linea no se como tratarlos:
frame 0 {
 51.5447387695 -3.0239832401
 1.0195504427 5.3025918007
 0.7355086803 -0.3889687657 0.4772257507
 0.0189839788 0.0578746125 -0.5245873928
 -0.8296036124 0.3866359591 0.0100788241
 0.488070637 -0.3712677062 0.7295016646
 -0.0142540894 -0.0333928876 -0.5200206041
 0.8724460602 -0.4404397309 0.1936372519
 1.0421460867 2.7552113533
 ...



Pense en dibujar todo esto como Meshes de MDX para facilitarme un poco la vida, pero todos los ejemplos que he visto crean meshes desde ficheros .x, hay alguna forma de crear meshes desde mis propias estructuras? Las animaciones como se las tendria que pasar al Mesh?

Muchas gracias desde ya :)
Título: Md5 Y Meshes De Dx
Publicado por: BeRSeRKeR en 05 de Octubre de 2005, 08:31:31 PM
 A ver si me acuerdo...

Cita de: "Hastur"Estoy liado creandome un parser para los MD5 del doom 3 con MDX, la cosa esta en que ya parseo (creo que bien) el .md5mesh, el problema viene a la hora de parsear las animaciones, no entiendo demasiado bien que es lo que deberia leer ni como, por ejemplo, los valores que tiene cada bone en hierarchy, que son?
Deduzco que despues del nombre, viene el numero de bone, pero los demas ni idea :S
hierarchy {
"origin" -1 0 0 //
"Body" 0 6 0 // origin ( Ty Tz )
"Hips" 1 3 2 // Body ( Tx Ty )
"Lupleg" 2 56 4 // Hips ( Qx Qy Qz )
...

Por ejemplo, cojamos el bone "origin". Las componentes son:
Cita de: "Hastur"Despues, que son los valores que salen para cada fotograma? Supongo que la posicion/rotacion, pero al haber un numero diferente de valores por linea no se como tratarlos:
frame 0 {
 51.5447387695 -3.0239832401
 1.0195504427 5.3025918007
 0.7355086803 -0.3889687657 0.4772257507
 0.0189839788 0.0578746125 -0.5245873928
 -0.8296036124 0.3866359591 0.0100788241
 0.488070637 -0.3712677062 0.7295016646
 -0.0142540894 -0.0333928876 -0.5200206041
 0.8724460602 -0.4404397309 0.1936372519
 1.0421460867 2.7552113533
 ...
Con lo que te he explicado antes supongo que esto requiere poca explicación. Por ejemplo, "Body" dice que tiene dos componentes animadas a partir del elemento 0 del array de componentes (en este caso del frame 0). Pues nada, eso es 51.5447387695 y -3.0239832401. ¿pero qué significan realmente estas componentes?. Pues bien, lo que significa es que, por ejemplo en el caso de "Body", las componentes Ty y Tz (las que nos indican los bits de animación) del frame base (baseframe), serán sustituídas por estas nuevas componentes. Es decir, si el frame base tenia para el bone "Body" una traslación de (20, 10, -5), ahora pasará a tener una traslación de (20, 51.5447387695, -3.0239832401).

Cita de: "Hastur"Pense en dibujar todo esto como Meshes de MDX para facilitarme un poco la vida, pero todos los ejemplos que he visto crean meshes desde ficheros .x, hay alguna forma de crear meshes desde mis propias estructuras? Las animaciones como se las tendria que pasar al Mesh?
Es totalmente posible crear un mesh sin necesidad de cargarlo desde un archivo. De hecho nosotros lo hacemos así. Cualquier objeto (ya sea Haddd o MD5) lo almacenamos en los meshes de DX. Si cuentro algún tutorial lo pongo por aqui.

Saludos.
Título: Md5 Y Meshes De Dx
Publicado por: Hastur en 05 de Octubre de 2005, 08:43:10 PM
 Wah! muchisimas gracias! Ahora lo tengo todo mucho mas claro :D
Título: Md5 Y Meshes De Dx
Publicado por: Hastur en 07 de Octubre de 2005, 08:27:10 AM
 Encontre un tutorial cojonudo sobre la creacion de Meshes a partir de tu propia geometria, aqui, estuve dandome de patadas con el ayer y al final consegui renderizar la malla del md5mesh :D ahora tendria que hacerme una clase camara o algo para poder moverme y verla por todos los lados, de momento la voy rotando con esto xD
           float angle = Environment.TickCount / 500.0F;
           device.Transform.World = Matrix.RotationYawPitchRoll(angle, angle / 3.0F, 0);
           device.Transform.View = Matrix.LookAtLH(new Vector3(100,0,1000),
               new Vector3(0, 0.5F, 0), new Vector3(0, 1, 0));
           device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 400.0F, 1.0F, 900.0F, 1100.0F);
           device.RenderState.FillMode = FillMode.WireFrame;


Se que puede ser una tonteria, pero me hace mucha ilusion ver que hay algo en pantalla programado por mi :P