Recomendado tipo de modelo 3D para o modelo personagem no jogo, carregado manualmente?

StackOverflow https://stackoverflow.com/questions/585769

  •  06-09-2019
  •  | 
  •  

Pergunta

Eu estou escrevendo um jogo em JOGL e precisa para representar o personagem no jogo. Eu pretendo usar animação esquelética para os movimentos de caráter, e, claro, o personagem vai ser esfolados. Eu não consigo encontrar qualquer bons carregadores modelo para JOGL então eu planejar para carregar o filetype mim, com base nas especificações ou algo assim. Eu também pretendo usar o Blender como meu modelador 3D, de modo algum tipo que existe lá dentro seria melhor.

O que filetype você recomenda que eu uso? .mistura? .x, .3ds, .md2 / 3/5, ... ?? Lembra que eu gostaria de algo com um formato definido clara para que eu possa escrever o carregador sem ter que deobfuscate algum formato de arquivo aleatório, e ele precisa apoiar as características acima mencionadas. Qualquer outra informação que você pode dar sobre por que você escolheu e por isso é melhor seria muito helpeful também!

Obrigado!

EDIT: Eu estarei escrevendo um exportador Blender MS3D. Quando eu terminar eu vou postá-lo aqui .

Enquanto isso, veja a minha resposta marcada abaixo; mas mais passou desde então. Eu não estou indo para manter este atualizado com o que estou fazendo, mas basicamente eu achei jMonkey Motor e já tem um importador ms3d e outros subsistemas que eu tinha começado mão-escrita. Apesar do material scenegraph (que é por isso que eu estava evitando Java3D) Eu acho que vai ser a minha melhor aposta para unir forças com ele, de modo que é o que estou fazendo.

Foi útil?

Solução 2

Antes de tudo, obrigado aos outros dois respondentes. Também basszero você estava certo sobre o arquivo de mistura, e eu deveria ter verificado Wikipedia em primeiro lugar! É uma reserva quase inútil binário da memória do Blender.

Pouco depois de escrever esta pergunta, eu decidi ir em frente e escrever um carregador OBJ, porque 1) ele me daria a experiência de carregamento de um formato de arquivo 3D e 2) parecia um agradável, formato comumente usado mas também fácil para carregar. Acabou sendo uma grande decisão, porque me fez perceber, eu realmente não sabia a diferença entre um objeto e um grupo, e eu também não sabia muito sobre materiais. Ele me ajudou a estabelecer o código para estas estruturas 3D.

Ambas as respostas recomendar formatos baseados em XML. Eu não quero um formato XML. Eu não acredito que este é o lugar certo para XML. Eu acredito que esses formatos foram criados porque XML é flexível, universal e fácil de criar esquemas para, mas isso não é o que estou procurando. Eu quero um formato que é rápido para carga (XML não é, relativamente falando), ele não tem de ser flexível ou legível, e algo que eu posso escrever um importador para, em vez de depender de bibliotecas XML. basszero mesmo disse, "no custo de ser XML", e ele é completamente certo; é um custo que eu não me sinto vale o fardo.

loader

Meu OBJ é feito. Eu separava as classes do modelo reais, e implementados com uma interface MeshFactory para que eu possa no futuro write um carregador diferente se eu queria ... Qual é o plano. Tenho vindo a fazer mais pesquisas nos últimos dois dias e decidiu sobre o formato ms3d.

O formato suporta ms3d aparelhamento esquelética (articulações) e animação esquelética quadro-chave e, além disso, suporta um mapa de textura e alfa mapa. Além disso, é um formato binário facilmente legível por computador que não perde espaço (como XML e OBJ fazer) com etiquetas humanos legíveis e etiquetas e tal.

Blender, infelizmente, não tem um (de trabalho) roteiro ms3d exportação, por isso vou estar escrevendo um script para isso sozinho. Felizmente, não é um processo difícil, e você pode ler a documentação do Blender e usar outros exportadores como exemplos. Vou ter que retocar em minha Python, mas caso contrário, parece muito simples, pelo que tenho visto de outros scripts.

