Vous êtes sur la page 1sur 58

Animao

ESZI012 Jogos Digitais, Fundamentos, Tcnicas e Aplicaes


Prof. Mrio Minami, 1Q17
Hierarquia do Esqueleto
Corao so os ossos
Em geral, organizao em rvore, onde
cada osso tem pai nico
Cada osso pode ter vrios ossos filhos,
mas apenas um pai (via de regra).

A cada osso est associada uma transformao.


Em geral apenas osso raiz no tem pai
Animao
Muda as transformaes de cada osso no tempo, criando movimento
Codificar a transformao de um osso relativo ao seu pai em geral eficaz e
tambm coincide como as pessoas se movem, chamada de Cinemtica
Posterior ou Forward Kinematic (FK), isto , transmitir o movimento para a
frente.
O inverso, ou seja, fixar a posio de um osso de extremidade e mover os ossos
superiores na hierarquia, para mant-lo na posio desejada a Cinemtica
Inversa ou Inverse Kinematic (IK).
Os movimentos devidos IK so mais raros do que FK e portanto
costuma-se armazenar movimentos FK e recalcular IK, para ganhar
eficincia.
RIG (armao, esqueleto)
a organizao dos ossos e como esto unidos uns aos outros.
Muitos jogos usam um nico Rig para todos os movimentos, mas
podem-se ter mltiplos rigs de um mesmo personagem (caminhar,
rolar, dialogar etc.).
No corpo humano (real) nem todos os
ossos possuem pais, como p.ex. a
omoplata (escpula), que no est
associada caixa torxica do mesmo modo
que o osso da coxa (fmur) se articula com
o osso do quadril (bacia) com a rtula. Esta
associao feita por msculos, para dar
maior flexibilidade de movimentos, que
nenhum osso permitiria.
Animao vs Deformao: CPU e GPU
As transformaes coletivas de um rig num instante uma pose.
Animao: mudana da pose ao longo do tempo.
Uma pose no pode ser renderizada diretamente na tela, pois ela apenas
uma lista de transformaes.
Deformao: processo de selecionar uma pose definida pela
animao e aplic-la aos vrtices de uma malha, e mov-los, para
serem renderizados.
Num jogo, via de regra, a animao nem deforma nem renderiza, ou seja em
geral s se preocupa com rigs e poses.
O Motor do Game (Unity) efetua as animaes na CPU e as tarefas de
deformao e posterior renderizao so encarregadas GPU.
Demonstrao CPU x GPU
Modelos e Instncias
Um nico modelo uma descrio de um objeto, que geralmente
uma malha com vrtices, tringulos, texturas etc.

Um mesmo modelo pode ser


usado vrias vezes para cada
objeto na cena. P. Ex.:
* Cada gaivota compartilha
vrtices, textura e Rig.
* Posio e orientao
diferente para cada uma
Controles de Animao
No exemplo das gaivotas, muitos pssaros usaro a mesma animao
bater asas, mas cada uma ser em ritmo e incio diferente.
Copiar cada gaivota gasta muita memria.
Os dados no podem ficar armazenados diretamente na instncia.
Uma instncia muitas vezes ter vrias animaes, todas se
misturando ou funcionando em diferentes conjuntos de ossos.
Controle de animao: estrutura de dados que liga uma instncia
especfica na cena a uma animao especial. Em geral os controles
so colocados em duas listas relacionadas, uma para instncias e
outra para animaes.
Armazenamento de Animao
Memria dos Consoles mais avanados:
PS4, 8Gb, DDR5
Xbox ONE, 8Gb, DDR3
Wii U, 2Gb
Memria gerao anterior:
PS3, 256Mb
Xbox 360, 512Mb
Wii, 88Mb
Animao pode consumir no mximo 25% da memria:
Wii, 20Mb
PS3, 64Mb
Xbox 360, 128Mb
Exemplo de Animao Comum
30 fps, 5 players com 100 animaes cada, 15 inimigos com 20
animaes cada, 4s em mdia por animao
50 ossos por personagem, matriz 4x3 para cada osso
TotalSpace = 30.4.50.(4.3).sizeof(float)((5.100) + (15.20)) = 220Mb !!!
Brigar com quem?
para diminuir o nmero de ossos ou animaes: Departamento de Arte
Diminuir Players: Perder para os concorrentes
Diminuir os inimigos: Perder emoo e jogabilidade
Soluo, brigar com os algoritmos!
1 Decomposio dos movimentos
Matriz de ossos 4x3:
Translao (3), orientao (3), escala (3) e cisalhamento (3)
Em vrios movimentos, nem todos os ossos so usados:
Personagem sentado num bar, no move os ps, quase s ossos da cintura para cima
Pode-se decompor ossos com parmetros fixos (constantes) e variveis.
Suposio:
10% cisalhamento, 20% escala, 50% translao, 90% orientao,
BytesPerBonePerFrame = sizeof(float).(10%.3 + 20%.3 + 50%.3 + 90%.3) =
4.(0.3 + 0.6 + 1.5 + 2.7) = 20.4 bytes
Reduo de 48 para 21 bytes, 44%
220 para 97Mb, ainda suficiente!!
2 Keyframes
Da Animao original: Keyframes e tweening
Em animao normalmente se desenham apenas dos fps.
Dos desenhados, cerca de 20% so keyframes, artista principal:

