Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: tamat en 30 de Octubre de 2006, 09:42:56 PM

Título: Formatos de modelos 3D, meshes y demás
Publicado por: tamat en 30 de Octubre de 2006, 09:42:56 PM
Estoy planteandome añadirle soporte para meshes a mi framework (aunque inicialmente iba dirigido al 2D). La cuestión es que entre tanto formato se hace dificil decantarse por uno.

Supongo que debería elegir el formato que sea más compatible con el programa que pretenda usar para modelar pero por el momento no tengo muy claro cual usar, me encanta Sketch Up para diseñar entornos pero es muy basico y no permite texturizar en serio. Me gustaba milkshape para cosas sencillas, los demás son demasiado pesados para un coder como yo.

En fin, mi pregunta es cual es el formato más compatible entre programas, más comodo de leer, y que tenga las features más elementales. Yo como coder que soy me interesa que guarde la UV y la Normal de cada vertice, que puedas tener diferentes materiales (muy básicos, textura, color, emisive, y poco más), que no tenga que estar navegando entre chunks de basura que no necesito para nada.

Gracias.
Título: Formatos de modelos 3D, meshes y demás
Publicado por: BeRSeRKeR en 30 de Octubre de 2006, 11:31:03 PM
Yo creo que el formato obj es el más extendido, aunque habrán exporters que exporten más datos que otros. Por ejemplo MAX9 parece que tiene un exporter a obj muy completo.

Saludos.
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Alexpi en 31 de Octubre de 2006, 07:45:58 PM
yo personalmente prefiero usar un formato propio, lo que hago es hacer un exportador, de obj u otros a mi formato y asi no me complico :P.
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Marci en 31 de Octubre de 2006, 11:28:42 PM
A ver si alguien puede comentar algo sobre collada
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Vicente en 01 de Noviembre de 2006, 12:56:36 AM
En Jad vamos a usar Collada, pero es un trabajo de chinos utilizarlo. Estamos parseando el Collada a un formato binario propio, y luego eso es lo que cargamos, pero vamos, que parsear y manejar el Collada no es fácil (tampoco es muy difícil, pero es larguísimo...).

Un saludo!

Vicente
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Nato_msc en 01 de Noviembre de 2006, 10:49:19 AM
A todo esto, como puedo crear un formato propio? ya que los que hay por ahi no me convencen demasiado, o son muy grandes (.MAX por ejemplo) o no tienen todo lo que quiero y/o necesitare, quiero tener libertad y asi porder elejir que contendra ese formato para hacerlo lo mas ligero posible.

Saludos.
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Alexpi en 01 de Noviembre de 2006, 03:33:17 PM
hazte una clase mesh con todos los datos que quieras y luego solo es volcar lo que tengas en la clase a un archivo y viceversa.
Título: Formatos de modelos 3D, meshes y demás
Publicado por: Astat en 01 de Noviembre de 2006, 04:50:20 PM
Por si te sirve de orientacion, ahi va el formato que estoy usando yo en mi motor:


Tipo                    Descripcion                  Comentario
----------------------  ---------------------------  --------------------------
<HEADER>
 4 bytes               Firma                        "MESH"
 1 byte                Version                      1
 1 byte                Encriptacion                 '!' sin encriptacion, 'R' Rijndael (AES)
</HEADER>

<INFO>
 1 dword               Vertices                     Total de vertices >0
 1 dword               Caras                        Total de caras >0
 1 dword               Bones                        
 1 byte                Canales UV                   >0
 1 dword               Materiales                   >0
 1 dword               Flag                        
</INFO>

<VERTICES>
 3 float               Posicion
 3 float               Normal                      
 1 dword               Color                        ARGB
 1 dword               BoneIdx

 <UVs>
   2 float             Coordenadas de textura
   ...
 </UVs>

 1 int               Numero de influencias

 <INFLUENCIAS>
   1 int             ID del bone
   1 float           Peso (1.0 == 100%)
   ...
 </INFLUENCIAS>

 1 float             Fisica (0.0 == rigido)       Para pelos o telas

 ...
</VERTICES>

<MATERIALES>
 1 byte                Longitud de nombre           <64
 X byte                Nombre del material
 1 dword               Flag                        
 1 dword               Numero de caras

 <CARAS>
   3 dword             Cara
   ...
 <CARAS>
 ...
</MATERIALES>

<BONES>
 1 byte                Longitud del nombre          <64
 X bytes               Nombre del nodo
 1 word                Indice al padre
 3 floats              Posicion del bone en estatico
 4 floats              Rotacion del bone en estatico
 ...
</BONES>