2009-02-21 18 views
32

Escribo un motor de juego y me pregunto qué formato de modelo 3D debo usar/cargar/exportar? Obj parece universal y fácil, pero también parece no ser confiable ya que la mayoría de los modelos que existen contienen errores y no se almacena en ningún lugar tanto como en otros formatos.¿Qué formato de modelo 3D debería usar?

Parece que hay formatos específicos para juegos como MD2/3/5, pero no estoy seguro, utilizo wings3d si hago el modelo, y no sé qué otros detalles aparte de simplemente cargar lo que necesito y el soporte del Id de formato que debo implementar, por ejemplo, ¿necesitaría implementar IK? y ¿puedo usar secuencias de comandos por animación en lugar de cinemática inversa y manipulación de huesos?

Respuesta

22

Collada es un formato basado en XML abiertos para los modelos 3D de propiedad del grupo Khronos OpenGL (normas) del cuerpo

Desde el FAQ Collada.org:

La Collada 1.4.x conjunto de características incluye:

  • geometría de malla
  • Transformar jerarquía (rotación, traslación, cizallamiento, escala, matriz)
  • Efectos
  • Shaders (Cg, GLSL, GLES)
  • Materiales
  • Texturas
  • Luces
  • Cámaras
  • Despellejar
  • Animación
  • Física (cuerpos rígidos, restricciones, muñecas de trapo, colisión, volúmenes)
  • de instancias
  • Técnicas
  • Multirepresentations
  • Activos
  • datos de usuario
+15

No utilizaría este formato para gráficos en tiempo real. Collada está pensado como un formato intermedio para las tuberías de producción de gráficos. Úselo para convertir a un formato binario más compacto, o estará esperando todo el día para que se cargue. –

+0

Considere también que no todas las herramientas son compatibles con el conjunto de funciones COLLADA. –

+0

Al final fui con la biblioteca ASSIMP para la carga de geometría para que cualquiera pueda usar lo que quieran siempre y cuando admitan los atributos necesarios –

2

Uso mi propio formato binario. Intenté usar formatos existentes pero siempre encontré limitaciones. Algunos podrían ser trabajados, otros donde se destacan.

Collada puede valer la pena echarle un vistazo. No creo que sea tan bueno como un formato para ser leído por un motor 3D. Sin embargo, está bien como formato general de intercambio de datos.

http://www.collada.org/mediawiki/index.php/Main_Page

5

Antes de preocuparse por lo que 3D formatos que desea apoyar, creo que realmente debería centrarse en las características que usted está planeando poner en práctica en su motor. Anótelos como requisitos y elija el formato que admita la mayoría de las características de la lista ... ya que querrá exhibir su motor (supongo que está planeando que su motor esté disponible al público). Incluso podría querer rodar su propio formato, si su motor tiene características específicas (que siempre es bueno tener para un motor de juego).

Después de eso, admite tantos formatos populares como puedas (.X, .3DS, .OBJ, .B3D) ... ¡mientras más accesible sea tu motor, más gente querrá trabajar con él!

Collada es un formato agradable y genérico, pero como menciona Nils, no es un formato ideal para la implementación final.

1

soportan bien Collada, y luego suministran buenos convertidores a/desde th e otros formatos (esta podría ser la parte difícil). Esto te dará la máxima flexibilidad. Eche un vistazo a C4 engine

-1

Collada es genial, pero vive más en el lado de la aplicación 3D. es decir, se utiliza mejor para transferir datos 3D entre aplicaciones, sin cargar datos 3D desde un motor de juegos. ¿Has mirado a Lua? Es ampliamente utilizado en juegos porque es un lenguaje de scripts que es ridículamente rápido (perfecto para juegos) y muy flexible (puede usarse para representar cualquier información que necesite para su motor).

+5

Lua es un lenguaje de programación, no un formato de modelo. – Dirbaio

+0

Por supuesto :) pero Lua puede representar matrices, por lo que crear un modelo/analizador de modelo 3D es algo que se puede hacer – Mathew

+2

Votado abajo: algunas personas responden con "Lua" a cualquier pregunta que encuentren. – BitTickler

2

+1 para Collada. También puede desear un formato binario nativo personalizado para una carga realmente rápida (generalmente solo un volcado binario de datos de búfer de vértice/índice, más datos de material y esqueleto, y datos de colisión, si corresponde).

Una tendencia en la industria de los juegos es apoyar la carga de un formato como collada en la construcción del desarrollador del motor, pero también tiene una cadena de herramientas que exporta una versión optimizada para su lanzamiento. La versión para desarrolladores puede actualizar la malla dinámicamente, de modo que cuando los artistas guardan los cambios, el archivo se recarga automáticamente, lo que les permite una vista WYSIWYG (casi) instantánea de su modelo, pero aun así proporciona un formato de publicación totalmente optimizado.

+2

Acerca del formato binario nativo, vale la pena señalar que ya existe un formato XML binario estándar: http://en.wikipedia.org/wiki/Binary_XML – Hibou57

+0

@ Hibou57 Bueno, realmente no. Ninguno que sea estándar de la industria de todos modos – RecursiveExceptionException

Cuestiones relacionadas