Estou criando um jogo usando OpenGL (via SDL) e C ++ (via Visual Studios 2010 Professional). Durante o jogo, eu vou usar animação de personagens 3D. Eu gostaria de usar arquivos wavefront * .obj para todos os modelos 3D (com exceção do terreno). Os personagens precisarão ter movimentos fluentes (realistas), com 250 a 500 quadros (para caminhar, correr, correr, pular, agachar-se, engatinhar etc.). Gostaria de usar o md2 ou o md3, mas a ferramenta de modelagem / animação 3D que vou usar (Blender 3D 2.57) não oferece suporte a nenhum dos dois. O jogo só estará rodando no Windows.
O que preciso é de um pequeno e poderoso * .obj loader e analisador que suporte animação. Ele deve ser escrito em C ++ e ser utilizável pelo SDL.
obrigado
Tudo bem, depois de examinar todos os formatos de arquivo para os quais o Blender pode exportar ... Decidi usar o 3DS porque ele produz o menor formato de arquivo quando exporto o cubo padrão. Obrigado @Daniel Por recomendar o 3DS!
Respostas:
O OBJ não suporta animação, para mais informações leia isso .
Para um carregador de objetos compatível, lib-obj vem à mente.
Se você deseja fazer a mistura caseira e pode garantir que o arquivo contenha apenas triângulos; sem quads, etc, a análise de um OBJ é arbitrária (seu único texto!):
Em caso de dúvida, consulte a especificação .
fonte
Só porque o Blender oferece um exportador para o Wavefront não significa que toda a animação também será exportada. O Wavefront OBJ não sabe animação!
Por outro lado, é perfeitamente possível implementar um exportador Add On para md2 / md3, e o AFAIK já existe.
Dito isto, como eu o entendi, você pretende armazenar a malha completa para cada quadro de animação. Esta é uma maneira muito ineficiente de fazer animação. Uma abordagem melhor seria apenas armazenar quadros-chave e interpolar entre eles. Ou melhor ainda: implemente um sistema de deformação de malha compatível com o sistema de animação do Blender ou implemente seu próprio sistema de deformação de malha para o Blender e seu programa. É fácil animar transformações simples de objetos inteiros. As deformações de malha no Blender geralmente ocorrem através do modificador de armadura incorporado, mas é perfeitamente possível implementar um operador de deformação de malha como substituto do modificador de armadura.
ATM Estou desenvolvendo um complemento de exportação / importação do Blender que despeja todos os dados atualmente carregados no formato JSON; um arquivo grande ou um único arquivo para cada bloco de dados. A idéia principal é usá-lo com o WebGL (ou seja, implementar um mecanismo WebGL que permita carregar coisas criadas originalmente para o Blender Game Engine). Talvez eu possa interessá-lo usando o JSON para armazenar informações e modelo.
fonte
Embora a especificação .obj não ofereça suporte a animações nativamente, simplesmente aumentando-a com um arquivo .anm separado, você pode obter animações desossadas brilhantes.
Dê uma olhada em: - http://public.sanguinelabs.co.uk/expose/product.php?id=wastudio
Isso fornece uma ferramenta muito fácil de usar para criar as animações e também fornece uma biblioteca de modelos de código aberto (para OpenGL), para que você possa fazer com que os modelos animados trabalhem rapidamente em seu projeto.
Nota: Sou o desenvolvedor do Wavefront Animation Studio e da libwavefront, portanto, sinta-se à vontade para me enviar um e-mail se houver alguma melhoria ou bugs a serem relatados. O software foi desenvolvido durante o meu período na universidade porque achei extremamente estranho criar e exibir animações usando as ferramentas e bibliotecas complexas atualmente disponíveis.
fonte
A resposta para o que você procura não é * .obj, porque é quase como um bitmap para animação (você pode exportá-lo com o Blender, mas precisa informar ao blender para exportar todos os quadros como um único arquivo * .obj [NÃO É EFICIENTE EM QUALQUER ASPECTOS], como um filme e seus quadros). O que você realmente procura é Collada. Existe um carregador de malha chamado assimp, e ele carrega como um milhão de formatos de malha (estou usando-o para o meu novo mecanismo). E o que você disse sobre * .3DS nem sempre é verdade.
fonte