A programar animações 3D?

Quais são as diferentes maneiras de lidar com animações para Jogos 3D? Você de alguma forma programar as animações no modelador, e, portanto, o arquivo, do que ler e implementá-los no jogo, ou você cria funções de animação para animar seus vetores ainda?

Onde estão alguns bons tutoriais para o lado de programação disto? O Google só me deu o lado do modelador.

Author: William, 2009-04-01

2 answers

Em ambientes de produção, os animadores usam ferramentas especializadas como o 3DS Max da Autodesk para gerar animações em formato de teclado de modelos 3D. Para cada animação para cada modelo, o animador constrói um número de poses para o modelo chamado keyframes, que são então exportados para o formato de dados do jogo.

O jogo carrega então estes keyframes, e para animar o modelo num determinado momento, ele escolhe os dois keyframes mais próximos e interpola entre eles para dar um animação suave, mesmo com um pequeno número de keyframes.

Os modelos animados são normalmente construídos com uma hierarquia óssea. Há um osso raiz, que controla a localização e orientação do modelo dentro do mundo do jogo. Todos os outros ossos são definidos em relação a algum osso progenitor para criar uma árvore. Cada vértice do modelo é atado a um determinado osso, de modo que o modelo pode ser controlado com um número muito menor de Parâmetros: as posições relativas, orientações e escalas de cada osso. A esfola suave é uma técnica utilizada para melhorar a qualidade das animações. Com esfola lisa, um vértice não é amarrado a apenas um osso, mas pode ser amarrado a vários ossos (geralmente um limite duro, como 4, é definido; vértices raramente precisam de mais de 3) com pesos correspondentes. Isso torna o trabalho do animador mais difícil, uma vez que ele tem que fazer muito mais trabalho com vértices perto de articulações, mas o resultado é uma animação muito mais suave com menos distorção em torno do dilatacao.

Em alternativa, alguns jogos usam animação processual, em que os dados da animação são construídos em tempo de execução. As posições e orientações ósseas são computadas de acordo com algum algoritmo, como cinemática inversa ou física ragdoll . Outras opções estão naturalmente disponíveis, mas devem ser codificadas por programadores.

Em vez de animar os ossos proceduralmente e usar cinemática avançada para determinar a localização de todos os modelos vértices, outra opção é apenas gerar proceduralmente a posição de cada vértice por conta própria. Isso permite animações mais complexas que não estão ligadas por hierarquias ósseas, mas é claro que é muito mais complicado e muito mais difícil de fazer bem.
 18
Author: Adam Rosenfield, 2009-04-01 05:20:37

Diferentes maneiras de lidar com animação em jogos?

Para caracteres, normalmente:

    ([8]}Deformação Óssea
  1. mistura de formas
  2. Às vezes até mesmo malhas totalmente animadas (LA. Noire fez isso. No recente Destruidor de tumbas usamos um trabalho computacional para simular milhares de curvas para o cabelo, e os vértices são controlados por estas curvas com um sombreador de vértices.

Muitas vezes, estes são impulsionados por animação de quadros-chave que são interpolados em tempo de execução, e às vezes adicionamos código para conduzir as influências (ossos, pesos blendshape, etc.) processualmente.

Para alguns objectos simples que se movem rigidamente, por vezes o desenho terá o controlo de animação sobre todo o objecto sem ter de o deformar. Às vezes coisas simples como arbustos podem ser feitas para se mover usando algo parecido com paisagens de blendshapes onde você tem uma pose de malha completa em alguns extremos e você meio que mistura entre esses extremos.

Quanto aos tutoriais... bem... Você está interessado em escrever a matemática para a animação você mesmo ou você está mais interessado em obter algum personagem animado em seu jogo e se concentrar na jogabilidade?

Para apenas fazer a jogabilidade, a unidade é uma grande plataforma para brincar.

Se você está no entanto interessado em entender a matemática para animação ou jogos em geral, aqui está o que eu tinha lido como um primer:

  • matrizes usadas para transformações 3d (Certifique-se de que compreende a leis comutativas, associativas e distributivas, e aprender o que cada linha e coluna representa - eles são mais simples do que parecem)
  • Quaternions for rotations (less intuitive, but closely coupled to an axis and rotation)

E não deixes de fora o básico:

  • Vector Dot Product
  • Vector Cross Product

Também como há 10 anos atrás eu escrevi uma biblioteca de animação simples, que é muito simples, livre da maioria dos conceitos mais avançados então é não é um mau lugar para procurar se quiser ter uma ideia básica de como funciona: http://animadead.sf.net

Boa Sorte!
 3
Author: johnb003, 2014-03-15 05:29:02