Como você adiciona equipamento a um modelo de personagem 3D usando o XNA / Blender?


14

Eu assisti a vários tutoriais do Blender, mas ainda tenho que ver exemplos de como trocar submodelos. Então, minha pergunta é: como você troca equipamentos em um modelo de personagem? Especificamente, eu gostaria de poder adicionar / trocar dinamicamente roupas e itens mantidos por um modelo de personagem no XNA. Idealmente, os itens seguiriam a estrutura óssea do modelo de personagem.

Por exemplo; começando com um personagem nu no XNA, eu gostaria que o personagem segurasse um machado e usasse cota de malha que segue as animações do personagem. Eu também gostaria de poder trocar esse equipamento por uma espada e uma placa de pratos a qualquer momento durante o jogo. Prefiro não criar um modelo para cada combinação de equipamentos. Existe alguma maneira de adicionar os ossos (digamos, um osso de espada) e malhas de um modelo a outro osso do modelo (digamos, um osso da mão direita)?

Obrigado…

Respostas:


13

Para itens transportados pelo personagem como uma espada, escudo ou similar, você pode criar um osso de mão especial, onde anexa o novo item / geometria em tempo de execução.

Quando se trata de diferentes armaduras / roupas, isso será um pouco mais complicado. Uma abordagem amplamente usada (acho também pelo WoW) está usando modelos segmentados:

Você modela seu personagem com todas as diferentes armaduras e peças de pano como sub-malhas (no liquidificador, você usaria grupos de vértices para isso). Depois, basta alternar a visibilidade (ou anexar) as peças necessárias e ocultar (ou desanexar) as peças desnecessárias. Todas as partes compartilharão o mesmo esqueleto.

Você também pode obter muitos looks diferentes trocando a textura.


1
Sim, o WoW parece fazer exatamente isso. As únicas partes "externas" são ombreiras, elmos e armas, de fato.
Raine
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.