O lado Java de coisas deve ser fácil, na verdade, será ainda mais fácil do que o formato OBJ porque ms3d é mais estruturado. Eu encontrei especificações para o formato ms3d on-line, no estilo C (gênio!) para que eles são incrivelmente auto-explicativo e não tenho mais perguntas sobre o formato. I será baseando minha implementação fora desta especificação, embora eu possa mais tarde implementar minhas próprias variações; essa é a grande coisa sobre escrever meu próprio importador e exportador, eu posso modificar o formato que eu achar melhor.

Ao todo, decidi esta é a melhor solução.

E basszero, você está absolutamente certo, como eu já vi do meu carregador de OBJ: "Uma vez que você tem tudo leitura em, organização de dados (lista de exibição, texturas, matriz de vértice, buffer de vértices, etc.) e renderização são uma besta completamente diferente ".

Cruachan: não Java3D para mim, eu estou furando com JOGL. Eu realmente possuir esse livro (embora não seja acessível no momento), embora eu não me lembro como ele carregou modelos, mas eu tenho certeza que ele usou o formato carregadores JAVA3D que fazê-lo automaticamente. Não é algo que eu estou pensando em usar ... Desculpe!

-Ricket

Outras dicas

Se você pode viver com apenas geometria, ou são preparados para lidar com o seu próprio texturização, então obj é provavelmente o formato mais simples e amplamente apoiada arquivo 3D. É basicamente o ascii de modelagem 3D.

Caso contrário, eu tendem para vrml. É bem definidos e há pelo menos algum código em torno de você começar. Eu já carregado com êxito modelos VRML em JAVA3D usando o código livremente disponível. tamanho de arquivo nativo tende a ser grande, mas isso pode ser resolvido usando um formato compactado.

Eu não recomendaria .3ds. A única vez que eu segurei um leitor para este formato foi em Delphi Pascal, e é confuso, mal definida, difícil de processo e tende a ter um monte de 'variações' tal que, embora eu consegui modelos meu leitor manipulação exportados do -se 3D-MAX muito bem rejeitou muitos modelos de outros pacotes que diziam ser em formato 3DS, mas não foram devidamente formados.

ADICIONADO: Também eu recomendo que você dê uma olhada no Java3D API eo livro O'Reilly assassino jogo de programação em Java como até mesmo se você não ir abaixo da rota Java3D é provável que responder a muitas de suas perguntas.

Eu acredito .blend é principalmente um despejo binário em estruturas de memória de liquidificador, não vai ajudá-lo muito fora do liquidificador. Use Blender para modelo, mas de exportação para um formato diferente.

Pode ser um pouco detalhado, mas eu ouvi wraps Collada de informações 3D muito bem (com o custo de ser XML). A vantagem é que é provável que exista uma definição de esquema propery que você poderia passar por JAXB resultando em um processador completo w / nenhum trabalho de você.

Os formatos .MD * Também pode ser uma boa alternativa. Eles são a partir de mecanismos de identificação (Q1, Q2, Q3, Q4, Doom3) e eles estão documentados. Eles também contêm seqüências de animações.

Uma vez que você tem tudo leitura em, organização de dados (lista de exibição, texturas, matriz de vértice, buffer vértice, etc) e renderização são uma besta completamente diferente.

Woah, homem, você vai liberar o exportador ms3d quando você terminá-lo? E se assim for, como é que vem? Eu realmente preciso chegar em minhas mãos um exportador que as obras de animação e que os usos Fragmotion, e parece que você está fazendo é minha última esperança.

Há um leitor de arquivos .blend open source que pode extrair qualquer informação a partir de um arquivo .blend, incluindo malhas, texturas, esqueleto e animação.

Veja alguns exemplos usando Ogre e Irrlicht aqui: http://gamekit.googlecode.com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top