para librerias graficas c++ opengl graphics 3d file-format

c++ - para - librerias graficas java



¿Formatos de archivo y bibliotecas de gráficos recomendados para importar un modelo 3D en un proyecto OpenGL/C++? (3)

Si quieres:

  • modelar un objeto en un editor 3D, por ejemplo, Blender, Maya, etc.
  • exportar el modelo a un formato de datos / archivo
  • importar el modelo en un proyecto usando OpenGL y C / C ++

Entonces:

  • ¿A qué formato de archivo recomendaría exportar, es decir, en términos de simplicidad, portabilidad y compatibilidad (es decir, común / popular)?
  • ¿Qué bibliotecas de gráficos recomendaría utilizar para importar el modelo en su proyecto OpenGL C / C ++ (es decir, de preferencia de código abierto)?
  • Además, hay formatos de datos / archivos que también capturan animaciones, es decir, un formato de "modelo animado", de modo que la animación se pueda modelar en el editor 3D e invocar de alguna manera dentro del código (por ejemplo, accesibilidad a cuadros en la secuencia de animación o paradigma para guardar / cargar detalles relacionados con los cambios a lo largo del tiempo)?

En términos generales, busco simplicidad como prioridad, es decir, ayuda para comenzar a combinar mis antecedentes tanto en arte como en informática. Soy un estudiante de informática en UMass y, al mismo tiempo, una especie de "pseudo" doble en arte al tomar cursos electivos de diseño gráfico en mi universidad, así como clases en el Instituto de Arte de Boston durante las sesiones de verano / invierno. , en otras palabras, no soy un completo novato, pero al mismo tiempo no quiero opciones que estén tan sobrecargadas con locas configuraciones avanzadas que hagan que sea muy difícil comenzar con un proyecto de demostración básico; es decir, como un primer paso para comprender cómo cerrar la brecha entre estos dos mundos, por ejemplo, crear un programa con un personaje 3D con el que el usuario pueda interactuar.


Primero, here puede leer sobre la carga sugerida del modelo lbs.Lib Assimp es realmente bueno y admite muchos formatos. Para los formatos preferidos. Collada: no lo recomendaría porque son formatos basados ​​en XML (texto) que son lentos de analizar. El formato Obj también está muy extendido, pero sufre los mismos problemas que Collada. Todavía es bueno si quieres escribir tu propio analizador ya que su estructura es muy simple. En cambio, sugeriría 3Ds que es binario. Sin embargo, no admite animaciones. . El formato más popular hoy en día que admite tanto malla estática como animación es FBX. Puede descargar de forma gratuita FBX SDK desde Autodesk y conectarlo a su motor. La razón por la que elegiría FBX es porque tanto el SDK como el formato son realmente robustos. Por ejemplo, en FBX puede incrustar no solo geometría y animación, sino también objetos de escena como luces, cámaras, etc. Los documentos de Autodesk también son muy agradables. Espero eso ayude.


Recomendaría utilizar su propio formato personalizado que básicamente es solo un volcado binario del búfer de vértices y búferes de índice utilizados en su programa. (Usando los términos d3d allí, sé que opengl tiene los mismos conceptos pero no puede recordar si tienen diferentes nombres).

Luego, escribiría un programa separado usando assimp que toma casi cualquier formato y escribe el archivo en su formato personalizado. Luego puede usar collada o aquello para almacenar sus modelos reales, pero no tiene la complejidad y lentitud de cargar ese formato en tiempo de ejecución.


COLLADA (lo digo con un "ah" al final), y Assimp (ple como ese).

Y entonces, ¿por qué COLLADA? Sencillo:

  • COLLADA es un estándar abierto hecho por Khronos (Sony específicamente). La belleza de un formato estándar abierto es que es, ¡bueno, un estándar! Puede estar seguro de que cualquier salida de un producto que cumpla con los estándares también sería correctamente leída por otro producto que cumpla con los estándares. Aunque es triste decirlo, algunos productos de modelado 3D no son tan particulares en sus medidas para la conformidad de estándares para COLLADA. Pero aún así puede estar seguro: Blender, Maya, 3ds Max y todos los otros nombres importantes del modelado en 3D tienen un buen soporte para el formato.
  • COLLADA usa XML. Esto hace que sea mucho más simple para usted si planea crear su propio lector o escritor.
  • ADICIONAL: COLLADA es, creo, el único formato que no está vinculado a una compañía específica. Esto es algo muy bueno para nosotros, ya sabes.
  • ADICIONAL 2: Se sabe que COLLADA tarda en analizarse. Es verdad. Pero piénselo: todos los demás formatos no binarios (como fbx) también tienen los mismos problemas. Para sus necesidades, COLLADA debería ser suficiente.
  • ADICIONAL 3: ¡ COLLADA admite animaciones!

Para la biblioteca de importador, recomiendo Assimp. ¿Por qué?

  • Assimp tiene soporte para cualquier formato popular que puedas imaginar. Tiene una interfaz unificada para todos los formatos, por lo que cambiar a otro formato no es un problema.
  • Assimp es extensible. De este modo, puede importar su formato propietario y aún así no modificar su código.
  • ADICIONAL 4: ¡ Assimp es de código abierto ! ¡Apoyemos el software de código abierto!