Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Interpretando los .ASE correctamente?

Iniciado por Cronodragón, 18 de Octubre de 2002, 02:23:19 AM

« anterior - próximo »

Cronodragón

                                Hola! Ya logré leer los vértices de un archivo .ASE, pero parece que están desordenados. Cuando muestro la lista de puntos se ven bien, pero cuando relleno todo está mal. Leer la lista de puntos fue sencillo, es simplemente interpretar estos datos:



 *MESH_VERTEX_LIST {

  *MESH_VERTEX    0 -105.2820 3.9882 39.7272

  *MESH_VERTEX    1 -102.3614 3.9882 39.7272

  *MESH_VERTEX    2 -98.7617 3.9882 39.7272

  *MESH_VERTEX    3 -95.9027 3.9882 39.7272



Pero cómo hago para ordenar los vértices?? Parece que la información de las caras indica cómo se hace, pero no se cómo se interpreta:



 *MESH_FACE_LIST {

  *MESH_FACE    0:    A:    0 B:    4 C:    5 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 0

  *MESH_FACE    1:    A:    5 B:    1 C:    0 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 0

  *MESH_FACE    2:    A:    1 B:    5 C:    6 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 0

  *MESH_FACE    3:    A:    6 B:    2 C:    1 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 0

  *MESH_FACE    4:    A:    2 B:    6 C:    7 AB:    1 BC:    1 CA:    0  *MESH_SMOOTHING 2  *MESH_MTLID 0



A lo que puedo leer, en cada línea viene el índice de "cara" seguido de dos puntos, luego de A: #  B: #  C: # AB: # BC: # CA: #. Qué significan esos códigos?? Y los números que los siguen qué son, los índices de los vértices?

Gracias!

- Marco                                

Lord Trancos

                                A: # B: # C: # AB: # BC: # CA: #.

A es el indice del primer vertice
B es el indice del segundo vertice
C es el indice del tercer vertice :)

Usando los vertices que corresponden a A B y C tienes un triangulo :)

Lo de AB, BC, CA simplemente le indica al Max que "Edges" debe de mostrar en pantalla. (osea, q probablemente no tiene interes alguno para lo que quieras hacer)

Unos consejos mas a la hora de usar los datos del ASE en DirectX:

- intercambia los valores Y y Z de los vertices:

DirectX.x = ASE.x
DirectX.y = ASE.z
DirectX.z = ASE.y

- invierte el orden de las caras:

DirectX.A = ASE.C
DirectX.B = ASE.B
DirectX.C = ASE.A

- y "voltea" la coordenada V de las texturas:

DirectX.U = ASE.U
DirectX.V = - ASE.V

SaludoteZ! :)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Cronodragón

                                Muchas gracias Lord. Ahora que sé cómo se definen los triángulos cómo hago para ordenarlos? En DirectX hay que ponerlos en el buffer como una tira. Hay alguna forma sencilla?                                

NeLo

                                Usa D3DPT_TRIANGLELIST en vez de D3DPT_TRIANGLESTRIP.

Saludos.                                
Drowning deep in my sea of loathing

Cronodragón

                                Ohh, claro, gracias!!! :D                                

Cronodragón

                                Ahora tengo una nueva duda. Quiero utilizar los diferentes materiales y texturas que definidas en el .ASE. Pero si yo cargo el modelo en un mismo buffer, como hago para asignarle las texturas correctas a cada triangulo? Una idea que se me ha ocurrido es organizar los vértices según sus materiales, así primero dibujo las caras con el material 1, luego las del material 2, y así. Me pregunto si eso produce un buen efecto. Por otro lado, cómo interpreto la lista de materiales que viene al inicio de cada .ASE? He visto que hay materiales, y submateriales. Bueno, trataré de hacer algo por mi mismo, pero si me pueden dar una mano se los agradeceré.

Saludos,

- Marco                                

Haddd

                                Los submateriales siempre han sido un gran problema para mi. Resulta que muchas veces MAX al utilizar submateriales grabar coordenadas de textura realmente extrañas:4.56, -100 y cosas así. Y claro, no hay forma de que eso aparezca correctamente en el engine. Yo he optado por no utilizarlos, pero si los utilizas, en las caras, al final, tienes el material, que le tienes que sumar al MATERIAL_ID que aparece después al final de la definición del objeto.                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.