Artistas auxiliares fazem tweening, ou seja, elaboram os frames entre


os keyframes.
Quatrnios e Interpolao Linear
Quatrnios so mais eficientes computacionalmente, mas:
Cada vez que se interpola, um quatrnio deve ser normalizado, para que no
ocorram defeitos de cisalhamento e escala
ngulos de Euler (matrizes) no apresentam esse problema
Mesmo assim, frames tweening ficam melhor computados com quatrnios.
Dependendo do tipo das animaes, a taxa de keyframes varia:
Ps de helicptero girando
Pessoa dormindo
Bola quicando
30 fps, em mdia podem ser reduzidos a 10 fps.
96 Mbytes reduzem-se a 33 Mbytes, j OK para Xbox, mas pouco para Wii
Algoritmo de De Casteljau
Suponha que queiramos aproximar uma curva
polinomial entre dois pontos p0 e p1 dados
A soluo natural um segmento de reta que
passa por p0 e p1 cuja parametrizao mais p1
comum
p (u) = (1 u) p0 + u p1
u
Podemos pensar em p (u) como uma mdia p0
ponderada entre p0 e p1
Observe que os polinmios (1 u) e u somam
1 para qualquer valor de u
So chamadas de funes de mistura (blending
functions)
Algoritmo de De Casteljau
Para generalizar a idia para trs pontos p0, p1 e p2 consideramos
primeiramente os segmentos de reta p0-p1 e p1p2
p01(u) = (1 u) p0 + u p1
p11(u) = (1 u) p1 + u p2
Podemos agora realizar uma interpolao entre p01(u) e p1(u)
p02(u) = (1 u) p01 (u) + u p11 (u)
= (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2
Algoritmo de De Casteljau

p1

u = 0.25
p11

p02
p01

p0 p2
Algoritmo de De Casteljau

p1

u = 0.5

p02
p01 p11

p0 p2
Algoritmo de De Casteljau

p1

u = 0.75
p01

p02 p11

p0 p2
Algoritmo de De Casteljau

p1

p0 p2
Algoritmo de De Casteljau
A curva obtida pode ser entendida como a mistura dos
pontos p0, p1 e p2 por intermdio de trs funes
quadrticas:
b02(u) = (1 u) 2
b12(u) = 2 u (1 u)
b22(u) = u2
Aplicando mais uma vez a idia podemos definir uma cbica
por 4 pontos
p02(u) = (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2
p12(u) = (1 u) 2 p1 + 2 u (1 u) p2 + u2 p3
p03(u) = (1 u) p02 (u) + u p12 (u)
= (1 u) 3 p0 + 3 u (1 u)2 p1 + 3 u2 (1 u) p2 + u3 p3
Algoritmo de De Casteljau
p1 p3

p02(u)

p03 p12(u)

p0
u = 0.25
p2
Algoritmo de De Casteljau
p1 p3

p02(u)
p03

p12(u)

p0
u = 0.5
p2
Algoritmo de De Casteljau
p1 p3

p03
p02(u)

p12(u)

p0
u = 0.75
p2
Algoritmo de De Casteljau
p1 p3

p03(u)
p02(u)

p12(u)

p0
p2
Algoritmo de De Casteljau
Novamente temos uma curva dada pela soma de 4
funes de mistura (agora cbicas), cada uma
multiplicada por um dos 4 pontos
b03(u) = (1 u) 3
b13(u) = 3 u (1 u)2
b23(u) = 3 u2 (1 u)
b33(u) = u3
Em geral, uma curva de grau n pode ser construda
desta forma e ser expressa por
n
p 0 n (u ) b j n (u ) p j
j 0
Curvas de Bzier e Polinmios de Bernstein
As curvas construdas pelo algoritmo de De Casteljau so conhecidas
como curvas de Bzier e as funes de mistura so chamadas de base
Bzier ou polinmios de Bernstein
Observamos que os polinmios de Bernstein de grau n tm como
forma geral bi n(u) = ci ui (1 u)ni
Se escrevermos as constantes ci para os diversos polinmios, teremos
1o grau: 1 1
2o grau: 1 2 1
3o grau: 1 3 3 1
4o grau: 1 4 6 4 1
Vemos que o padro de formao corresponde ao Tringulo de
Pascal e portanto, podemos escrever

n i
bi n (u ) u (1 u ) n i
i
Polinmios de Bernstein
Polinmios de Bernstein de grau 3

1
0.9
0.8
0.7
b03(u)
0.6
b13(u)
0.5
b23(u)
0.4
b33(u)
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1
u
Forma Matricial da Base Bzier
Podemos escrever a equao para uma curva de
Bzier cbica na forma
p 0
p
p(u ) p 03 (u ) [1 u u 2 u 3 ] M B `1
p 2

p 3
onde M B a matriz de coeficientes da base Bzier
1 0 0 0
3 3 0 0
MB
3 6 3 0

1 3 3 1
Propriedades de Curva de Bzier
Continuidade infinita (todas as derivadas so contnuas)
O grau da curva (do polinmio) dado pelo nmero de pontos
do polgono de controle menos 1
A curva de Bzier est contida no fecho convexo do polgono
de controle
Os polinmios de Bernstein somam 1 para qualquer u
A curva interpola o primeiro e ltimo ponto do polgono de
controle
Desenhando Curvas Bzier
Curva normalmente aproximada por uma linha poligonal
Pontos podem ser obtidos avaliando a curva em u = u1, u2 ... uk
Avaliar os polinmios de Bernstein
Usar o algoritmo recursivo de De Casteljau
Quantos pontos?
Mais pontos em regies de alta curvatura
Idia: subdividir recursivamente a curva em trechos at que cada trecho
seja aproximadamente reto
Quanta memria economizamos com Bzier?
Em geral interpolao cbica necessite de 1/10 de sees em relao
interpolao linear.
Para dar mais realismo, aumentamos um pouco mais do que duas
vezes o nmero de amostras.
Um fator de compromisso chega pode ser 0.277
33 Mb tornam-se 9.2Mbytes, j o suficiente para o Wii!
Pablo Picasso
No Unity3D
Inverse Kinematics Unity3D
SetIKPositionWeight,
SetIKRotationWeight,
SetIKPosition,
SetIKRotation,
SetLookAtPosition,
bodyPosition,
bodyRotation
Funes Quaternion mais usadas
Quaternion.LookRotation,
Quaternion.Angle,
Quaternion.Euler,
Quaternion.Slerp,
Quaternion.FromToRotation,
Quaternion.identity
Animao de Avatares
Propriedades do RIG
Detalhes dos nomes dos Bones
Animator Controller & State Machine
Mquina de Estados: Exemplo1
Mquina de Estados: Exemplo 2
ME: Ex3
Blender: Animation Header
Adicionando KeyFrames no Blender
Autokeying: fazendo o Blender inserir
automaticamente KeyFrames
Voc s edita as Splines
Acertar as concordncias e os efeitos
Depois de calculada, pode-se visualizar a
trajetria
Armaduras em Blender
Blender: Visualizao das Armaduras e
Rigidez
Visualizao
Octadrica
x
Palitos

Rigidez
como
bastes
x
Belzier
Estrutura de Armadura Bsica

H muitos tutoriais na Internet explicando como faz-los!


Algo que vocs podem fazer...
https://www.youtube.com/watch?v=NxbH-QDHAVg

https://www.youtube.com/watch?v=qC-fdgPJhQ8
Microsoft Kinect: como funciona?
https://www.youtube.com/watch?v=uq9SEJxZiUg

1. Melhoria no tracking dos corpos


2. Mais preciso na profundidade
3. Cmera colorida Full HD
4. IR ativo (usar IR e cores simultaneamente)
Motion Capture MakeHuman Blender e
CMU Graphics Lab Motion Capture Database
CMU Motion Capture Database
http://mocap.cs.cmu.edu/subjects.php

https://www.youtube.com/watch?v=dFLPjVWjmCY

https://www.youtube.com/watch?v=mzWyO838C-0
Referncias
Rabin, S., Introduo ao Desenvolvimento de Games, Vol.2, cap. 5.2, 2012.
Esperana, C. e Cavalcanti, P. R., Introduo Computao Grfica
Curvas, disponvel em: www.lcg.ufrj.br/Cursos/COS-751/curvas-ppt
Learning the Basics of Blender Animation Tools. In: http://blog.digitaltutors.com/basics-of-blender-
animation-tools/, acessado em 01/03/2016.
Understanding automatic key frames insertion. In:
http://blender.stackexchange.com/questions/25931/understanding-automatic-key-frames-insertion,
acessado em 01/03/2016.
Manual Unity3D.
https://unity3d.com/pt/learn/tutorials/modules/beginner/animation/animator-controller?playlist=17099
https://www.blender.org/manual
How the Kinect Depth Sensor Works in 2 Minutes. In: https://www.youtube.com/watch?v=uq9SEJxZiUg
https://developer.microsoft.com/en-us/windows/kinect/hardware
https://jeremykun.com/2013/05/11/bezier-curves-and-picasso/
Prautzsch, H., Boehm, W., and Paluszny, M., Bezier and B-Spline Techniques, Springer, 2002

Vous aimerez peut-être aussi