Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Animação por Computador
Alberto B. Raposo
abraposo@tecgraf.puc-rio.br
http://www.tecgraf.puc-rio.br/~abraposo/INF1366
Alberto Raposo – PUC-Rio
Anima
Anima
ç
ç
ão
ão
?
?
Modificação no tempo de
parâmetros, de tal forma que
possamos perceber este “movimento”
de forma natural.
• Movimento de objetos
• Metamorfose
• Variação da cor
• Variação da intensidade da luz
Exemplo – Tecgraf / Petrobras
TRADICIONALSistemas de Pintura Editores Gráficos Sistemas de Interpolação Controle de Câmera, etc. AUXILIADA (2D) KEYFRAMING CINEMÁTICA DINÂMICA Máquinas de Estado Campos Potenciais Outros Modelos PROCEDIMENTAL (Local / Global) MODELADA (3D) POR COMPUTADOR ANIMAÇÃO
Alberto Raposo – PUC-Rio
Animação Tradicional
• Desenha-se cada quadro da
animação
– Grande controle
– Trabalhoso
• Animação por células (cel
animation)
– Camadas, keyframe,
inbetween…
Alberto Raposo – PUC-Rio
Animação Auxiliada por Computador
• Parte da renderização, do cálculo das
interpolações, etc. é feita no computador.
Alberto Raposo – PUC-Rio
Animação Modelada por Computador
• Keyframing
• Procedural
– Baseada em física
• Cinemática (direta e inversa)
• Dinâmica (direta e inversa)
– Motion Capture
• Comportamental
• Outras técnicas
Alberto Raposo – PUC-Rio
Keyframing
• Animação gerada a partir da interpolação de
quadros-chave
– Automatiza o “inbetweening”
– Bom controle
– Menos trabalhosa que tradicional
Alberto Raposo – PUC-Rio
Keyframing
•Descrição dos
movimentos dos
objetos como função
no tempo de um
conjunto de
posições-chave.
•Em resumo: computar
os quadros
intermediários
ACM © 1987 “Principles of traditional animation applied to 3D computer animation”
( )
s t
MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio
Keyframing
• Usa-se interpolação linear
ou então a interpolação de
alguma curva para a geração
do movimento
( )
x t
t
t
t
8-degree
polynomial
spline
spline vs.
polynomial
0 0 0 (x,y t, ) 1 11 (x y t, , ) 2 2 2 (x,y t, )MIT EECS 6.837, Durand and Cutler
Interpolação de Key Frames
• A interpolação (por
splines, por ex.) pode
gerar interpenetrações
indesejadas
– “Talento” do animador
precisa corrigir esses e
outros problemas da
interpolação de quadros
VRML – Animação por Interpolação
usuário clica sobre um objeto
TouchSensor
TimeSensor
start a cada pulso de relógioPositionInterpolator
nova posição calcula função de interpolaçãoNó
geométrico
moveAlberto Raposo – PUC-Rio
VRML - Tipos de Parâmetros e
Roteamento de Eventos
• Cada nó VRML define um nome, um tipo e
um valor default para seus parâmetros.
• Parâmetros são os reponsáveis pela
diferenciação de um nó de outro do mesmo
tipo.
– Exemplo
geometry Sphere { radius 2 }
geometry Sphere { radius 3 }
Alberto Raposo – PUC-Rio
VRML - Tipos de Parâmetros e
Roteamento de Eventos
(2)
• Há dois tipos de parâmetros: campos
(fields) e eventos (events)
• Campos podem ser modificáveis
(exposedFields)
ou não (fields)
exposedField = eventIn + field + eventOut
Alberto Raposo – PUC-Rio
VRML - Tipos de Parâmetros e
Roteamento de Eventos
(3)
• Eventos sinalizam mudanças causadas por
“estímulos externos” e podem ser propagados
entre os nós do ambiente através de roteamentos
que conectam um EventOut a um EventIn do
mesmo tipo
EventOut EventOutNó 1
EventOut EventIn EventInNó 2
Nó 3
EventInNó 4
Alberto Raposo – PUC-Rio
VRML - Tipos de Parâmetros e
Roteamento de Eventos
(4)
• Eventos gerados por sensores e interpoladores,
roteados para nós geométricos, de iluminação ou
de agrupamento, podem definir comportamentos
dinâmicos para os elementos do ambiente
usuário clica sobre um objeto
TouchSensor
TimeSensor
start a cada pulso de relógioPositionInterpolator
nova posição calcula função de interpolaçãoNó
geométrico
moveAlberto Raposo – PUC-Rio
VRML/X3D - Interpoladores
• Interpolam LINEARMENTE valores para geração de
animação
• Ex:
<ScalarInterpolator key=“0 0.2 0.4 0.6 0.8 1” keyValue=“0 5 8 9 4 0” />
Alberto Raposo – PUC-Rio
VRML/X3D - Interpoladores
<ScalarInterpolator key=“0 0.25, 0.25 0.5, 0.5 1” keyValue=“1 1, 2 2, 3 4” />
<ColorInterpolator key=“0, 0.33333, 0.666666, 1” keyValue=“1 0 0, 0 1 0, 0 0 1,
1 0 0” />
VRML/X3D - Interpoladores
• ScalarInterpolator
• ColorInterpolator
• PositionInterpolator
• OrientationInterpolator
VRML/X3D - Interpoladores
• NormalInterpolator
• CoordinateInterpolator
• PositionInterpolator2D
• CoordinateInterpolator2D
Alberto Raposo – PUC-Rio
X3D Interpoladores - Exemplos
Alberto Raposo – PUC-Rio
VRML - Sensores
(1)
• Geram eventos baseados nas ações do
usuário
• Exemplos
• ProximitySensor detecta quando o usuário está
navegando em uma região próxima ao objeto de
interesse
• VisibilitySensor detecta quando certa parte do
mundo (área ou objeto específico) torna-se visível
ao usuário.
Alberto Raposo – PUC-Rio
VRML - Sensores
(2)
• Exemplos
(cont.)
• TimeSensor gera eventos como passos de tempo e em
conjunto com interpoladores pode produzir animações
TimeSensor {
cycleInterval
1
enabled
TRUE
loop
FALSE
startTime
0
stopTime
0
}
Alberto Raposo – PUC-Rio
VRML - Sensores
(3)
• Exemplos
(cont.)
• TouchSensor detecta quando um objeto do grupo do
seu pai é ativado (clique do mouse, por exemplo).
Esse sensor gera um evento de saída chamado
touchTime que pode disparar um timeSensor,
iniciando uma animação.
TouchSensor {
enabled TRUE
}
Alberto Raposo – PUC-Rio
Exemplo TouchSensor
isActive (button-down)
touchTime (button-up)
Alberto Raposo – PUC-Rio
PlaneSensor
• Converte movimento de
“select-and-drag” do
ponteiro em translação 2D
no plano z=0.
– Quando usado “roteado” no
campo translation de um
Transform, pode ser usado
para “carregar” objetos
filhos do Transform.
PlaneSensorCylinderSensor
• Converte movimento de
“select-and-drag” do
ponteiro em rotação em
torno do eixo y.
– Quando usado “roteado” no
campo rotation de um
Transform, pode ser usado
para “girar” objetos filhos
do Transform.
CylinderSensor
SphereSensor
• Converte movimento de
“select-and-drag” do ponteiro em rotação 3D em
torno da origem.
– Quando usado “roteado” no campo
rotation de um Transform, pode ser
usado para “girar” objetos filhos do
Transform.
Alberto Raposo – PUC-Rio
Outros sensores
• KeySensor
– Detecta eventos de teclas
• StringSensor
– Pega strings (todos os caracteres até o usuário
dar “Enter”)
Alberto Raposo – PUC-Rio
VRML – Exemplo 1
(1)
#VRML V2.0 utf8
# Quando a bola for tocada (mouse) o texto # irá mover-se na horizontal e quando a caixa for tocada o # texto irá mover-se na vertical
Viewpoint { position 0 0 50 } # observador Group { children [ Transform { translation -4 8 0 children [ Shape { # bola geometry Sphere { radius 1.5 } appearance Appearance { material Material { diffuseColor .73 .56 .56 } } } # Sensor da bola
DEF STOUCH TouchSensor { } ] } Transform {
translation 4 8 0 children [
Shape {
geometry Box { size 2 2 2 } # caixa appearance Appearance {
material Material { diffuseColor 0 1 0 } }
} # Sensor da caixa
DEF BTOUCH TouchSensor { } ]
} # Sensores de Tempo
DEF XTIMERH TimeSensor { cycleInterval 2 } DEF XTIMERV TimeSensor { cycleInterval 2 }
Alberto Raposo – PUC-Rio
VRML – Exemplo 1
(2)
# Interpoladores # Horizontal
DEF ANIMAH PositionInterpolator { key [ 0, .25, .5, .75, 1]
keyValue [ 0 0 0, 8 0 0, 16 0 0, -8 0 0, 0 0 0 ] }
# Vertical
DEF ANIMAV PositionInterpolator { (…)} # Texto
DEF SFORM Transform { children Shape { geometry Text { string [ “Virtual” ] fontStyle FontStyle { style “BOLD” justify “MIDDLE” } length [7] maxExtent 20 } } } ] } # Bola ROUTE STOUCH.touchTime TO XTIMERH.set_startTime ROUTE XTIMERH.fraction_changed TO ANIMAH.set_fraction ROUTE ANIMAH.value_changed TO SFORM.set_translation # Caixa ROUTE BTOUCH.touchTime TO XTIMERV.set_startTime ROUTE XTIMERV.fraction_changed TO ANIMAV.set_fraction ROUTE ANIMAV.value_changed TO SFORM.set_translation
Alberto Raposo – PUC-Rio
VRML – Exemplo 1
(3)
touchTime TouchSensor (esfera) TimeSensor (XTIMERH) startTime fraction_changed PositionInterpolator (ANIMAH) value_changed set_fraction Texto translation touchTime TouchSensor (caixa) TimeSensor (XTIMERV) startTime fraction_changed PositionInterpolator (ANIMAV) value_changed set_fractionAlberto Raposo – PUC-Rio
VRML – Exemplo 1
(4)
Alberto Raposo – PUC-Rio
Princípios da Animação Tradicional
•Artigo clássico de John Lasseter (presidente
da Pixar e diretor de Toy Story, Vida de
Inseto, Monstros S.A…):
– "Principles of Traditional Animation Applied to
3D Computer Graphics,“
SIGGRAPH'87, pp.
35-44.
Squash e stretch
• Squash: achatar objeto ou personagem com seu
próprio peso
• Stretch: aumenta senso de velocidade e enfatiza
squash por contraste
Timing
•Timing é afetado pelo peso:
– Objeto leve move rápido
– Objeto mais pesado move mais lentamente
• Linha de escala de tempo para
controlar o desenho dos quadros
intermediários.
Alberto Raposo – PUC-Rio
Animação Procedimental
• Animação descrita por algoritmo
– Animação como função de um número de
parâmetros
• Ex: bouncing ball
• Abs(sin(ωt+θ
0))*e
-ktMIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio
CINEMÁTICA:
Descrição de um movimento através de equações
do tipo:
deslocamento = f (tempo)
sen, cos, ...
A discretização no tempo associará o deslocamento
a um determinado instante (quadro) da animação.
Alberto Raposo – PUC-Rio
Ex. de Animação Cinemática:
Pêndulo Simples
θ
Na figura:
: ângulo entre o pêndulo
e a normal
l
: comprimento do fio que
sustenta a esfera de
massa qualquer
g
: valor da gravidade
O fio que sustenta a esfera é
inextensível e de massa desprezível.
Alberto Raposo – PUC-Rio
A equação que descreve o modelo
do pêndulo simples é:
Trata-se de uma equação diferencial não linear !
Para simplificar a solução, adotar (para pequenas
amplitudes):
s e n (
θ
)
≅
θ
d
d t
g
l
2
2
θ
θ
= −
⋅ s e n (
)
Alberto Raposo – PUC-Rio
Solução
:
onde:
= (g / l)
1 / 2
k
= amplitude inicial do movimento (constante)
= fase inicial do movimento (constante)
ω
β
θ
= ⋅
k
cos(
ω
⋅ +
t
β
)
Alberto Raposo – PUC-Rio
DINÂMICA:
Descrição de um movimento através de equações do
tipo:
deslocamento = f (tempo, forças, torque)
A discretização no tempo associará o deslocamento
a um determinado instante (quadro) da animação.
Um
modelo dinâmico
pode ser aplicado a uma animação
de forma a termos uma
simulação visual
.
Vantagens:
• Maior “grau de realismo” do movimento.
• Possibilidade de simulação de um grande
número de fenômenos físicos.
Desvantagens:
• Modelo mais complexo.
• Maior n
o.de variáveis com as quais o usuário terá
de interagir.
• O “animador” deve dominar alguns conhecimentos
de Mecânica.
• O resultado visual nem sempre compensa o alto
custo dosmodelos dinâmicos.
Exemplo: Amortecedor
O modelo abaixo representa, simplificadamente
o amortecedor:
F
molaF
atritoF
externaAlberto Raposo – PUC-Rio
F
resultante
= F
externa
+ F
mola
+ F
atrito
m
d x
dt
F
k x b
dx
dt
externa
⋅
=
− ⋅ − ⋅
2
2
x
é a posição do objeto em movimento,
m
é a massa do objeto em movimento,
k
é a constante de elasticidade da mola,
b
é o coeficiente de atrito viscoso do
pistão do amortecedor e
F
externa
é a força externa aplicada ao conjunto
Alberto Raposo – PUC-Rio
O modelo descrito pode ser
discretizado na forma:
dx
dt
x
x
x
t
d x
dt
x
x
t
x
x
x
t
i i i i i i i i=
=
−
=
−
=
− ⋅
+
• − • • − − − 1 2 2 1 1 2 22
∆
∆
(
∆
)
onde
∆t
equivale ao intervalo de amostragem.
Alberto Raposo – PUC-Rio
Logo:
Finalmente:
m
x
x
x
t
F
k x
b
x
x
t
i
i
i
ext
i
i
i
⋅
− ⋅
+
=
− ⋅
− ⋅
−
−
−
−
2
1
2
2
1
∆
∆
x
t F
b t
m x
m x
m k t
b t
i
ext
i
i
=
⋅
+ ⋅
+
⋅
− ⋅
+ ⋅
+ ⋅
−
−
∆
∆
∆
∆
2
1
2
2
2
(
)
Alberto Raposo – PUC-Rio
Modelos Articulados
•Modelos Articulados:
– Partes rígidas
– Conectadas por juntas
•Podem ser animados especificando-se os ângulos
das juntas como função do tempo.
t
1
t
2
q
i
q t
i
( )
t
1
t
2
MIT EECS 6.837, Durand and CutlerAlberto Raposo – PUC-Rio
Cinemática Direta
•Descreve as posições das partes do corpo em
função dos ângulos das juntas.
1 DOF:
1 DOF:
joelho
joelho
2 DOF:
2 DOF:
punho
punho
3 DOF:
3 DOF:
bra
bra
ç
ç
o
o
MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio
DOF: Degree of Freedom
(Graus de Liberdade)
MIT EECS 6.837, Durand and Cutler
Cinemática Direta
Cinemática Inversa
• Dada a posição da extremidade e uma
posição final desejada, como mudar os
parâmetros das juntas?
– Cálculo mais difícil que o da cinemática direta
– Mais de uma solução
( )
sS p v
,
,
,
,
,
h h h h h hx
y
z
q f
s
,
,
t t tq f
s
cq
Alberto Raposo – PUC-Rio
Cinemática Inversa
Resultado nem sempre
é único
Alberto Raposo – PUC-Rio
Cinemática Inversa
Alberto Raposo – PUC-Rio
Dinâmica Inversa
• Dinâmica direta: usa forças para criar o
movimento
• Dinâmica inversa: calculas as forças
necessárias para realizar um movimento
http://www.squiresoftgames.com/invdyn/
Alberto Raposo – PUC-Rio
Outras formas de animação em
VRML
• EAI
• Script Node
usuário clica sobre um objetoTouchSensor
TimeSensor
start a cada pulso de relógioScript
nova posição tNó
geométrico
move f(t) (qualquer)Programa externo
Alberto Raposo – PUC-Rio
Animação no POVRAY
• Possui um relógio, usado como timer da animação
• Pode-se usar valor do clock nas transformações
(rotação, translação, etc.)
• Gera-se sequência de imagens BMPs numeradas,
que podem ser “montadas” em um AVI, MPEG,
GIF, etc. com outro programa
• Manual do POVRAY, seção 2.3.8
Alberto Raposo – PUC-Rio
Captura de Movimentos
• Maior realismo: nuances, movimentos
súbtos, estilo...
• Observar algum movimento.
MIT EECS 6.837, Durand and Cutler
Animação Comportamental
• Personagens autônomos determinam suas
próprias ações, pelo menos até certo ponto.
Animação de Partículas [Reeves, 1983]
Alberto Raposo – PUC-Rio
Objetos Deformáveis
• Formas se deformam com o contato
• Problema precisa ser discretizado
Debunne et al. 2001
Alberto Raposo – PUC-Rio
Animação de Roupas
•Discretização
•Equações físicas
•Integração
•Detecção de colisão
Meyer et al. 2001Alberto Raposo – PUC-Rio
Animação de roupas
http://www.cs.caltech.edu/~mmeyer/Research/Cloth/
Alberto Raposo – PUC-Rio
Simulação de Fluidos
•Discretização do volume
do fluido
•Equações de Navier Stokes
•Integração numérica
•Desafios:
– Integração robusta, estabilidade
– Velocidade
– Superfícies realísticas
Fedkiw et al. 2001
Enright et al. 2002 MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
Animação de Cabelos
http://www-faculty.cs.uiuc.edu/~yyz/research/hair/
Alberto Raposo – PUC-Rio
Como são feitos os filmes?
•A maior parte em keyframing
•Figuras articuladas com cinemática inversa
•Skinning
– Pele deformável, músculos
•Controles hierárquicos
– Olhos piscando, etc.
•Grande parte do tempo gasto com modelagem
3D, os esqueletos e seus controles
•Simulação física para movimentos secundários
– Cabelos, roupas, líquidos, sistemas de partículas
Maya tutorial
MIT EECS 6.837, Durand and Cutler
Stuart Little
• Modelagem
Stuart Little
Alberto Raposo – PUC-Rio
Stuart Little
• Sistemas de
Partículas
Alberto Raposo – PUC-Rio
Stuart Little
• Animação Facial
Alberto Raposo – PUC-Rio
Stuart Little
• Pelos
Alberto Raposo – PUC-Rio
Stuart Little
Alberto Raposo – PUC-Rio
Números – Final Fantasy
http://www.arstechnica.com/wankerdesk/01q3/ff-interview/ff-interview-2.html Alberto Raposo – PUC-Rio
Números – Final Fantasy
• Personagens principais > 300.000 polys
• 3.000.000 renders (se cada quadro fosse
renderiazado apenas 1 vez)
– Normalmente, foram 5 revisões de renderizações
– Tempo de renderização de 1 quadro = 90 min
• 934.162 dias de render em 1 CPU
– Usaram 1200 CPUs = 778 dias de renderização
Final Fantasy
• Software de renderização: Renderman
(Pixar)
• Modelagem: Maya
• Cabelos
– Modelados como splines
Alberto Raposo – PUC-Rio