Animación en OpenGL usando modelos 3D

11

He creado un modelo en Blender. Ahora quiero leer ese modelo 3D en mi programa c ++. Pensé que un modelo se puede exportar a varios formatos de archivo, por ejemplo .obj, .3ds o COLLADA, y luego se puede leer en un programa c ++. He estado buscando en la web para hacerlo durante bastante tiempo y encontré muchos tutoriales. Pero me encontré con problemas con la mayoría de ellos. Por ejemplo, EN el tutorial de Nehe están usando glaux que no quiero usar en mi programa. Y los tutoriales restantes usan md2 que no es compatible con Blender.

Entonces, ¿alguien puede guiarme qué formato de archivo usar para exportar el modelo 3D y cómo cargarlo en mi programa OpenGL? Además, ¿cómo puedo animar ese modelo? ¿Es posible agregar efectos adicionales como el mapeo de tonos después de que se haya cargado en el programa c ++ usando OpenGL? ¿Si es así, entonces cómo?

PD: estoy usando Linux para el desarrollo de juegos

Snape
fuente

Respuestas:

2

Yo iría por el formato OBJ. Como se lo ha dado cuenta, probablemente, hay cientos de cargadores OBJ para C ++ por ahí . Creo que uno de los más maduros es Assimp , admite muchos formatos diferentes y está bastante bien documentado. Aquí tienes un ejemplo donde lo usan.

Dan
fuente
el enlace lighthouse.com no funciona
snape
Funciona para mí en todos mis navegadores ... Pruebe este enlace x90.es/1CC
Dan
2
Obj no tiene soporte para mallas animadas, ¿verdad? solo busque en Google "Blender opengl skinned mesh" y espero que encuentre un formato que se adapte a lo que desea editar: no se pudo eliminar mi publicación, estaba destinado a ser una respuesta a una publicación anterior que recomienda el formato obj
Stowelly
1
.obj no admite animación, y esta respuesta es incorrecta. stackoverflow.com/questions/757145/…
Sean Middleditch
2

Blender 2.60 ha reparado el soporte de animación COLLADA, estaba más o menos roto en versiones anteriores. Sin embargo, si aún no ha cargado ningún formato de modelo en su propio código, le sugiero que primero aprenda a cargar .obj. Está en ASCII, por lo que es fácil de leer y fácil de leer sin bibliotecas externas de cargadores.

SupervivenciaMáquina
fuente
1

3ds no contiene datos de animación para que uno no funcione. No sé mucho sobre Collada, pero cuando decidí qué formato usar en mi juego busqué y comparé mucho y finalmente elegí el formato B3D, admite animación esquelética y se puede cargar desde Irrlicht (también contiene valores de iluminación )

Utilizo el exportador 'b3d pipeline' de 3dsMax y he codificado mi propio sombreador hlsl para animar y encender las mallas, funciona muy bien.

Puede ver cómo lo hace Irrlicht (es decir, cargar y animar), aunque realiza la animación en el software, pero hay ejemplos si busca un poco sobre cómo hacerlo con un sombreador (si lo desea). Lo bueno es que Irrlicht es compatible con OpenGL y Linux.

Otro formato que es bastante directo es el formato .X, debe haber toneladas de ejemplos sobre cómo exportar, cargar, analizar y configurar el esqueleto y animar con él. Sin embargo, es un formato Microsof, así que tal vez no quieras usarlo :-)

El mapeo de tonos y demás no tiene absolutamente nada que ver con la animación, así que sí, si sabes cómo usar esa técnica, puedes hacerlo con mallas animadas.

Valmond
fuente