Animação em OpenGL usando modelos 3D

11

Eu criei um modelo no Blender. Agora eu quero ler esse modelo 3D no meu programa c ++. Imaginei que um modelo pode ser exportado para vários formatos de arquivo, por exemplo .obj, .3ds ou COLLADA e, em seguida, pode ser lido em um programa em c ++. Estou pesquisando na web há um bom tempo e encontrei muitos tutoriais. Mas eu tive problemas com a maioria deles. Por exemplo, no tutorial do Nehe, eles estão usando o glaux, que eu não quero usar no meu programa. E os tutoriais restantes usam o md2, que não é suportado pelo Blender.

Então, alguém pode me orientar qual formato de arquivo usar para exportar o modelo 3D e como carregá-lo no meu programa OpenGL? Além disso, como posso animar esse modelo? É possível adicionar efeitos extras, como o mapeamento de tons, depois que ele foi carregado no programa c ++ usando o OpenGL? se sim, então como?

PS Estou usando Linux para desenvolvimento de jogos

snape
fonte

Respostas:

2

Eu iria para o formato OBJ. Como você provavelmente já percebeu, existem centenas de carregadores de OBJ para C ++ por aí . Acredito que um dos mais maduros é o Assimp , ele suporta muitos formatos diferentes e está muito bem documentado. Aqui você tem um exemplo em que eles o usam.

Dan
fonte
o link lighthouse.com não funciona
Snape
Funciona para mim em todos os meus navegadores ... Tente este link x90.es/1CC
Dan
2
Obj não tem suporte para malhas animadas embora? apenas google "Blender opengl pele mesh" e eu espero que você vai encontrar um formato que se adapta ao que você quer editar: não poderia apagar o meu post, era para ser uma resposta a um post anterior reccomending o formato obj
Stowelly
1
.obj não suporta animação e esta resposta está errada. stackoverflow.com/questions/757145/…
Sean Middleditch
2

O Blender 2.60 corrigiu o suporte à animação COLLADA; foi mais ou menos quebrado nas versões anteriores. No entanto, se você ainda não carregou nenhum formato de modelo em seu próprio código, sugiro aprender a carregar .obj primeiro. Está em ASCII, por isso é legível por humanos e fácil de ler, sem bibliotecas externas de carregadores.

SurvivalMachine
fonte
1

O 3ds não contém nenhum dado de animação para que não funcione. Collada Eu não sei muito, mas quando decidi qual formato usar no meu jogo, pesquisei e comparei muito e finalmente fui com o formato B3D, ele suporta animação esquelética e é carregável pela Irrlicht (também contém valores de iluminação )

Eu uso o exportador 'b3d pipeline' do 3dsMax e codifiquei meu próprio sombreador hlsl para animar e iluminar as malhas, ele funciona muito bem.

Você pode verificar como o Irrlicht faz (por exemplo, carregar e animar), mas faz a animação em software, mas existem exemplos se você pesquisar um pouco sobre como fazer isso com um sombreador (se você quiser). Uma coisa boa é que o Irrlicht suporta o OpenGL e o Linux.

Outro formato bastante simples é o formato .X, deve haver muitos exemplos de como exportar, carregar, analisar e configurar o esqueleto e animar com ele. É um formato Microsof, então talvez você não queira usá-lo :-)

O mapeamento de tons e outras coisas não têm absolutamente nada a ver com animação, então sim, se você souber como usar essa técnica, poderá fazê-lo com malhas animadas.

Valmond
fonte