Formato de archivo para modelos 3D estáticos y animados

22

Actualmente estoy escribiendo un juego 3D en C ++ con OpenGL y estoy llegando a la parte donde cargar modelos 3D. Por lo tanto, estoy buscando formatos y técnicas de archivo populares para

  • mostrar mallas estáticas y
  • renderizar mallas animadas.

Ya he encontrado una gran cantidad de posibles formatos y técnicas, como animaciones de fotogramas clave, animación esquelética, MD2 hasta MD5, 3DS, X, Collada, etc. pp.

Para simplificar, me gustaría usar un formato (y una técnica) que permita ambas, es decir, mallas estáticas y animadas. Entonces mi pregunta es si uno formato es adecuado para esa tarea y cuál sugeriría. Y para aclarar un poco: no necesito animaciones súper suaves o funciones nuevas.

Nota al margen: porque soy un fanático de las licuadoras (pero no un experto ;-)) sería útil si se puede usar con eso, pero, por supuesto, ese no debería ser el tapón del espectáculo, aquí.

stschindler
fuente

Respuestas:

16

Déjame proponerte que uses Collada .

Es ampliamente compatible con las herramientas DCC y está bien estandarizado. Admite animaciones esqueléticas y ... bueno, hace casi todo, incluidos sombreadores y física, eso no será relevante para usted.

Las animaciones basadas en vértices, como los formatos MDL o MD2, son más o menos una reliquia del pasado. Hoy en día, la mayoría de las animaciones son animaciones esqueléticas (es decir, piense si los personajes están bien arreglados) y las herramientas de creación de contenido están optimizadas para ellos.

Blender tiene un exportador Collada que funciona, pero como siempre, exportar cosas de Blender puede ser molesto. Es posible que deba probar exportadores alternativos o formatos de archivo o piratear los scripts manualmente si experimenta problemas.

Para cargar Collada, use bibliotecas como FCollada o ColladaDOM (No intente analizarlo usted mismo, Collada es un monstruo XML realmente gordo ...). También hay Open Asset Import Library , que carga ~ 25 formatos de archivo, incluido Collada (y todos los demás formatos que menciona). Sería una excelente opción ya que apunta especialmente a los desarrolladores de juegos y proporciona su salida en un formato adecuado para la representación en tiempo real. Pero para ser honesto: soy uno de sus coautores, así que probablemente soy un poco parcial.

Por último, pero no menos importante : el formato de archivo que usa para importar sus activos no debe definir las habilidades de su motor y las técnicas que usa, sino que debe ser al revés. Si tus animaciones son súper suaves no es una cuestión del formato de importación, se trata de qué técnica utilizas para animar mallas y qué tan bien se modelan en primer lugar. El formato de importación debería ayudarte a llevar tus datos de Blender a tu juego.

Alexander Gessler
fuente
Muchas gracias por tu respuesta detallada. Hoy escuché hablar de Collada por primera vez (recomendado por un amigo) y no estaba seguro de si está realmente listo para usarse en un entorno de producción. Lo intentaré ahora, gracias. :-)
stschindler
2
Un buen consejo, especialmente la referencia a AssImp. Sin embargo, no sugerí COLLADA, ya que nadie parece admitirlo de manera consistente y correcta, y es bastante grande para fines de contenido real. Sugeriría usar algo como MD5, que te da el esqueleto y está bastante ampliamente implementado correctamente (creo). Tampoco descartaría tan fácilmente MD2; hay una gran cantidad de modelos de muestra, y puedes animarlo trivialmente a bajo precio (aunque es inútil para muñecas de trapo o lo que sea que tengas).
ChrisE
Simplemente jugaré con diferentes formatos de archivo. Gracias a AssImp, eso será fácil de hacer. MD2 fue mi primera idea, sin embargo, creo que es bastante costoso crearlo, en lugar de solo exportar los huesos adecuados. Las muñecas de trapo no son necesarias en mi caso, solo necesito modelos animados, sin física involucrada.
stschindler
De hecho, hay exportadores de Collada muy malos, pero al menos el formato está bien documentado para que siempre sepa a quién culpar :-). MD5 también es un buen candidato, pero no sé qué tan buenos son los exportadores de Blender. MD2 tiene una representación de vértice muy limitada y tiene un límite de tamaño y precisión. Yo realmente no lo usaría, no hay ninguna razón para hacerlo.
Alexander Gessler
wazim.com/Collada_Tutorial_1.htm es un tutorial en profundidad bastante bueno para cargar collada, pero aún así recomiendo usar una biblioteca.
Exilyth