Animação de Personagens 1º Semestre 2010 > PUCPR > Pós Jogos Bruno C. de Paula.
Transcript of Animação de Personagens 1º Semestre 2010 > PUCPR > Pós Jogos Bruno C. de Paula.
Animação de Personagens
1º Semestre 2010 > PUCPR > Pós Jogos
Bruno C. de PaulaBruno C. de Paula
Nós já vimos que ...Modelos 3D possuem: meshes
(malhas de polígonos), texturas, animações e bones (esqueleto);
O Unity 3D trabalha com arquivos nos formatos:
Autodesk FBX;DAE / Collada;3DS (só meshes);OBJ (só meshes);DXF (só meshes).
211/04/23
Técnicas para produção de modelos animados Software 3D: Maya, 3D Max, Blender, etc; Motion Capture (mocap);
Representação dos arquivos de animação Arquivo único;
Definição dos quadros para cada animação;
Arquivos em separado:Nome com @;
WrapMode indica o tratamento do tempo
Importação de modelosAssets > Import New Asset;OUAssets > Import Package;Cuidados na importação:
Configuração da Escala;Associação da textura com o
material.
Escala deve ser configurada
Associação da textura com o material
Componente Animação Controle das animações disponíveis para o
modelo; Teste das animações.
Componente AnimaçãoPropriedadesAnimation: animação padrão;Animations: lista de animações
acessíveis via script;Play Automatically: toca
automaticamente quando o jogo inicia;Animate Physics: animação interage
com a física;Animate Only If Visible: só anima se
estiver na câmera.
Blending de animações Essencial para transição suave entre uma
animação e outra; Por exemplo, se o personagem está parado e
vai começar a andar, a transição entre as duas animações deve ser natural;
Mistura entre 2 ou mais animações; Deixar wrap mode em loop, para que quando
chegue no fim continue do início. Video
Comandos script para interagir com animaçõesDiversas opções!Executar a animação padrão sem
blending:animation.play();
Tocar uma animação específica:animation.play("jump");
Transição para uma animação aos poucos (fade) fazendo blending:animation.CrossFade("walk");
ScriptTransição simples entre walk e idle
function Update (){ if (Input.GetAxis("Vertical") > 0.2) animation.CrossFade ("walk"); else animation.CrossFade ("idle");}
Layers de animaçãoNecessário utilizar layers quando é
necessária a priorização das animações;Por exemplo, walk (andar) e idle
(parado) podem ter uma transição suave entre elas, mas a animação shoot (de tiro) deve ser prioritária, substituindo imediatamente;
Script Exemplo com layers (1/2)function Start (){ // Todas as animações com loop animation.wrapMode = WrapMode.Loop; // menos o tiro animation["shoot"].wrapMode = WrapMode.Once;
// As animações por padrão estão no layer 0, //shoot tem maior prioridade animation["shoot"].layer = 1;
// Pára as animações que estão rodando animation.Stop();}
Script Exemplo com layers (2/2)
function Update () { if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1) animation.CrossFade("walk"); else animation.CrossFade("idle");
if (Input.GetButtonDown ("Fire1")) animation.CrossFade("shoot");}
DicasPara usar um modelo como personagem do
jogador, associe:Rigidbody: precisão física;Character Controller.
O Character Controller possui o isGrounded para indicar se está no solo ou não;
O script SmoothFollow é útil em jogos de 3a Pessoa para que a câmera siga o personagem;
O estágio da animação pode ser controlado:animation["jump"].time = 0.5;
Leitura complementarManual sobre animação de personagens:
http://unity3d.com/support/documentation/Manual/Character-Animation.html
Projeto com exemplos de animação de personagens:http://unity3d.com/support/resources/
example-projects/character-animationÓtimo artigo sobre implementação de
animation blending:http://www.gamasutra.com/features/
20030704/edsall_01.shtml