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çã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 Alberto Raposo – PUC-Rio
Exemplo – Tecgraf / Petrobras Alberto Raposo – PUC-Rio
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 Ainda requer muito “talento” dos animadores 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” Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler
Keyframing Usa-se interpolação linear ou então a interpolação de alguma curva para a geração do movimento 8-degree polynomial spline spline vs. polynomial Alberto Raposo – PUC-Rio 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 Alberto Raposo – PUC-Rio ACM © 1987 “Principles of traditional animation applied to 3D computer animation”
VRML – Animação por Interpolação usuário clica sobre um objeto TouchSensor TimeSensor start a cada pulso de relógio PositionInterpolator nova posição calcula função de interpolação Nó geométrico move Alberto 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 Nó 2 Nó 1 Nó 4 EventIn EventOut EventIn EventOut EventOut EventIn Nó 3 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ógio PositionInterpolator nova posição calcula função de interpolação Nó geométrico move Alberto 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” /> Alberto Raposo – PUC-Rio
VRML/X3D - Interpoladores ScalarInterpolator ColorInterpolator PositionInterpolator OrientationInterpolator Alberto Raposo – PUC-Rio
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 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. Alberto Raposo – PUC-Rio
CylinderSensor CylinderSensor 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. Alberto Raposo – PUC-Rio
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 StringSensor Detecta eventos de teclas Pega strings (todos os caracteres até o usuário dar “Enter”) Alberto Raposo – PUC-Rio
VRML – Exemplo 1 (1) #VRML V2.0 utf8 DEF STOUCH TouchSensor { } ] } # 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 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) DEF ANIMAH PositionInterpolator { # 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 Alberto Raposo – PUC-Rio
VRML – Exemplo 1 (3) value_changed touchTime startTime PositionInterpolator (ANIMAH) TouchSensor (esfera) TimeSensor (XTIMERH) value_changed touchTime startTime fraction_changed set_fraction Texto translation PositionInterpolator (ANIMAV) TouchSensor (caixa) TimeSensor (XTIMERV) value_changed touchTime startTime fraction_changed set_fraction Alberto 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. Alberto Raposo – PUC-Rio
Squash e stretch Squash: achatar objeto ou personagem com seu próprio peso Stretch: aumenta senso de velocidade e enfatiza squash por contraste Alberto Raposo – PUC-Rio
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(wt+q0))*e-kt Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler
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: q : â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): Alberto Raposo – PUC-Rio
Solução: onde: w = (g / l) 1 / 2 k = amplitude inicial do movimento (constante) b = fase inicial do movimento (constante) 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. Alberto Raposo – PUC-Rio
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 no. 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. Alberto Raposo – PUC-Rio
Exemplo: Amortecedor O modelo abaixo representa, simplificadamente o amortecedor: Fmola Fexterna Fatrito Fresultante = Fexterna + Fmola + Fatrito Alberto Raposo – PUC-Rio
Fresultante = Fexterna + Fmola + Fatrito 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 Fexterna é a força externa aplicada ao conjunto Alberto Raposo – PUC-Rio
O modelo descrito pode ser discretizado na forma: onde Dt equivale ao intervalo de amostragem. Alberto Raposo – PUC-Rio
Logo: Finalmente: 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. Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler
Cinemática Direta Descreve as posições das partes do corpo em função dos ângulos das juntas. 1 DOF: joelho 2 DOF: punho 3 DOF: braço Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler
DOF: Degree of Freedom (Graus de Liberdade) MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio
Cinemática Direta Alberto Raposo – PUC-Rio
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 vs MIT EECS 6.837, Durand and Cutler 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 Nó geométrico Script TouchSensor TimeSensor nova posição usuário clica sobre um objeto a cada pulso de relógio t move start 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 MIT EECS 6.837, Durand and Cutler Maior realismo: nuances, movimentos súbtos, estilo... Observar algum movimento. Alberto Raposo – PUC-Rio
Animação Comportamental Personagens autônomos determinam suas próprias ações, pelo menos até certo ponto. Alberto Raposo – PUC-Rio http://accad.osu.edu/~mlewis/Class/behavior.html
Animação de Partículas [Reeves, 1983] Start Trek, The Wrath of Kahn 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. 2001 Alberto 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 Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler
Animação de Cabelos http://www-faculty.cs.uiuc.edu/~yyz/research/hair/ Alberto Raposo – PUC-Rio
Como são feitos os filmes? MIT EECS 6.837, Durand and Cutler 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 Alberto Raposo – PUC-Rio
Stuart Little Modelagem Alberto Raposo – PUC-Rio
Stuart Little Fluido 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 Roupas Alberto Raposo – PUC-Rio
Números – Final Fantasy Alberto Raposo – PUC-Rio http://www.arstechnica.com/wankerdesk/01q3/ff-interview/ff-interview-2.html
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 Alberto Raposo – PUC-Rio
Final Fantasy Software de renderização: Renderman (Pixar) Modelagem: Maya Cabelos Modelados como splines Alberto Raposo – PUC-Rio
Exemplo – Paul Debevec http://www.debevec.org Alberto Raposo – PUC-Rio
Bibliografia Adicional A. Watt, M. Watt. “Advanced Animation and Rendering Techniques”. Addison-Wesley, 1992 N. M. Thalmann. “Computer animation: Theory and Practice”. Springer, 1990 M. Giambruno. “3D Graphics & Animation”.New Riders, 2002 Alberto Raposo – PUC-Rio