11.07.2015 Views

Clarissa Codá dos Santos Cavalcanti Marques Animaç ... - PUC-Rio

Clarissa Codá dos Santos Cavalcanti Marques Animaç ... - PUC-Rio

Clarissa Codá dos Santos Cavalcanti Marques Animaç ... - PUC-Rio

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Clarissa</strong> Codá <strong>dos</strong> <strong>Santos</strong> <strong>Cavalcanti</strong> <strong>Marques</strong>Animação 3D em Tempo Real com AnálisesHarmônicas e ModalTese de DoutoradoTese apresentada ao Programa de Pós–graduação emMatemática Aplicada do Departamento de Matemática da <strong>PUC</strong>–<strong>Rio</strong> como requisito parcial para obtenção do título de Doutor emMatemática AplicadaOrientador: Prof. Thomas Lewiner<strong>Rio</strong> de JaneiroJunho de 2012


<strong>Clarissa</strong> Codá <strong>dos</strong> <strong>Santos</strong> <strong>Cavalcanti</strong> <strong>Marques</strong>Animação 3D em Tempo Real com AnálisesHarmônicas e ModalTese apresentada ao Programa de Pós–graduação emMatemática Aplicada do Departamento de Matemática doCentro Técnico Científico da <strong>PUC</strong>–<strong>Rio</strong> como requisito parcialpara obtenção do título de Doutor em Matemática Aplicada.Aprovada pela comissão examinadora abaixo assinada.Prof. Thomas LewinerOrientadorDepartamento de Matemática — <strong>PUC</strong>–<strong>Rio</strong>Prof. Adelailson PeixotoInstituto de Matemática — UFALProf. Aura ConciInstituto de Computação — UFFProf. Rodrigo de ToledoInstituto de Matemática — UFRJProf. Alex LaierInstituto de Matemática — UFFProf. Anselmo MontenegroInstituto de Computação — UFFProf. Marcos CraizerDepartamento de Matemática — <strong>PUC</strong>-<strong>Rio</strong>Prof. José Eugênio LealCoordenador do Centro Técnico Científico — <strong>PUC</strong>–<strong>Rio</strong><strong>Rio</strong> de Janeiro, 25 de Junho de 2012


To<strong>dos</strong> os direitos reserva<strong>dos</strong>. Proibida a reprodução total ouparcial do trabalho sem autorização da universidade, do autore do orientador.<strong>Clarissa</strong> Codá <strong>dos</strong> <strong>Santos</strong> <strong>Cavalcanti</strong> <strong>Marques</strong><strong>Marques</strong>, <strong>Clarissa</strong>Ficha CatalográficaAnimação 3D em Tempo Real com Análises Harmônicase Modal / <strong>Clarissa</strong> Codá <strong>dos</strong> <strong>Santos</strong> <strong>Cavalcanti</strong> <strong>Marques</strong>;orientador: Thomas Lewiner. — <strong>Rio</strong> de Janeiro : <strong>PUC</strong>–<strong>Rio</strong>,Departamento de Matemática, 2012.v., 94 f: il. ; 29,7 cm1. Tese (Doutorado em Matemática Aplicada) - PontifíciaUniversidade Católica do <strong>Rio</strong> de Janeiro, Departamento deMatemática.Inclui referências bibliográficas.1. Matemática – Tese. 2. Animação. 3. Visualização demúsica. 4. GPU. 5. Análise harmônica. 6. Análise modal.7. Modelos articula<strong>dos</strong>. 8. Esqueletos. 9. Skinning. 10.Harmônicos de variedade. 11. Computação gráfica. I. Lewiner,Thomas. II. Pontifícia Universidade Católica do <strong>Rio</strong> deJaneiro. Departamento de Matemática. III. Título.CDD: 510


AgradecimentosEm primeiro lugar, à Deus por tudo. Foram vários os momentos deprovações, mas em to<strong>dos</strong> me ergueu com Suas Divinas mãos. Sem esquecerobviamente de agradecer pela benção chamada João Gabriel, a quem carregoaqui no ventre, recebida no final deste trabalho.Ao meu marido Julio Daniel, por todo amor, carinho e força, semcontar com as essenciais discussões sobre o tema deste trabalho. Fonte deuma inteligência e de uma bondade indiscrítivel que faz com que meu amor eadmiração só cresça a cada dia. Muito obrigada amor!Aos meus ama<strong>dos</strong> pais, Severino e Dilze, e irmãos, Gustavo e Fernando,pelo carinho, encorajamento, e confiança que nunca deixaram de ter em to<strong>dos</strong>os meus 30 anos. Me apoiaram e não permitiram que me abalasse nos momentosmais difíceis de todo esse tempo. São modelos de ética e profissionalismo, quetanto admiro e tento incorporar no meu dia-a-dia. Resumindo, formam a baseque me sustenta e na qual me inspiro.Às minhas cunhadas, Alessandra Marinho e Ana Maria Menezes, pelaamizade e apoio sempre que precisei.Ao meu orientador Thomas Lewiner, pela orientação e por toda apaciência ao longo de todo o doutorado. Pela compreensão, amizade e palavrasde incentivo em diversos momentos. Aproveito para pedir desculpas pelaseventuais teimosias, risos.Aos professores e funcionários do Departamento da <strong>PUC</strong>, em especial àCreuza e a Kátia, que de alguma forma contribuíram para minha formação.Aos amigos da <strong>PUC</strong> com quem passei bons e diverti<strong>dos</strong> momentos:Débora Mondaini, João Paixão, Leandro Moreira, Pablo Vínicius, RenataThomaz e Yuri Ki. Em especial à Lis Ingrid, que me aturou, me acompanhoue deu força em to<strong>dos</strong> os momentos em que mais precisei.Aos meus grandes e queri<strong>dos</strong> amigos do IMPA que mesmo, às vezes,distantes sempre se tornavam presentes deixando os dias mais leves e felizes:Cristina, Emílio, Ives, e Pietro.Às vezes, no decorrer da vida, Deus nos presenteia com irmãos que apesarde não terem vindo <strong>dos</strong> mesmos pais, o carinho e a cumplicidade são os mesmos.E Ele me deu como irmã, Maria Andrade. À ela, fica todo meu agradecimentopor estes anos de amizade sincera, cumplicidade, apoio e carinho!Aos professores que fizeram parte desta banca por to<strong>dos</strong> os valiososcomentários.Finalmente, agradeço à <strong>PUC</strong>-<strong>Rio</strong>/vRAc e CAPES pelo apoio financeiro.


Resumo<strong>Marques</strong>, <strong>Clarissa</strong>; Lewiner, Thomas. Animação 3D em TempoReal com Análises Harmônicas e Modal. <strong>Rio</strong> de Janeiro, 2012.94p. Tese de Doutorado — Departamento de Matemática, PontifíciaUniversidade Católica do <strong>Rio</strong> de Janeiro.Ainda hoje a animação de caracteres tridimensionais é um processo manual.Aplicações como jogos de computadores, ou capturas de movimentos paraefeitos especiais em filmes requerem incessante intervenções do artista,que praticamente guia os movimentos a cada passo. Nesses exemplos asferramentas disponíveis oferecem geralmente edição de detalhes, ou noespaço ou no tempo. Essa tese utiliza duas abordagens analíticas ao processode animação: harmônica e modal, permitindo descrever movimentos compoucos controles. O resultado destas animações é mostrado em tempo realpara o usuário graças às suas implementações na GPU. Em particular,permite escolher os parâmetros de controle através de galerias animadas emtempo real ou ainda usar as freqüências da música para guiar a animação.Palavras–chaveAnimação ; Visualização de música ; GPU ; Análise harmônica ;Análise modal ; Modelos articula<strong>dos</strong> ; Esqueletos ; Skinning ; Harmônicosde variedade ; Computação gráfica.


Abstract<strong>Marques</strong>, <strong>Clarissa</strong>; Lewiner, Thomas (advisor). Real-Time 3DAnimation with Harmonic and Modal Analyses. <strong>Rio</strong> deJaneiro, 2012. 94p. Tese de Doutorado — Departamento deMatemática, Pontifícia Universidade Católica do <strong>Rio</strong> de Janeiro.Animation of three-dimensional characters is still a mostly manual process.Applications such as computer games and motion capture for special effectsin movies require continuous intervention from the artist, who needs to guidethe movement almost step by step. In such examples the available toolsprovide controls mainly over local details, either in space or in time. Thisthesis uses two analytical frameworks to deal with the process of animation:harmonic and modal analyses, allowing the description of movements with areduced set of controls. A GPU implementation of the resulting animationsallows for real-time rendering of those. In particular, it allows applicationssuch as interactive control tuning through design galleries animated inreal-time or three-dimensional music visualization. Particularly, it allowsthe choice of control parameters through the use of animated galleries inrealtime and the use of music frequencies to guide the animation.KeywordsAnimation ; Music Visualization ; GPU ; Harmonic analysis ; Modalanalysis ; Articulated models ; Skeletons ; Skinning ; Manifold harmonics; Computer graphics.


SumárioNotações 101 Introdução 132 Animação com Harmônicos de Variedade 192.1 Transformada de Fourier 192.2 Harmônicos de Variedades 212.3 Transformações harmônicas em variedades 233 Corpos articula<strong>dos</strong> 253.1 Corpos rígi<strong>dos</strong> 253.2 Juntas elásticas 273.3 Forças 333.4 Movimentos do corpo rígido 373.5 Formulação matricial com matrizes adjuntas 423.6 Análise da dualidade entre velocidades e forças 484 Dinâmica de corpos articula<strong>dos</strong> 504.1 Equações de Newton-Euler sem restrições 504.2 Restrições de velocidade 524.3 Forças das juntas elásticas 554.4 Espaço de movimentos possíveis 584.5 Análise Modal 625 Animação com Análise Modal 695.1 Análise Modal controlada por um sinal sonoro 695.2 Tratamento de esqueletos complexos 695.3 Skinning modal 716 Aspectos computacionais 736.1 Edição de filtros 736.2 Galeria 756.3 Efeitos complementares 786.4 Implementação na GPU do filtro harmônico 796.5 Implementação na GPU do filtro modal 806.6 Detalhes de implementação 827 Resulta<strong>dos</strong> 847.1 Harmônicos de Variedade 847.2 Análise Harmônica combinada com Modal 878 Conclusão e trabalhos futuros 90Referências Bibliográficas 92


Lista de figuras1.1 Modelo do dinossauro ao som de uma música pop. 141.2 Deformação <strong>dos</strong> modelos tridimensionais sob Análise Harmônica eModal. 142.1 Decomposição e reconstrução de sinais. 202.2 Conversão do domínio de tempo, no domínio de frequências pelaTransformada de Fourier. 202.3 Elementos geométricos para os coeficientes do Laplaciano discreto. 232.4 Deformação de um modelo 3D de acordo com as amplitudes damúsica. 243.1 Referencial local S b e referencial global S o . 253.2 Sistemas de coordenadas alinhado aos eixos de simetria de uma3.3barra ciĺındrica.Movimento <strong>dos</strong> corpos de um modelo de mão.27273.4 Exemplo de sistema de coordenadas numa junta. 283.5 Junta de Revolução: corpo b i em verde, corpo b j em bordô, e ajunta em branco. 293.6 Junta Prismática: corpo b i em verde, corpo b j em bordô, e a juntaem branco. 303.7 Junta Ciĺındrica: corpo b i em verde, corpo b j em bordô, e a juntaem branco. 303.8 Junta Esférica: corpo b i em verde, corpo b j em bordô, e a juntaconsiste em uma esfera na interseção <strong>dos</strong> dois corpos. 313.9 Junta de revolução permitindo rotação apenas no eixo ⃗z. 313.10 Torque e força aplica<strong>dos</strong> em um ponto P de um corpo. 343.11 O vetor posição do ponto P até um i-ésimo ponto do corpo commassa m i e velocidade ⃗v i . 353.12 Torque τ produzido por uma junta de revolução. 363.13 Relação de um ponto Q no referencial S b ao referencial S o . 383.14 O movimento realizado pelo referencial do corpo S b relativo aoreferencial inercial S o . 403.15 Modelo com três corpos conecta<strong>dos</strong> e seus referenciais. 443.16 Força generalizada ˆf sobre o corpo. 453.17 Braço mecânico e um corpo: referenciais S o , S b pertencentes aobraço e referencial S c do corpo. 463.18 Distância das origens do referencial S c ao referencial S b , −Oc. b 473.19 Força resultante ˆf o equivalente ao somatório das forças ˆf i de cadacorpo b i . 474.1 Parte do dedo do modelo da mão se desconectando durante ummovimento. 524.2 Exemplos de Movimentos admissíveis de um laço de 4 e 9 corpos,respectivamente. 54


Animação 3D em Tempo Real com Análises Harmônicas e Modal 94.3 Transformações de velocidade para juntas no laço de 4 corpos. 544.4 Sentido das forças correspondentes a cada junta j i , i ∈ 1, 2, 3. 554.5 Transformações de velocidade forças das juntas para os corpos nolaço de 4 corpos. 574.6 Subespaço de movimentos possíveis de uma junta esférica. 594.7 Subespaço de movimentos possíveis de uma junta de revolução. 594.8 Método SVD. 604.9 Método QR. 604.10 Exemplo de laços modela<strong>dos</strong> com 4, 16 e 8 corpos, respectivamente. 614.11 Sistema de coordenadas locais de corpos e juntas. 624.12 Forças das juntas j k e j k−1 do modelo do cavalo. 634.13À esquerda ilustramos o cavalo em sua posição de equiĺıbrio e àdireita com as patas da frente reposicionadas por um movimentode marcha. 664.14 Ilustração do trigésimo e segundo mo<strong>dos</strong> normais. O trigésimomodo é ilustrado no quadro mais à esquerda, enquanto no quadroà direita podemos ver o segundo modo normal. 674.15 Combinação <strong>dos</strong> mo<strong>dos</strong> 2 e 30 do modelo do Smurf. 674.16 Modo adicional onde o modelo balança a cabeça. 684.17 Na figura 4.17(a) ilustramos o cavalo em uma posição de equiĺıbrio,e na figura 4.17(b) à direita, mostramos a pata oscilando em tornode uma nova posição de equiĺıbrio. 685.1 Destaque a uma junta com mais de dois corpos no modelo do cavalo. 705.2 Combinação <strong>dos</strong> pares de corpos conecta<strong>dos</strong> a uma mesma junta. 705.3 Skinning da malha da mão. 725.4 Renderização do skinning do modelo da mão. 726.1 Filtro de combinações entre as funções de transferência e amplificação.A curva em cinza para a transferência corresponde ao mapeamentodireto de ξ = √ Λ t(ξ) . 746.2 Filtro como a combinação das funções de transferência e de amplificaçãopara os harmônicos do modo normal. 746.3 Galeria inicial do modelo polvo e suas respectivas funções deamplificação e transferência. A frequência do som é ilustrada naparte de baixo na figura. 776.4 Fragment Shader para o filtro <strong>dos</strong> harmônicos da variedade. 816.5 Fragment Shader para o filtro <strong>dos</strong> harmônicos no modal. 837.1 Galeria depois de uma reprodução <strong>dos</strong> itens 1, 4 e 5 da figura 6.3nesta ordem de leitura. 857.2 Visualização de música rock no armadillo. 857.3 Zebra em um único modo de freqüência 0.213596 Hz e amplitude1.5. 877.4 Simulando a deformação do laço sob uma música de forró. 887.5 Modelo do Smurf ao som de MPB. 887.6 Zebra sob a influência de uma música francesa. 88


Notações˙ Derivada em relação ao tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39¨ Segunda derivada em relação ao tempo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42˜s(ξ) Transformada de Fourier de uma função s(t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ξ Frequência de som . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ν Frequência da malha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24⋆ k Estrela de Hodge em k-formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22d k Derivada exterior em k-formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22¯∆ Operador Laplaciano de de-Rham . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22∆ Operador Laplaciano simétrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23H νΛ νAutovetor do operador laplaciano discreto simétrico, associado à frequênciaν . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Autovalor do operador laplaciano discreto simétrico, associado à frequênciaν . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23ϕ Filtro de amplificação das harmônicas da malha . . . . . . . . . . . . . . . . . . . . . . . . . . . 24a Função de amplificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24t Função de transferência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Φ Operador de mapeamento entre as frequências do som e do modelo 3D . . . . 73β ij Ângulos opostos a aresta formada pelos vértices i e j da malha. . . . . . . . . . . . 22b i Corpo b i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25j k Junta j k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32S b Referencial S relativo ao corpo b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25x, y, z Eixos coordena<strong>dos</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26θ x , θ y , θ z Ângulos de rotação em torno <strong>dos</strong> eixos x, y, z, respectivamente . . . . . . . . . . . 26P, Q, . . . V Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31P o bPonto P do corpo b em coordenadas do referencial S o . . . . . . . . . . . . . . . . . . . . . 31O b Origem do referencial S b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Ω o bMatriz de rotação do referencial S b relativo ao referencial S o . . . . . . . . . . . . . . 38⃗v Vetor v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28


Animação 3D em Tempo Real com Análises Harmônicas e Modal 11χ a bTransformação do referencial S b ao referencial S a . . . . . . . . . . . . . . . 31χ ∗ Definição da transformação χ para vetores . . . . . . . . . . . . . . . . . . . . . 37n b Número de corpos do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32n j Número de juntas do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32nr i Número de restrições impostas por uma junta j i . . . . . . . . . . . . . . . 32n t Número de restrições total do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . 32F j+iConjunto das juntas que contém o corpo b i como sucessor . . . . . . 55F j−iConjunto das juntas que contém o corpo b i como antecessor . . . . 55m Massa de um corpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26k Coeficiente de rigidez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63J Matriz de momento de inércia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26J ij Componente ij da matriz momento de inércia J . . . . . . . . . . . . . . . 26p Momento linear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33f Força linear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33τ Torque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33L Momento angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33L P Momento angular em um ponto P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33v Velocidade linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40ω Velocidade angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39ω× Tensor velocidade angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39α Aceleração angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42C Centro de massa de corpo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ˆp Posição generalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26ˆf Força generalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36cˆf Força de amortecimento em coordenadas generalizadas . . . . . . . . . 57ˆv Velocidade generalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40ˆv c ab Velocidade do corpo b relativa ao corpo a em coordenadas de S c 44Γ f Matriz de restrição de força associada a junta . . . . . . . . . . . . . . . . . . 55Γ m Matriz de restrição de movimento associada a junta . . . . . . . . . . . . 30Ad χ Matriz adjunta associada a transformação χ . . . . . . . . . . . . . . . . . . . 43Ad −1χ Inversa da matriz adjunta associada a transformação χ. . . . . . . . . 43G Matriz de restrição de velocidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53R Matriz de restrição de forças . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56N Matriz geradora do espaço nulo de G . . . . . . . . . . . . . . . . . . . . . . . . . . 58


Animação 3D em Tempo Real com Análises Harmônicas e Modal 12C Matriz de coeficientes de amortecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57M Matriz de massa projetada no espaço nulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 64K Matriz de rigidez projetada no espaço nulo . . . . . . . . . . . . . . . . . . . . . . . . . . 64U Matriz de autovetores do problema M −1 K . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64u i Autovetor associado ao modo normal i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64λ i Autovalor associado ao modo normal i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65η Vetor de autovetores projeta<strong>dos</strong> no espaço nulo. . . . . . . . . . . . . . . . . . . . . . 64ν Vetor de frequências naturais no modelo 3D . . . . . . . . . . . . . . . . . . . . . . . . . 65µ Vetor de amplitudes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65γ Vetor de fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65M b Matriz de transformação do corpo b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71δb i Peso do vértice v i associado ao skinning do corpo b . . . . . . . . . . . . . . . . . . 71˜xỹ˜z Textura contendo as amplitudes harmônicas da malha . . . . . . . . . . . . . . . 79d xyz Textura contendo as soma das amplitudes harmônicas da malha . . . . . 79H k Textura contendo os autovetores do laplaciano discreto . . . . . . . . . . . . . . 79φ Textura 1D contendo as frequências do som, as funções de transferênciae de amplificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80


1IntroduçãoAinda hoje a animação de caracteres tridimensionais é um processo manual.Aplicações como jogos de computadores, capturas para filme, requeremincessante intervenções do artista, que guia praticamente a cada passo os movimentos.Isso motiva o desenvolvimento de méto<strong>dos</strong> que automatizem o processode criação da animação, visando deixar apenas as tarefas de naturezaestética para o artista. Esses méto<strong>dos</strong> automáticos usam essencialmente simulaçãofísica ou evolução geométrica.Do lado físico, muito tem sido feito no sentido de simular movimentose comportamentos naturais de animais. Observa-se que estes comportamentosnaturais, como andar, pular ou nadar, dependem intrinsecamente da morfologiado animal, isto é, da estrutura musculoesquelética do animal. Tipicamentemodela-se a dinâmica destes modelos com corpos rígi<strong>dos</strong> conecta<strong>dos</strong> por juntaselásticas. Levando em conta que cada corpo possui seis graus de liberdade parase movimentar, a simulação do modelo completo pode ser um trabalho bastantedelicado. As juntas, por sua vez, podem reduzir o grau de liberdade <strong>dos</strong> corposadicionando restrições ao sistema. Mesmo assim, dependendo do modelo podeser preciso lidar ainda com centenas de graus de liberdade simultaneamente.Assim como nos animais reais, as informações como massa, tensões <strong>dos</strong>músculos e posições de equilíbrio, afetam drasticamente o movimento <strong>dos</strong>animais. Essas informações podem ser modeladas por meio das massas <strong>dos</strong>corpos rígi<strong>dos</strong> e da rigidez das juntas.Para tratar de forma eficiente essa complexidade, a Análise Modal éuma poderosa ferramenta para a compreensão das estruturas mecânicas <strong>dos</strong>modelos. Ela calcula os mo<strong>dos</strong> próprios de vibração nos quais cada corpo <strong>dos</strong>istema oscila livremente em torno de sua posição de equilíbrio. O padrão devibração obtido é denominado modo normal. O uso da Análise Modal em umsistema multicorpos pode prover uma base de movimentos bastantes relevantes<strong>dos</strong> modelos (18).Do lado geométrico, Lévy e Vallet (29) propuseram um método de ediçãode modelos 3D com análise harmônica. Usamos esse método para animação


Animação 3D em Tempo Real com Análises Harmônicas e Modal 14em tempo real de modelos 3D usando as frequências de sinais de som (20).O mapeamento das frequências <strong>dos</strong> sinais de som são feitas diretamente nasharmônicas da malha gerando animações por sucessão de deformações (figura1.1). Porém, como o mapeamento é direto nas harmônicas da malha podeocorrer eventualmente algumas distorções indesejadas durante a animação.Figura 1.1: Modelo do dinossauro ao som de uma música pop.A motivação deste trabalho surgiu <strong>dos</strong> dois trabalhos descritos acima(18) e (20). O objetivo é gerar deformações de modelos tridimensionais sob ainfluência das frequências de uma música, usando Análises Harmônica e Modal.Nessas animações guiadas por música, as frequências da música são usadas paradefinir os harmônicos ou os mo<strong>dos</strong> normais. Em particular no caso modal,esperamos obter os movimentos padrões que simulam os comportamentosreais <strong>dos</strong> modelos porém com influência das amplitudes correspondentes asfrequências do sinal de som. (Figura 1.2).Figura 1.2: Deformação <strong>dos</strong> modelos tridimensionais sob Análise Harmônica eModal.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 15Trabalhos relaciona<strong>dos</strong>Animação de modelos articula<strong>dos</strong>. O estudo da dinâmica e cinemática decorpos já vem sendo estudada há bastante tempo. Os pioneiros na simulaçãode modelos articula<strong>dos</strong> 3D, Isaacs e Cohen (17) descrevem um método de simulaçãorestrita baseado em formulação matricial, onde as juntas <strong>dos</strong> modeloscorrespondem a restrições cinemáticas. Era possível ainda adicionar forças ouacelerações aos corpos do modelo. A partir daí surgiram rapidamente novostrabalhos como os de Barzel e Barr (5), Witkin e Kass (30), que estenderamas animações baseadas em restrições dinâmicas.A introdução de restrições ao sistema, incorporou à animação uma novamodalidade, onde os modelos podem então ter movimentos próprios, e não ficarlimitado às equações diferenciais livres. Com isso, houve o fortalecimento daanimação comportamental, representando uma forma muito mais natural deanimar os modelos. Vários trabalhos usando controladores de locomoção temsido propostos para animar diversos tipos de animais, tais como peixes (11),pássaros (31), e principalmente humanos (27), (16), (15), (12). Estes trabalhosdefinem controladores cinemáticos que regem os movimentos possíveis. Eleseram usa<strong>dos</strong> através das restrições cinemáticas e funções de comportamentopré-definidas.Porém, gerar animações com controladores de locomoção requer lidarcom muitos graus de liberdade simultaneamente. Uma solução é utilizar da<strong>dos</strong>conheci<strong>dos</strong> previamente afim de guiar os resulta<strong>dos</strong> ou mesmo a partir de umnúmero pequeno de controladores usar aprendizagem de padrões para obterum movimento específico (11).McGerr (22) descreveu um método para controlar movimentos robóticoslevando em conta movimentos passivos, ao invés de usar controles ativos quegeram torques nas juntas. Este trabalho acabou formalizando o termo dinâmicapassiva.Análise Modal para animação. Outra abordagem para a modelagem dadinâmica <strong>dos</strong> animais consiste em usar Análise Modal em modelos simplifica<strong>dos</strong>de esqueletos para identificar um conjunto de movimentos naturais relevantespara a locomoção <strong>dos</strong> modelos (18). Este método utiliza apenas informaçõesbiomecânicas do modelo e é descrito no capítulo 3 dessa tese.A Análise Modal também é amplamente utilizada para outros tiposde animações de modelos tridimensionais. Assim, Pentland e Williams (25)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 16foram os primeiros a usar Análise Modal para a deformação de modelostridimensionais.Ainda na área de deformações de modelos tridimensionais, Yinghui et al.(32) usaram uma abordagem para simulação de modelos deformáveis em temporeal também utilizando Análise Modal, porém com apenas alguns poucosmo<strong>dos</strong> vibracionais.Análise Harmônica para deformação. Taubin (28), desenvolveu um métodopara estender o conceito de filtro passa-baixa em malhas com o intuito deresolver problemas de discretização e suavização de superfícies de topologiaarbitrária, dando início a equivalentes da filtragem de Fourier em modelostridimensionais discretiza<strong>dos</strong>.Entre os muitos trabalhos que estenderam essas técnicas de AnáliseHarmônica, destacamos o trabalho de Vallet e Lévy (29), onde foi propostauma generalização da Transformada de Fourier para superfícies discretas,formalizando então o termo de Harmônicos de Variedades.Usamos do conceito de Harmônicos de Variedades para desenvolverum método de deformação de modelos tridimensionais a partir da AnáliseHarmônica de sinais de som de entrada (20). A ideia é estabelecer umacorrespondência entre frequências de som nas harmônicas da malha, tal queas deformações do modelo tridimensional tenham a influência das amplitudescorrespondentes às frequências do som.Usando ainda Análise Harmônica, O’Brien et al. (24), desenvolveramum método para criar sons realísticos a partir das frequências obtidas dasdeformações de modelos tridimensionais.ContribuiçõesEste trabalho pretende contribuir com duas formas de animação:animação guiada por música em tempo real usando Harmônicos de Variedadee Análise Modal. Em particular, geramos animações nos modelos sob ainfluência das frequências da música.Na primeira abordagem, geramos deformações de malhas tridimensionaisusando o conceito de Harmônicos de Variedades. Neste método obtivemosas frequências harmônicas da malha pelo operador Laplaciano discreto. Asposições <strong>dos</strong> vértices são escritas como combinações lineares destes harmônicos.Usando a Transformada de Fourier para obter as amplitudes associadasas frequências de um sinal de som de entrada, fazemos os mapeamentos das


Animação 3D em Tempo Real com Análises Harmônicas e Modal 17frequências por meio de um filtro para os harmônicos mais baixos da malha.Para a edição <strong>dos</strong> filtros foi criada uma galeria dinâmica, onde a escolha<strong>dos</strong> mapeamentos geram novam galerias usando algoritmos genéticos. Essasgalerias conseguem mostrar o resultado da animação em tempo real graçasa nossa implementação em GPU. A decodificação do sinal de som, e o préprocessamento<strong>dos</strong> cálculos <strong>dos</strong> harmônicos da malha são feitos em CPU, e aGPU recalcula e renderiza as novas posições <strong>dos</strong> vértices.A segunda abordagem foi combinar o uso da Análise Harmônica com aAnálise Modal. Em modelos articula<strong>dos</strong>, simula<strong>dos</strong> por sistemas massa-molacom restrições usamos a Análise Modal para obter os mo<strong>dos</strong> normais e asfrequências naturais que regem o comportamento <strong>dos</strong> corpos do esqueleto,seguindo o trabalho de Kry et al. (18).Usando a Análise de Fourier, obtemos as amplitudes harmônicas associadasas frequências de um sinal de som. Com o auxílio de um filtro fazemos omapeamento das frequências de forma que as amplitudes harmônicas do somse tornem os coeficientes das combinações <strong>dos</strong> mo<strong>dos</strong> normais obti<strong>dos</strong>. Assimas frequências do som influenciam os movimentos <strong>dos</strong> corpos. Outra contribuiçãonesta abordagem foi a incorporação <strong>dos</strong> mo<strong>dos</strong> normais amplifica<strong>dos</strong>pela frequência do som em nosso skinning.Também neste método usamos a GPU para a criação de uma galeriaanimada exibindo os mo<strong>dos</strong> de vibração obti<strong>dos</strong>. Como o número de mo<strong>dos</strong>normais que são convenientes a aplicação é relativamente pequeno, o préprocessamento<strong>dos</strong> mo<strong>dos</strong> normais, assim como a decodificação do sinal desom foram efetua<strong>dos</strong> na CPU. O cálculo das novas posições <strong>dos</strong> vértices e <strong>dos</strong>corpos do esqueleto e a renderização é feita na GPU.Resumindo, este trabalho conta com três contribuições principais:– Geração de animações com harmônicos de variedade de modelos 3D emtempo real na GPU;– Incorporação <strong>dos</strong> mo<strong>dos</strong> normais amplifica<strong>dos</strong> com influência da músicano skinning;– Geração de animações com análise modal em modelos articula<strong>dos</strong> 3Dem tempo real na GPU.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 18SumárioNeste trabalho usamos Análise Harmônica e Análise Modal para obterdeformações em modelos tridimensionais. Assim, a tese encontra-se estruturadada seguinte forma:Capítulo 2: Animação com Harmônicos de Variedade. Nestecapítulo descrevemos a primeira abordagem de animação que adotamos. Inicialmentelembramos conceitos básicos sobre a Transformada de Fourier, para aseguir introduzir o conceito de Harmônicos de Variedade. Prosseguimos com ométodo que utilizamos para visualização de música.Capítulo 3: Corpos articula<strong>dos</strong>. Neste capítulo descrevemos sobrepropriedades elementares de multicorpos articula<strong>dos</strong>. Introduzimos os conceitosde corpo rígido e juntas, e as ferramentas básicas que regem os movimentosdestes.Capítulo 4: Dinâmica de corpos articula<strong>dos</strong>. Aqui descrevemos asleis que regem a dinâmica de corpos articula<strong>dos</strong>; primeiro movimentos livres edepois sujeito à restrições. Observamos a necessidade de transformações especiaisentre referenciais locais para quantidades como velocidade e força. Terminamosexpondo sobre Análise Modal, e como obter o espaço de movimentosadmissíveis pelas juntas.Capítulo 5: Animação com Análise Modal. Neste capítulo descrevemoscomo é feita a visualização de música através da dinâmica de multicorposarticula<strong>dos</strong>. Além disso, relatamos a abordagem adotada para o caso de esqueletoscom ramificações. E para finalizar, concluímos detalhando como éconstruído o skinning a partir da Análise Modal <strong>dos</strong> corpos.Capítulo 6: Detalhes de implementação. Na primeira seção, detalhamoscomo é feito o mapeamento entre as frequências da música e da malhaem ambos os méto<strong>dos</strong>. A seguir descrevemos como a galeria foi implementadae ressaltamos alguns efeitos adicionais de implementação. Finalmente, detalhamoscomo implementamos as galerias em tempo real, e fechamos o capítulodescrevendo as ferramentas utilizadas para a implementação deste trabalho.Capítulo 7: Resulta<strong>dos</strong>. Neste capítulo apresentamos resulta<strong>dos</strong> obti<strong>dos</strong>nos dois méto<strong>dos</strong> de animação propostos neste trabalho. Fazemos comparaçõesentre o processamento na CPU e na GPU, validando o uso da GPUpara fazer a sincronização da animação com a música em ambos os méto<strong>dos</strong>.Por fim ilustramos alguns resulta<strong>dos</strong> obti<strong>dos</strong> da animação <strong>dos</strong> modelos guia<strong>dos</strong>por música.


2Animação com Harmônicos de VariedadeHoje em dia, podemos encontrar vários méto<strong>dos</strong> de visualização demúsica, porém muito poucos relacionam a música à deformações (ou atémovimentos rígi<strong>dos</strong>) de modelos tridimensionais. Neste capítulo introduzimosas ferramentas necessárias para correlacionar as deformações de uma malhaàs frequências da música. O passo inicial para representar uma deformação nodomínio da frequência é a Transformada de Fourier.2.1Transformada de FourierA Transformada de Fourier contínua expressa uma função real integráveldefinida no domínio do tempo s(t) como uma função definida no domínio defrequências ˜s(ξ), pela fórmula:˜s(ξ) = ∫ Rs(t)e −2πiξt dt, (2-1)Ela decompõe a função s(t) na base das funções exponenciais complexase −2πiξt , que chamamos de harmônicas. A Transformada de Fourier é umoperador linear inversível. A transformada inversa, isto é, a transformada queleva funções definidas no domínio da frequência de volta em funções definidasno domínio do tempo, é dada pela fórmula:s(t) = ∫ R˜s(−ξ)e 2πiξt dt, (2-2)De forma similar ao modo como pontos são descritos no espaço Euclidianocomo combinação linear de vetores de uma base, a Transformada de Fourierdescreve uma onda como combinação linear das harmônicas. A figura 2.1 ilustraa decomposição de um sinal em suas respectivas bases harmônicas.De forma análoga, podemos definir uma Transformada de Fourier parafunções definidas num intervalo fechado e limitado da reta. Estamos interessa<strong>dos</strong>em funções periódicas cuja transformada pode ser adequadamente representadapor uma expressão mais simples que a equação (2-1). Para tais funçõesa Transformada de Fourier se representa como um vetor no R ∞ , no qual cadaentrada corresponde a uma frequência. Seja ξ ∈ N ⋃{0} uma frequência. A ξ-


Animação 3D em Tempo Real com Análises Harmônicas e Modal 20Figura 2.1: Decomposição e reconstrução de sinais.ésima entrada da Transformada de Fourier da função s(t), definida no intervalo[0, 1] da reta por simplicidade, se escreve como:˜s(ξ) = ∫01s(t)e −2πiξt dt. (2-3)A fórmula da transformada inversa se escreve, neste caso:s(t) =+∞∑ξ=0˜s(ξ)e 2πiξt dt (2-4)Considere, por exemplo, um sinal de som como a função de entradaperiódica s(t), exibida na figura 2.2. O som pode ser representado comouma função do tempo, que a cada t ∈ R associa uma amplitude s(t) ∈ R.A Transformada de Fourier aplicada a função de som s(t) nos diz quanto decada frequência está presente no som.Muitas vezes os harmônicos são representa<strong>dos</strong> como:H ξ (t) = e 2πiξt . (2-5)Usando a equação (2-5), podemos reescrever a equação (2-3) na forma ˜s(ξ) =Figura 2.2: Conversão do domínio de tempo, no domínio de frequências pelaTransformada de Fourier.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 21⟨s, H ξ ⟩, onde ⟨⋅, ⋅⟩ denota o produto interno no espaço das funções periódicas.Nestas condições, as funções H ξ são chamadas de harmônicos do círculo. Elassão uma base ortonormal para as funções periódicas do intervalo [0, 1] (ocírculo), pois satisfazem: ⟨H ξ , H ξ ⟩ = 1, ⟨H l , H m ⟩ = 0 para l ≠ m e, como é bemconhecido, qualquer função periódica do [0, 1] se representa como combinaçãolinear das H ξ (série de Fourier). Na próxima seção discutiremos como essasnoções se generalizam em malhas.2.2Harmônicos de VariedadesNesta seção faremos a construção <strong>dos</strong> Harmônicos de Variedade seguindoVallet e Lévy(29). Esta construção depende de resulta<strong>dos</strong> de cálculo exteriordiscreto que, por brevidade, apenas enunciaremos. Maiores detalhes podem serencontra<strong>dos</strong> nas referências Desbrun et al. (8) e Arnold et al. (4).Usando as propriedades da Transformada de Fourier no círculo, enunciadasna seção 2.1, observamos que podemos sempre representar uma funçãoperiódica como combinação linear (superposição) <strong>dos</strong> harmônicos do círculo;explicitando assim a natureza da função considerada no que diz respeito asfrequências que ela contém.Infelizmente, não é conhecido processo capaz de adaptar a Transformadade Fourier diretamente para variedades gerais, ou malhas (que é o que nosinteressa). Contudo, é conhecido que pode-se chegar aos harmônicos do círculode maneiras distintas da Transformada de Fourier, e justamente é uma destasconstruções alternativas que se adapta bem a construção de harmônicos demalhas. A observação crucial é que os harmônicos do círculo satisfazem aseguinte igualdade:− d2dx H ξ(x) = ξ 2 H 2 ξ (x), (2-6)ou seja, eles são autofunções (autovetores) do operador Laplaciano no círculo.Da teoria de operadores lineares auto-adjuntos, sabemos que tais autovetoresdevem formar uma base ortonormal do espaço em questão (23). Além disso,os autovetores do operador Laplaciano fornecem, naturalmente, a informaçãode quanto uma função “está variando”. Estes, os autovetores, do operador Laplacianosão os candidatos naturais a substitutos para malhas <strong>dos</strong> harmônicosdo círculo. É preciso, primeiro, construir um produto interno e, a partir deste,um operador Laplaciano generalizado que seja adequado para malhas. Nesteponto faz-se uso do cálculo exterior discreto.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 222.2.1Base Harmônica para variedades discretasUma malha pode ser mais formalmente definida como um complexosimplicial, o que faremos a seguir. Um k-simplexo que chamaremos de s k édefinido como o fecho convexo de k + 1 pontos no R m , para m ≥ k + 1. Porexemplo: os simplexos de ordem 0, 1 e 2 são respectivamente: pontos, arestase triângulos. Para nossos fins, estes serão os únicos simplexos considera<strong>dos</strong>.Definimos uma malha como um complexo simplicial bidimensional S, isto é,uma coleção de n k k-simplexos, com k ∈ 0, 1, 2 com condições que a tornemuma variedade topológica (no sentido usual). Uma k-forma discreta em S, quedenotaremos por ψ k , é definida pela atribuição de um valor real ψ k (s k ) a cadasimplexo k-dimensional orientado. O conjunto das formas lineares alternadasdiscretas de grau k em S, é definido como Ψ k (S). Atribuindo uma numeraçãoadequada aos k simplexos, qualquer k-forma ψ k pode ser representada comoum vetor no R n k . Analogamente qualquer operador de Ψk (S) para Ψ l (S) podeser representado como uma matriz de dimensão n k × n l .Podemos definir em Ψ k (S) uma estrutura de produto interno usando aestrela de Hodge, ⋆ k . O produto interno se escreve, para ψ k 1 , ψk 2 ∈ Ψk (S) como:⟨ψ k 1, ψ k 2⟩ = (ψ k 1) T ⋆ k (ψ k 2). (2-7)A derivada exterior d k ∶ Ψ k (S) → Ψ k+1 (S) é definida pela matriz deadjacência com sinal (d k ) sk ,s k+1= ±1 se s k pertence a fronteira de s k+1 e o sinaldepende das orientações.A estrela de Hodge se representa como uma matriz diagonal cujoselementos são: ∣s ∗ K ∣/∣s K∣ onde s ∗ K é o dual circuncêntrico do simplexo s k e ∣ ⋅ ∣ éo volume do simplexo. Em particular, precisaremos da estrela de Hodge paravértices e arestas. Concretamente, temos para o i-ésimo vértice e a aresta ij:(⋆ 0 ) ii = ∣s ∗ i ∣ = area i , (⋆ 1 ) ee = ∣ij∗ ∣∣ij∣= cot(β ij ) + cot(β ′ ij); (2-8)Explicitamente, na equação (2-8), area i é área da região de Voronoi restritaao vértice i, e β ij e β ′ ij correspondem aos ângulos em oposição a aresta entreos vértices i e j. (Veja a figura 2.3).Podemos então definir para as 0-formas da malha (que são, na linguagemde formas, o análogo das funções escalares) o Laplaciano de de-Rham:¯∆ = − ⋆ 0 d T 1 ⋆ 1 d 0 ; (2-9)onde seus coeficientes são:


Animação 3D em Tempo Real com Análises Harmônicas e Modal 23Figura 2.3: Elementos geométricos para os coeficientes do Laplaciano discreto.¯∆ ij = cot(β ij) + cot(βij ′ ), ¯∆ii = ∑ ¯∆ ij , (2-10)area ije zero, se os vértices i e j não são adjacentes.Isto implica que seus autovetores não mais são ortonormais, o que criadificuldades, veja (29). Para recuperar a simetria, Vallet e Levy (29) sugeremescolher uma base de 0-formas, tal que, se φ i é um vetor desta base então aequação (2-7) nos dá:⟨φ i , φ i ⟩ = (φ i ) T ⋆ 0 (φ i ) = 1. (2-11)Esta condição é satisfeita se escolhemos φ i = ⋆ −1/20e i , onde e i é um <strong>dos</strong>vetores da base canônica: é igual a um no vértice i e zero nos demais. Podemossempre calcular ⋆ −1/20pois ⋆ 0 é uma matriz diagonal com entradas positivas,veja equação (2-8a). Reescrevendo o operador Laplaciano discreto definido naequação (2-9) na base de 0-formas que satisfaz a equação (2-11), obtêm-se ooperador Laplaciano discreto simétrico, que se escreve:∆ = ⋆ −1/20¯∆⋆ −1/20, ∆ ij = cot(β ij) + cot(βij ′√ ), ∆ ii = ∑ ∆ ij , (2-12)areai ⋅ area je zero, se os vértices i e j não são adjacentes.Sendo um operador simétrico, o Laplaciano (2-12), possui uma basecompleta de autovetores ortonormais, que denotamos por H ν : os harmônicosde variedade.j2.3Transformações harmônicas em variedadesAo reescalonar a área da região de Voronoi de um vértice i pela áreado vértice adjacente, fazemos com que o operador Laplaciano discreto (2-10)se torne simétrico (2-12), e assim podemos obter uma base de autovetoresortonormais H ν ∈ R n associa<strong>dos</strong> a autovalores Λ ν ∈ R .


Animação 3D em Tempo Real com Análises Harmônicas e Modal 24Podemos assumir que os autovalores estão ordena<strong>dos</strong> de modo crescenteΛ 0 ≤ Λ 1 ≤ . . . Λ n−1 . Usando analogia com a Análise de Fourier, a frequência νassociada ao autovetor H ν é dada por √ Λ ν .Note que os autovetores consistem em uma base ortonormal do R n , eportanto podemos decompor qualquer função F ∶ i ∈ {0, 1, . . . n − 1} ↦ Rdefinida sobre os vértices da malha em:comF (i) =n−1∑ν=0˜F (ν)H ν , (2-13)n−1˜F (ν) = ∑ F (i)H ν . (2-14)i=0A função F (i) então é expressa como uma combinação linear deharmônicos H ν com respectivas amplitudes ˜F (ν). Podemos amplificar taisharmônicos através de um filtro ϕ(ν), de tal forma que teremos então o sinalfiltrado:n−1F ϕ (i) = ∑ ϕ(ν) ˜F (ν)H ν . (2-15)ν=0Ora, como nosso interesse está em deformar a malha, podemos tomarnossa função F como as funções de coordenadas x(i), y(i) e z(i) do vértice i.Iremos filtrar as três coordenadas pelo mesmo fator de filtro ϕ.Uma vez que as altas frequências correspondem a pequenas perturbações,aparentando como ruí<strong>dos</strong>, iremos apenas filtrar as #ν frequências mais baixas:F ϕ (i) =#ν−1∑ ϕ(ν) ˜F (ν)H ν + d i , onde d i =ν=0n−1∑ν=#ν˜F (ν)H ν . (2-16)Figura 2.4: Deformação de um modelo 3D de acordo com as amplitudes damúsica.Na figura 2.4 vemos um resultado das deformações obtidas sob a influênciadas freqüências de uma música.


3Corpos articula<strong>dos</strong>As deformações produzidas pelo método de Harmônicos em Variedade,contudo, não necessariamente correspondem a movimentos naturais do modelo:por exemplo as animações não preservam volume. Neste capítulo, introduzimosconceitos básicos de corpos articula<strong>dos</strong>, que serão usa<strong>dos</strong> em capítulos posterioresna construção de um método apto a produzir deformações compatíveiscom os movimentos espera<strong>dos</strong> <strong>dos</strong> modelos.3.1Corpos rígi<strong>dos</strong>Um corpo rígido consiste em uma coleção de partículas tais que adistância entre duas permanece constante independente de quaisquer movimentodo corpo ou força externa exercida nele.A análise da configuração espacial do corpo é feita a partir de umsistema de coordenadas S b , referenciado ao centro de massa do corpo b . Aeste sistema de coordenadas chamamos referencial do corpo. Dado um sistemade coordenadas global, chamado de referencial inercial S o , a posição do corpoé definida pelo vetor posição da origem do referencial inercial S o à origem deS b . De forma análoga, a orientação do corpo consiste na rotação relativa aoreferencial inercial S o . Esta configuração está ilustrada na Figura 3.1.Figura 3.1: Referencial local S b e referencial global S o .


Animação 3D em Tempo Real com Análises Harmônicas e Modal 26O movimento livre de um corpo rígido possui três componentes translacionais(x, y, z) e mais três componentes rotacionais (θ x , θ y , θ z ), que definemsua orientação. Para simplificar, usaremos uma única representação vetorialpara definir ambas: posição e orientação do corpo rígido. Chamaremos estarepresentação de posição generalizada do corpo rígido, ˆp.⎡ ⎤θ xθ yˆp =θ x. (3-1)xy⎢ z⎥⎣ ⎦O corpo rígido possui uma massa m e uma matriz de momentos de inérciaassociada, J. Faremos a seguir uma exposição sucinta das propriedades queusaremos do momento de inércia, mais pode ser encontrado nos livros de Beer(6) e Featherstone (9). Ambas, massa e momento de inércia, são grandezasaditivas. Usamos este fato para simplificar o cálculo do momento de inércia,sintetizando o corpo rígido a partir de uma coleção de subcorpos (mais simples)que o constituem. Dado um referencial e um eixo de rotação que passa pelaorigem deste referencial (e é arbitrário em qualquer outro aspecto), a matrizde momento de inércia do corpo rígido é definida como:onde (quando N → ∞ as somas viram integrais):⎡⎤ J xx J xy J xz ⎥⎥⎥⎥⎥⎥⎥⎦ J =J xy J yy J yz , (3-2)⎢ J⎣ xz J xy J zzJ xx = ∑N m k (yk 2 + z2 k ),k=1J yy = ∑N m k (x 2 k + z2 k ),k=1J xy = − ∑N m k x k y k ,k=1J xz = − ∑N m k x k z k ,k=1(3-3)J zz = ∑N m k (x 2 k + y2 k ), J yz = − ∑N m k y k z k .k=1k=1A notação J ij , i, j ∈ {x, y, z} representa o momento de inércia sobre oeixo j, enquanto o corpo gira em torno do eixo i. Os escalares J ij , i ≠ j, sãochama<strong>dos</strong> de produtos de inércia. Como a matriz de momento de inércia é reale simétrica, então, fixado O b como origem, pode-se determinar um sistema decoordenadas para qual a matriz momento de inércia será diagonal, isto é, osprodutos de inércia são iguais a zero. Os eixos deste sistema de coordenadassão chama<strong>dos</strong> de eixos principais de inércia e os elementos da diagonal sãochama<strong>dos</strong> de momentos principais de inércia.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 27Figura 3.2: Sistemas de coordenadas alinhado aos eixos de simetria de umabarra cilíndrica.Caso o objeto apresente alguma simetria, os eixos de inércia estãosempre alinha<strong>dos</strong> com os eixos de simetria do objeto (6), (26). Portanto, parasimplificar os cálculos e obter a matriz de inércia, usualmente os eixos doreferencial do corpo são alinha<strong>dos</strong> com os eixos principais de inércia.Os corpos rígi<strong>dos</strong> neste trabalho são modela<strong>dos</strong> por barras cilíndricas, edesta forma, podemos tomar um eixo do sistema de coordenadas local como ageratriz do cilindro, veja a figura 3.2.3.2Juntas elásticasPares de corpos rígi<strong>dos</strong> de um sistema multicorpos podem ser articula<strong>dos</strong>por meio de elementos mecânicos que chamamos de juntas. Esses elementosdefinem o movimento relativo <strong>dos</strong> corpos, podendo eventualmente reduzir ograu de liberdade do movimento. A figura 3.3 exibe um exemplo de movimentopermitido para um modelo de mão.Por vezes, as juntas são modeladas como molas, formando um sistemamassa-mola amortecido com restrições, possuindo uma constante de rigidez euma constante de amortecimento. Neste trabalho adotamos este tipo de juntase as denominamos de juntas elásticas.Figura 3.3: Movimento <strong>dos</strong> corpos de um modelo de mão.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 283.2.1Referencial da juntaAssim como aos corpos rígi<strong>dos</strong>, atribuímos um sistema de coordenadaslocais ao centroide das juntas virtuais. Fixamos nossa atenção em juntas queconectam pares de corpos rígi<strong>dos</strong> cilíndricos. Definimos a posição do centroidede uma junta que conecta um par de corpos cilíndricos como o ponto deintersecção das geratrizes de cada corpo. Ainda, definimos um sistema decoordenadas sobre a tal junta escolhendo: primeiro, um vetor unitário sobreuma das duas geratrizes (esta escolha é arbitrária); segundo, o vetor unitárioque resulta do produto vetorial das duas geratrizes e, por fim, tomando oproduto vetorial <strong>dos</strong> dois vetores unitários obti<strong>dos</strong> anteriormente. Um exemplodesta construção está ilustrado na figura 3.4.Figura 3.4: Exemplo de sistema de coordenadas numa junta.3.2.2Restrição de movimentosAs juntas restringem os movimentos admissíveis <strong>dos</strong> corpos a elas conecta<strong>dos</strong>.O tipo de movimento permitido pela restrição depende do tipo dajunta.Relatamos abaixo algumas das principais juntas da literatura, citamoso livro do Shabana (26) para mais informações. Para elas adote as seguintesnotações: ⃗ h i é um vetor desenhado no corpo b i ao longo do eixo da junta,analogamente para ⃗ h j ; ⃗s ij corresponde o vetor definido pelos pontos P i e P jnos corpos b i e b j , respectivamente; ⃗n i e ⃗n j são dois vetores perpendicularesentre si saindo <strong>dos</strong> corpos b i e b j , respectivamente; finalmente, ⃗r i e ⃗r j sãovetores tridimensionais que representam as posições <strong>dos</strong> pontos P i e P jrespectivos referenciais <strong>dos</strong> corpos.nos


Animação 3D em Tempo Real com Análises Harmônicas e Modal 29• Junta de Revolução: É uma junta de um grau de liberdade. Elarestringe as três componentes translacionais, e duass rotacionais, permitindoque os corpos rotacionem apenas em torno da normal do plano queos contém. Está ilustrada na figura 3.5.As restrições que a caracteriza são⃗h i × ⃗ h j = 0,⃗h i × ⃗s ij = 0,⃗s T ij ⋅ ⃗s ij = 0.Figura 3.5: Junta de Revolução: corpo b i em verde, corpo b j em bordô, e ajunta em branco.• Junta Prismática: Também é uma junta com um único grau deliberdade. Porém, neste caso o único movimento permitido é a translaçãoao longo do eixo da junta, veja na figura 3.6. As restrições cinemáticasimpostas são:⃗h i × ⃗ h j = 0,⃗h i × ⃗s ij = 0,⃗n T i ⋅ ⃗n j = 0.Esta última restrição impõe que ⃗n i e ⃗n jdurante o movimento.permaneçam perpendiculares• Junta Cilíndrica:A junta cilíndrica possui dois graus de liberdade. Ela permite umatranslação e uma rotação relativa entre os corpos sempre ao longo doeixo da junta, restringindo dois graus de liberdade de translação e doisde rotação. Está ilustrada na figura 3.7.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 30Figura 3.6: Junta Prismática: corpo b i em verde, corpo b j em bordô, e a juntaem branco.Podemos descrevê-la a partir das equações cinemáticas:⃗h i × ⃗ h j = 0,⃗h i × ⃗s ij = 0.Figura 3.7: Junta Cilíndrica: corpo b i em verde, corpo b j em bordô, e a juntaem branco.• Junta Esférica:Como o nome já dá a entender, a junta deixa livre as rotações nastrês direções e restringe todas as translações relativas. Desta forma, ajunta esférica tem três graus de liberdade, veja a figura 3.8. As restriçõescinemáticas desta junta podem ser estabelecidas como:⃗r i = ⃗r j .3.2.3Matrizes de restriçãoPodemos reescrever matricialmente as equações de restrição impostaspelas juntas, e para isto, usamos matrizes que chamaremos de matrizes derestrição de movimento das juntas, Γ m. Estas matrizes de restrição são


Animação 3D em Tempo Real com Análises Harmônicas e Modal 31Figura 3.8: Junta Esférica: corpo b i em verde, corpo b j em bordô, e a juntaconsiste em uma esfera na interseção <strong>dos</strong> dois corpos.aplicadas às posições generalizadas <strong>dos</strong> corpos para se obter as coordenadasrestritas (ou seja, aquelas direções que não são permitidas pelas restrições)de cada corpo nestas juntas, anulando as direções livres. Este comportamentoestá ilustrado na figura 3.9: note que o ponto P é comum aos dois corpos.Figura 3.9: Junta de revolução permitindo rotação apenas no eixo ⃗z.Para exemplificar o uso de tais matrizes considere na ilustração 3.9 umajunta de revolução entre dois corpos b i e b j . Observe que o único movimentopermitido é a rotação em torno do eixo z, e as demais são tais que a posiçãodo ponto P de ambos os corpos sejam iguais nas coordenadas do referencialinercial. Isto é, se denotamos Pio como o ponto P do corpo b i em coordenadasdo referencial S o , e analogamente para Pj o, temos:P oi = P o j .Então, sejam P i e P j as coordenadas de P nos referenciais do corpo b ie b j respectivamente. E seja χ o b i∶ S i → S o uma transformação que vai doreferencial de b i para o referencial inercial S o , então:χ o i (P i ) = χ o j(P j )P oi = P o j .(3-4)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 32Além disso, como o único movimento permitido é rotacionar ao redor doeixo z, o movimento se restringe ao plano xy, deixando claro que os ângulosde rotação em torno do eixo x e do eixo y também devem ser iguais.θ xi = θ xj , θ yi = θ yj . (3-5)Isto é, se ˆp k (P ), k ∈ i, j corresponde as coordenadas generalizadas daposição do ponto P no referencial do osso b k , pedimos que:Γ mˆp i (P ) = Γ mˆp j (P )⎡⎤ ⎡ ⎤ ⎡⎤ ⎡ ⎤ 1 0 0 0 0 0θ xi⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦1 0 0 0 0 0θ xj⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦0 1 0 0 0 0θ yi0 1 0 0 0 0θ yj0 0 0 0 0 0θ zi=0 0 0 0 0 0θ zj0 0 0 1 0 0x i0 0 0 1 0 0x j0 0 0 0 1 0y i0 0 0 0 1 0y j⎢0 0 0 0 0 1⎥ ⎢ z ⎣⎦ ⎣ i ⎢0 0 0 0 0 1⎥ ⎢ z⎣⎦ ⎣ j⎡ ⎤ ⎡ ⎤ θ xi⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦θ xj⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦θ yiθ yj0=0.x ix jy iy j⎢ z ⎣ i ⎢ z⎣ j(3-6)A tabela 3.1 descreve exemplos destas matrizes de restrição Γ m . Nela,usamos a notação nr para denotar o número de restrições (impostas por cadajunta).Um <strong>dos</strong> passos básicos da dinâmica e da análise cinemática de sistemasmecânicos consiste em determinar o número de graus de liberdade, ou coordenadasindependentes, necessários para descrever o sistema. Lembrando que omovimento livre de um corpo possui 6 graus de liberdade, e se temos n b corpos,o número total de grau de liberdade do sistema n t é dado por:n t = 6 ∗ n b −n j∑inr i (3-7)onde nr i é o número de restrições impostas pela junta i, i = 1...n j , e n jcorresponde ao número de juntas do sistema.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 33Junta Matriz Junta MatrizRevolução (nr = 5)Esférica (nr = 3)⎡⎤1 0 0 0 0 00 1 0 0 0 00 0 0 0 0 00 0 0 1 0 00 0 0 0 1 0⎢0 0 0 0 0 1⎥⎣⎦⎡⎤0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 1 0 00 0 0 0 1 0⎢0 0 0 0 0 1⎥⎣⎦Prismática (nr = 5)Cilíndrica (nr = 4)⎡⎤1 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 0⎢0 0 0 0 0 0⎥⎣⎦⎡⎤1 0 0 0 0 00 1 0 0 0 00 0 0 0 0 00 0 0 1 0 00 0 0 0 1 0⎢0 0 0 0 0 0⎥⎣⎦Tabela 3.1: Exemplos de matrizes de restrição. As linhas nulas correspondemas componentes sem restrição.3.3ForçasDado um ponto arbitrário O, a força mais geral que pode agir em umcorpo rígido consiste de uma força linear f e um torque τ sobre O, vejailustração na figura 3.10. Conhecido estes fatos, é possível determinar o torquesobre qualquer outro ponto P no espaço através da seguinte equação:τ P = τ O + f × → OP . (3-8)3.3.1Momento Linear e AngularO momento linear p de um corpo rígido, é definido pela soma do produtoentre a massa m i e a velocidade ⃗v i de cada partícula i do corpo, isto é:p =n∑im i ⃗v i (3-9)= m⃗v. (3-10)Considere agora um corpo rígido com massa m, velocidade angular ω ecom o centro de massa em C. Sejam P um ponto arbitrário e ⃗r P o vetor posiçãodo ponto P até um i-ésimo ponto do corpo com massa m i e velocidade ⃗v i , comona figura 3.11. O momento angular,definido por:L, em relação ao ponto arbitrário P é


Animação 3D em Tempo Real com Análises Harmônicas e Modal 34(L P ) i = ⃗r P × m i ⃗v i . (3-11)Podemos relacionar a velocidade do i-ésimo corpo com a velocidade noponto P , usando a velocidade angular ω (3-12):⃗v i = ⃗v P + ω × ⃗r P (3-12)e daí:(L P ) i = ⃗r P × (m i (⃗v P + ω × ⃗r P ))= ⃗r P × (m i ⃗v P ) + ⃗r P × (m i (ω × ⃗r P )).Integrando no sólido todo, teremosL P = (∫ ⃗r P dm) × ⃗v P +m∫ ⃗r P × (ω × ⃗r P )dm. (3-13)mOra, se o momento é calculado nos seguintes pontos:Ponto Fixo O. A velocidade em O é nula, ⃗v O = ⃗0.L O = (∫ m⃗r O dm) × ⃗v O + ∫ m⃗r O × (ω × ⃗r O )dm= ∫ m⃗r O × (ω × ⃗r O )dm.Centro de Massa C. O termo (∫ m⃗r C dm) se anula.Figura 3.10: Torque e força aplica<strong>dos</strong> em um ponto P de um corpo.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 35L C = ∫ ⃗r C × (ω × ⃗r C )dm. (3-14)mEm pontos arbitrários temos a equação (3-13) que pode ser simplificadada seguinte forma:L P = ⃗r P C × (m⃗v C ) + L C . (3-15)Esta equação nos diz que o momento angular sobre um ponto arbitrárioP consiste na soma da quantidade de movimento m⃗v C em relação ao ponto Pcom o momento angular sobre o centro de massa C, L C .Para um corpo de massa m rotacionando sobre um eixo de simetria, omomento angular pode ser relacionado com a matriz de inércia J e a velocidadeangular ω do corpo:L P = Jω. (3-16)3.3.2Força e TorquePela lei de Newton,⃗v if = ∑ m ii dt= ∑ m i ⃗a i = m⃗a.i(3-17)O torque τ é definido pelo produto vetorial entre a força resultante f emuma partícula e o vetor posição ⃗r da mesma em relação ao eixo de rotação. OFigura 3.11: O vetor posição do ponto P até um i-ésimo ponto do corpo commassa m i e velocidade ⃗v i .


Animação 3D em Tempo Real com Análises Harmônicas e Modal 36Figura 3.12: Torque τ produzido por uma junta de revolução.torque exercido por um corpo sobre uma junta de revolução está ilustrado nafigura 3.12.τ = ⃗r × f. (3-18)Podemos definir o torque também como a variação do momento angularsobre um eixo de rotação. Para verificar a equivalência entre as duas definiçõesbasta calcular:τ = dLdt=d(⃗r × (m⃗v))dt= d⃗rd(m⃗v)× (m⃗v) + ⃗r ×dt dt(3-19)(3-20)= ⃗r × (m d(⃗v) ) = ⃗r × (m⃗a) = ⃗r × f. (3-21)dtAnálogo a posição generalizada (3-1), podemos definir um único vetorpara representar a força generalizada de um corpo rígido, ˆf, contendo amboscomponentes, linear f e angular τ.⎡ ⎤ ⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ τ x ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦τ yτ xˆf = , (3-22)f xf yf zUsando o mesmo procedimento acima para a equação do momentoangular em um ponto arbitrário, confira a equação (3-15), conseguimos aequação (3-8) definida no início desta seção.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 37τ = dL Adt= d(⃗rC A × (m⃗v C) + L C )dt= d⃗rC Adt × (m⃗v C) + ⃗r A C × (m d⃗v Cdt ) + dL Cdt(3-23)(3-24)= ⃗r A C × (m d⃗v Cdt ) + dL Cdt(3-25)= ⃗r C A × f C + ˙L C (3-26)= ⃗r C A × f C + τ C . (3-27)3.4Movimentos do corpo rígidoDado um objeto descrito por um subconjunto O ⊂ R 3 , um movimentorígido é definido pela família de funções (˜χ t ) t∈R+, ˜χ t ∶ O → R 3 , que descrevecomo os pontos pertencentes ao objeto se movem como uma função do tempo t.Cada função deve satisfazer as propriedades de transformação de corpo rígido.Definição 1 (Transformação de Corpo Rígido) Uma função χ ∶ R 3 → R 3é uma transformação de corpo rígido se satisfaz as seguintes propriedadades:– Comprimento preservado:∥χ(P ) − χ(Q)∥ = ∥P − Q∥, ∀P, Q ∈ R 3 .– Produto vetorial preservado:χ ∗ (⃗v × ⃗w) = χ ∗ (⃗v) × χ ∗ ( ⃗w), ∀ vetores ⃗v, ⃗w ∈ R 3 .onde χ ∗ é tal que se ⃗v = B − A, com pontos A, B ∈ R 3 , então χ ∗ (v) =χ(B) − χ(A).No espaço, uma transformação de corpo rígido pode ser decompostaem uma rotação e uma translação, veja para maiores detalhes o livro deFeatherstone(9). Tal transformação pode ser caracterizada também como umamudança de um referencial.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 38Figura 3.13: Relação de um ponto Q no referencial S b ao referencial S o .3.4.1Transfomação de pontosSejam S o o referencial inercial e S b o referencial do corpo. Dado umponto Q pertencente ao corpo rígido, iremos denotar por Q o suas coordenadasrelativas ao referencial inercial, e Q b suas coordenadas relativas ao referencialdo corpo, como na figura 3.13.Podemos relacionar Q o a Q b , através da transformação de coordenadasχ ∶ S o ←→ S b :Q o = χ(Q b ) = O b + Ω o b (Q b), (3-28)onde O b é o vetor posição da origem do referencial do corpo relativo aoreferencial S o , e Ω o b é o operador linear (matriz de rotação) que leva o referencialS b no referencial S o .A transformação dada pela equação (3-28) é uma transformação linearno espaço afim, então, podemos reescrevê-la usando notação matricial emcoordenadas homogêneas:3.4.2Tranformações de velocidades⎡ ⎤ ⎡Q o=Ω o ⎤ ⎡ ⎤bO bQ b= χ(Q b ). (3-29)⎢⎣1 ⎥ ⎢⎦ ⎣0 1 ⎥ ⎢⎦ ⎣1 ⎥⎦Dado o mesmo corpo rígido, com os mesmos referenciais da seção 3.4.1,vimos que a posição de um ponto Q relativa ao referencial inercial S o pode serdada por:Q o = O b + Ω o b (Q b). (3-30)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 39Podemos obter a velocidade do corpo rígido no mesmo ponto Q, simplesmentederivando esta equação em relação ao tempo:dQ odt= dO bdt + d(Ωo b (Q b))dt= dO bdt + dΩo bdt (Q b) + Ω o b (dQ bdt )= dO bdt + dΩo bdt (Q b),(3-31)note que Ω o b opera sobre Q b como um produto matriz-vetor.Por Q b pertencer a um corpo rígido, temos que sua posição é constanteem S b , e portanto dQ bdt= 0. O lema a seguir esclarece como se comporta aderivada de Ω em relação ao tempo.Lema 1 Dada Ω(t) ∈ SO(3), as matrizes ˙ΩΩ T ∈ R 3×3 e Ω T ˙Ω ∈ R 3×3 são antisimétricas.Daí, ∃ ω ∈ R 3 tal que ˙ΩΩ T (v) = ω × v, ∀v ∈ R 3 .Prova. Ora, como Ω é uma matriz de rotação, e portanto ortogonal, temos que:Ω T Ω = I 3×3 .Diferenciando a igualdade acima em relação a t, temos˙Ω T Ω + Ω T ˙Ω = 0˙Ω T Ω = −Ω T ˙Ω = −( ˙ΩT Ω) T .(3-32)Similarmente, com ΩΩ T = I 3×3 obtemos (Ω T ˙Ω) = − (Ω T ˙Ω) T . Como oconjunto <strong>dos</strong> operadores anti-simétricos do R 3 tem dimensão 3, o lema 1permite associar a matriz ˙ΩΩ T um vetor ω ∈ R 3 que nos será chamado detensor velocidade angular. Este tensor atua como o operador ω× :⎡⎤0 −ω z ω y˙ΩΩ T = ω× =ω z 0 −ω x, ⎢−ω ⎣ y ω x 0 ⎥⎦de tal forma que:(3-33)˙ΩΩ T (Q o ) = ω × Q o . (3-34)Defina o operador ∨ como:∎


Animação 3D em Tempo Real com Análises Harmônicas e Modal 40∨ ∶ R 3×3 → R 3ω× → ω.(3-35)Logo,( ˙ΩΩ T ) ∨ = ω = [ω x , ω y , ω z ] T . (3-36)Assim, concluindo a equação (3-31), temos a velocidade no ponto Qrelativa ao referencial inercial é dada em função da velocidade :˙Q o = Ȯb + ωb o × Q o. (3-37)3.4.3Velocidade generalizadaDefinimos então a velocidade generalizada espacial de um corpo b relativoao referencial inercial S o como o vetor ˆv o b⎡ˆv o b =ω o ⎤ ⎡b ⎥⎥⎥⎥⎦ =⎢⎣Ȯ b ⎢⎣ω o bv o b⎤. (3-38)⎥⎦Figura 3.14: O movimento realizado pelo referencial do corpo S b relativo aoreferencial inercial S o .Sejam S o um referencial inercial, e S b o referencial de um corpo rígido,veja a figura 3.14. Assuma que χ o b ∶ R3 → R 3 seja o movimento realizado peloreferencial do corpo relativo ao referencial inercial. Então, como foi visto naseção 3.4.1 a posição do ponto Q em relação ao referencial inercial pode serdada por:


Animação 3D em Tempo Real com Análises Harmônicas e Modal 41⎡ ⎤ ⎡Q o=Ω o ⎤ ⎡ ⎤bO bQ b= χ o b⎢⎣1 ⎥ ⎢⎦ ⎣0 1 ⎥ ⎢⎦ ⎣1 ⎥(Q b).⎦Q o = χ o b (Q b).(3-39)Podemos obter a expressão matricial da velocidade no ponto Q, diferenciandoa relação acima:dQ odt= dχo bdt (Q b)= ˙ χ o b (χo b−1 (Q o ))= ˙ χ o b (χo b )−1 (Q o ).(3-40)onde (χ o b )−1 = χ b o, porém, preferimos manter a notação com o expoentedo corpo em movimento sempre que for possível.A inversa de χ é dada por:⎡(χ o b )−1 =(Ω o b )T −(Ω o ⎤b )T O b, (3-41)⎢⎣0 1 ⎥⎦e a derivada ˙χ por:⎡ ⎤ ⎢⎢⎢⎢⎣χ˙o b = ˙Ωo bȮ b. (3-42)0 0 ⎥⎦Então:⎡˙χ o b (χo b )−1 =˙Ω o ⎤ ⎡bȮ b(Ω o b )T −(Ω o ⎤b )T O b⎢⎣0 0 ⎥ ⎢⎦ ⎣0 1 ⎥⎦⎡=˙Ω o b (Ωo b )T − ˙Ω o ⎤b (Ωo b )T O b + Ȯb.⎢⎣0 0 ⎥⎦Usando o lema 1, conseguimos obter a equação da velocidade v Qoem relação ao referencial inercial,(3-43)em Q ov Qo = ˙χ o b (χo b )−1 Q o= ω o b × Q o + Ȯb.(3-44)A velocidade generalizada ˆv o b = [ωb o, vo b ]T , então pode ser dada como⎡ˆv o b =˙Ω o ⎤b (Ωo b )T⎢⎣− ˙Ω o b (Ωo b )T O b + Ȯb⎥⎦que consiste na linha não-nula da matriz:(3-45)⎡ ⎢⎢⎢⎢⎣¯ˆv o b = ˙Ωo b(Ω o b )T − ˙Ω o ⎤b (Ωo b )T O b + Ȯb0 0 ⎥⎦(3-46)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 423.4.4AceleraçãoDiferenciando em relação ao tempo a equação da velocidade (3-31), enovamente lembrando que Q ˙ b = 0, temos:¨Q o = Öb + ˙Ω o b ( ˙ Q b ) + ¨Ω b (Q b )= Öb + ¨Ω o b (Q b).(3-47)Iremos usar Ω o b= Ω exclusivamente nesta subseção por clareza de notação.Como consequência do lema 1 se tem quee como Ω é ortogonal, podemos escrever˙ΩΩ T = ωb o ×, (3-48)˙Ω = ωb o × Ω. (3-49)Derivando a relação acima em relação ao tempo, obtemos:¨Ω = ˙ω o b × Ω + ωo b × ˙Ω= ˙ω o b × Ω + ωo b × (ωo b × Ω) . (3-50)Denotando a matriz anti-simétrica da aceleração angular por ˙ω o b × = αo b ×,conseguimos a equação matricial para a aceleração no referencial inercial S o .como:¨Q o = Öb + α o b × ΩQ b + ω o b × (ωo b × Ω(Q b)) . (3-51)A equação acima ainda pode ser escrita na notação de produto vetorial¨Q o = Öb + α o b × Qo b + ωo b × (ωo b × Qo b ) . (3-52)Chamamos a parcela αb o × Qo bde componente tangencial e a parcelaωb o × (ωo b × Qo b) de componente normal da aceleração.3.5Formulação matricial com matrizes adjuntasAnalogamente à seção 3.4.3, definimos a velocidade generalizada do corpob em seu próprio referencial ˆv b b = [ω b b , vb b ]T como:⎡ˆv b (Ω o bb =)T ˙Ω ⎤ o ⎥⎥⎥⎥⎥⎦b⎢((Ω o b⎣)T Ȯ b) ∨ (3-53)que novamente corresponde a linha não-nula da matriz,


Animação 3D em Tempo Real com Análises Harmônicas e Modal 43⎡ ⎢⎢⎢⎢⎣¯ˆv b b = (Ω o b )T ˙Ω o b(Ω o b )T Ȯ ⎤b.0 0 ⎥⎦(3-54)Podemos relacionar as velocidades generalizadas ˆv o b = [ωb o, vo b ]T e ˆv b b =[ωb b, vb b ]T por uma simples transformação. Note que:¯ˆv o b = ˙χo b (χo b )−1= (χ o b (χo b )−1 ) ˙χ o b (χo b )−1(3-55)= χ o b ¯ˆv b b (χo b )−1 .Então, da equação (3-45) e do fato que ˙Ω o b (Ωo b )T = ωb o × podemos reescreverω o b = Ω o b ωb b (3-56)v o b = −ω o b × O b + Ȯb = O b × Ω o b ωb b + Ωo b vb b . (3-57)Ou com a notação matricial,⎡ˆv o b =Ω o ⎤ ⎡b0ω b ⎤b⎢⎣O b × Ω o bΩ o ⎥ ⎢b⎦⎣vbb ⎥⎦⎡=Ω o ⎤b0⎢⎣O b × Ω o bΩ o ˆv b b.⎥b⎦(3-58)A esta matriz 6 × 6 que transforma as velocidades de um referencial aoutro denominamos de transformação adjunta associada a χ, Ad χ .Definição 2 (Transformação Adjunta) Dada a mudança de coordenadasχ,⎡ ⎤χ =Ω O. (3-59)⎢⎣0 1 ⎥⎦a transformação adjunta associada a χ é dada por⎡ ⎤Ad χ =Ω 0. (3-60)⎢⎣O × Ω Ω⎥⎦Esta transformação é invertível, e sua inversa é dada por:Ad −1χ =⎡Ω T ⎤0 ⎥⎥⎥⎥⎦ . (3-61)⎢⎣−Ω T O× Ω T


Animação 3D em Tempo Real com Análises Harmônicas e Modal 44Portanto, a velocidade espacial no referencial inercial é obtida da velocidadeespacial no referencial do corpo pela equação.ˆv o = Ad χˆv b . (3-62)3.5.1Transformações matriciais de velocidadesConsidere três referenciais em movimento: S a , S b e S c . Através de composiçõesde transformações, é possível determinar a velocidade do referencialS c relativo ao referencial S a , dada as velocidades relativas de S c a S b e de S ba S a . Iremos usar a notação ˆv c ab para indicar a velocidade de S b relativa aoreferencial S a em coordenadas do referencial S c . (Figura 3.15).Figura 3.15: Modelo com três corpos conecta<strong>dos</strong> e seus referenciais.Proposição 1 (Transformação de Velocidades Espaciais) Considere omovimento de três referenciais, S a , S b e S c . Suas velocidades relativas satisfazema seguinte relação:ˆv a ac = ˆv a ab + Ad χ abˆv a bc. (3-63)Prova. Podemos definir χ a c como a composição das transformações χ a c = χ a b χb c.E por definição, a velocidade relativa do referencial S c relativa ao S a descritano próprio referencial S a é dada por:ˆv a ac = ˙χ a c(χ a c) −1 .Assim, detalhando a equação acima, temos:¯ˆv a ac = ( ˙χ a b χb c + χ a b ˙χb c)(χ b c) −1 (χ a b )−1= ˙χ a b (χa b )−1 + χ a b ˙χb c(χ b c) −1 (χ a b )−1= ¯ˆv a ab + χa b ¯ˆv a bc (χa b )−1(3-64)ˆv a ac = ˆv a ab + Ad χ b c ˆv a bc.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 45∎Proposição 2 (Transformação de Velocidades do Corpo) Considere omovimento <strong>dos</strong> três referenciais, S a , S b e S c . Suas velocidades relativas satisfazema seguinte relação:A prova desta é análoga a da Proposição 1.ˆv b ac = ˆv b ab + Ad (χ b c ) −1 ˆvb bc. (3-65)Lema 2 (Identidade de Velocidades de Corpos Rígi<strong>dos</strong>) Paranotações usadas acima, as seguintes relações são válidas:as• ˆv b ab = −ˆv a ba;• ˆv b ab = −Ad χ abˆv b ba.3.5.2Transformações matriciais de forçasNesta seção descrevemos como é feita a mudança de referencial paravetores de força. Para isso precisamos relembrar alguns conceitos da físicaclássica como o trabalho gerado por um corpo em movimento. Sejam S o oreferencial inercial, com origem em O, e o vetor ˆf = [τ, f ] T em R 6 , representandoa força generalizada aplicada em um corpo rígido. (Figura 3.16).Figura 3.16: Força generalizada ˆf sobre o corpo.O torque total (3-27) sobre o ponto P no corpo rígido é determinadousando a fórmula abaixo:τ P = τ O + f × ⃗ OP . (3-66)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 46Considere um referencial inercial S o , e fixe um referencial S b ao corpo.Suponha que o corpo rígido realize um movimento dado por χ o bcom umavelocidade linear v e angular ω. Se a força ˆf = [τ, f ] T é aplicada à origem deS b , o trabalho realizado pelo corpo rígido é dado por:δW = v ⋅ f + ω ⋅ τ.Usando as notações de velocidade e força generalizada, podemos reescrevero trabalho como:δW = ˆv b ob ⋅ˆf b .É válido relembrar que ˆv b ob consiste na velocidade do corpo relativo ao referencialS o , em coordenadas do referencial do corpo.Podemos representar uma dada força ˆf b em termos de uma força aplicadaem outro ponto usando a definição de forças equivalentes. Duas forças são ditasequivalentes se elas geram o mesmo trabalho para todo movimento possível docorpo rígido. Elas devem ter a mesma intensidade, a mesma direção e o mesmosentido, podendo ser aplicadas em outro ponto.Para obter a força equivalente a uma dada força ˆf b , podemos usar otrabalho obtido pela força enquanto o corpo rígido move-se arbitrariamente.Figura 3.17: Braço mecânico e um corpo: referenciais S o , S b pertencentes aobraço e referencial S c do corpo.Assuma que S c seja o referencial do corpo. Faça ˆv b oc ser a velocidadedo corpo relativo a um referencial S b (figura 3.17). Para determinar a forçaaplicada na origem do referencial S ctrabalhos gera<strong>dos</strong> por ambasˆv b oc ⋅ˆf c = ˆv b ob ⋅ˆf b .equivalente a força ˆf b , igualamos ose daí:


Animação 3D em Tempo Real com Análises Harmônicas e Modal 47ˆv b oc ⋅ˆf c = ˆv b ob ⋅ˆf b = (Ad χ b c ˆv b oc) Tˆfb= ˆv b ocAd T χ b cˆfb .(3-67)Como o movimento é arbitrário, esta equação é válida para qualquer ˆv b oc, eassimˆfc = Ad T χ. b cˆfb (3-68)Expandindo a equação (3-68):⎡ ⎤ ⎡τ c⎥⎥⎥⎥⎦=⎢⎣f c ⎢⎣−Ω T bc O ⎤ ⎡ ⎤bc×τ b⎥⎥⎥⎥⎦0 Ω T . (3-69)⎥ ⎢bc ⎦ ⎣f bΩ T bcInterpretando a adjunta Ad T vemos que ela rotaciona os vetores de forçaχ b ce torque do referencial S b à orientação do referencial S c , e adiciona um torquedado por −Oc b × f b que corresponde ao torque gerado ao aplicar uma força f b àuma distância −Oc. b Veja a figura 3.18.Figura 3.18: Distância das origens do referencial S c ao referencial S b , −Oc.bDenotando por ˆf b as coordenadas da força relativa ao referencial S b , aforça ˆf o equivalente a ˆf no referencial S o , pode ser obtida pela transformação:ˆfo = Ad T χ . (3-70)obˆfbFigura 3.19: Força resultante ˆf o equivalente ao somatório das forças ˆf i de cadacorpo b i .


Animação 3D em Tempo Real com Análises Harmônicas e Modal 48Suponha agora que várias forças sejam aplicadas a um corpo rígido,(figura 3.19). A força resultante será dada pela soma de cada vetor de forçano corpo. Porém, para que esta soma tenha sentido, to<strong>dos</strong> os vetores de forçaprecisam estar representa<strong>dos</strong> em um único sistema de coordenadas. Portanto,para obter a força resultante no corpo rígido, primeiro deve-se obter a forçaequivalente para cada força aplicada ao corpo rígido relativa a um únicoreferencial.ˆfo = ∑ Ad T (χ )−1ˆf o i , (3-71)iii ∈ a, b, c. Por exemplo, na equação (3-71), a força resultante corresponde asoma das forças equivalentes a ˆf a , ˆf b , e ˆf c no referencial inercial S o .3.5.3Tabela de transformaçõesAbaixo resumimos as transformações adjuntas relativas as mudanças decoordenadas como citadas, supondo χ ∶ S b → S a , onde O e Ω corresponde aposição e orientação do S b relativo a S a , respectivamente.Adjunta para velocidade: do referencial S b para o S a .⎡ ⎤Ad χ =Ω 0. (3-72)⎢⎣O × Ω Ω⎥⎦Adjunta para velocidade: do referencial S a para o S b .Ad −1χ =Adjunta para força: do referencial S b para o S a .Adjunta para força: do referencial S a para o S b .⎡Ω T ⎤0 ⎥⎥⎥⎥⎦ . (3-73)⎢⎣−Ω T O× Ω T⎡ ⎤Ad χ =Ω O × Ω. (3-74)⎢⎣0 Ω ⎥⎦Ad −1χ =3.6Análise da dualidade entre velocidades e forças⎡Ω T −Ω T ⎤O× ⎥⎥⎥⎥⎦ . (3-75)⎢⎣0 Ω TNas seções 3.4.3 e 3.3.2, denotamos a velocidade do corpo como o parˆv = [ω, v ] Te a força por ˆf = [τ, f ] T . Ambos os vetores tem 6 dimensões.O conjunto de vetores que geram todas as combinações de ⃗v e ω é um


Animação 3D em Tempo Real com Análises Harmônicas e Modal 49espaço vetorial que iremos chamar de espaço de movimento espacial M 6 , eanalogamente, para a força teremos um espaço vetorial de força espacial F 6 ,cujos vetores são combinação linear de f e τ.Existe uma dualidade expressa diretamente entre os espaços de movimentoe de força espacial. Portanto existe um produto interno entre os elementosde cada espaço cujo resultado é o escalar ˆv ⋅ˆf, com ˆv ∈ M 6 , ˆf ∈ F 6 . Esteescalar corresponde a potência exercida pela força no corpo rígido durante omovimento instantâneo e é denotada por p,p = ˆv ⋅ˆf.Observe queˆv ⋅ˆf = 0significa que os vetores ˆv e ˆf são ortogonais. Uma interpretação física deste fatoé que se uma força aplicada a um corpo rígido é perpendicular ao deslocamentodo mesmo, então o trabalho gerado por esta força é nulo, e por sua vez, apotência também será nula.Como o espaço de movimento é dual ao espaço de forças, ao fazer umamudança de coordenadas entre espaços de velocidades a dualidade implica emuma transformação de coordenadas também entre espaços de forças. Isto é seX é a matriz de transformação que realiza a mudança de coordenadas entreespaços de velocidade então a matriz de transformação entre os espaços deforça X ′é dada por:X ′ = X −T .A esta matriz damos o nome de matriz adjunta, que apresentamos nasseções anteriores. De fato, isso se verifica comparando as equações (3-69) e(3-58).


4Dinâmica de corpos articula<strong>dos</strong>Continuamos a descrição iniciada no capítulo anterior <strong>dos</strong> corpos articula<strong>dos</strong>com as leis que regem seus movimentos.4.1Equações de Newton-Euler sem restriçõesA simulação <strong>dos</strong> movimentos de corpos rígi<strong>dos</strong> é baseada nos sistemas deequações diferenciais, Newton-Euler, que são derivadas das leis de Newton damecânica clássica:Segunda Lei de Newton (Princípio Fundamental da Dinâmica)“A aceleração do movimento é proporcional à força motora impressa, eé produzida na linha reta na qual tal força foi empregada.”f = ṗ = dpdt = d(m⃗v) = m ⋅ d⃗vdt dt= m⃗a. (4-1)Euler estendeu a Segunda Lei de Newton descrevendo as rotações de umcorpo rígido em seu sistema de coordenadas local, afirmando que a variaçãodo momento angular é igual ao torque aplicado ao corpo rígido:˙L = dLdt= τ. (4-2)Substituindo a equação (3-16) na equação (4-2), adicionalmente com ainformação que o momento de inércia J não depende do tempo no caso decorpos rígi<strong>dos</strong>, chegamos na equação geral de Euler:J ˙ω + ω × Jω = τ. (4-3)Se escolhermos os eixos do corpo alinha<strong>dos</strong> com os principais eixos deinércia, J xy = J xz = J yz = 0, obtemos uma versão simplificada da equação de


Animação 3D em Tempo Real com Análises Harmônicas e Modal 51Euler definida acima:J xx ω˙x + ω y ω z (J zz − J yy ) = τ x ,J yy ω˙y + ω z ω x (J xx − J zz ) = τ y ,J zz ω˙z + ω x ω y (J yy − J xx ) = τ z .Note que se o corpo rígido rotacionar em torno de um <strong>dos</strong> eixos principais,suponha que em torno do eixo z, então o vetor velocidade angular será dado porω = ω z J zz⃗ k e se torna paralelo ao momento angular L. Desta forma podemosreescrever as equações de Euler simplesmente como:J xx ˙ω x = τ x ,J yy ˙ω y = τ y ,J zz ˙ω z = τ z .(4-4)Nesse caso, podemos representar as equações (4-1) e (4-4) em formamatricial e obter uma única equação que descreve a dinâmica rotacional etranslacional de um corpo rígido, cujo referencial local coincide com seu centrode massa C:⎡ ⎤ ⎡⎤ ⎡ ⎤τ=J c 0 ⎥⎥⎥⎥⎦ ⎢⎢⎢⎢⎣ ˙ω. (4-5)⎢⎣f⎥⎢⎦ ⎣0 mI 3×3˙⃗v ⎥⎦Na equação acima I 3×3 é a matriz identidade 3×3. Esta é a equação geralque descreve os movimentos livres, com o referencial do corpo no centro demassa, e rotação em torno <strong>dos</strong> eixos principais de inércia.Supondo que o referencial do corpo não esteja no centro de massa C,usaremos a equação da aceleração em um ponto arbitrário, equação (3-52),para obter as novas equações de Newton-Euler:f = m⃗a = m( ˙⃗v − C × α + ω × (ω × C))= m ˙⃗v − mC × α + mω × (ω × C)e assim a equação de Euler pode ser obtida fazendo uso da equação (3-27):τ = C × f + τ C= mC × ˙⃗v − mC × (C × α) − m(ω × C) × (C × ω) + J C ˙ω + ω × J C ω= mC × ˙⃗v − mC × (C × ˙ω) + J C ˙ω + ω × (J C ω − mC × C × ω).


Animação 3D em Tempo Real com Análises Harmônicas e Modal 52Podemos novamente definir as equações de Newton-Euler de formamatricial, agora com um referencial qualquer e rotação qualquer:⎡ ⎤ ⎡⎤ ⎡ ⎤ ⎡⎤τ=J C − mC × C× mC× ⎥⎥⎥⎥⎦ ⎢⎢⎢⎢⎣ ˙ω+ω × (J C ω − mC × C × ω). (4-6)⎢⎣f⎥⎢⎦ ⎣−mC× mI 3×3˙⃗v ⎥ ⎢⎦ ⎣mω × (ω × C) ⎥⎦4.2Restrições de velocidadeConsidere um sistema multicorpos com n b corpos e n j juntas. Denote porS bi e S jk os referenciais locais do corpo b i e da junta j k . Assuma que tenhamosapenas juntas rotacionais, isto é, de revolução. Neste caso, a restrição pede queos corpos a qual elas conectam não se desconectem durante um movimento.Figura 4.1: Parte do dedo do modelo da mão se desconectando durante ummovimento.Dado um ponto P na interseção de dois corpos conecta<strong>dos</strong> por uma juntade revolução, vimos na subseção 3.2.3 que a restrição imposta pela junta derevolução é equivalente a equação:P j kb i= P j kb lΓ m k ˆp i(P ) = Γ m k ˆp l(P )(4-7)onde denotamos como ˆp i (P ) as coordenadas generalizadas da posição do pontoP no referencial do corpo b i , analogamente para o corpo b l , e Γ m é a matriz derestrição da junta de revolução j k dada por:⎡ ⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ 1 0 0 0 0 00 1 0 0 0 0Γ m k = 0 0 0 0 0 0. (4-8)0 0 0 1 0 00 0 0 0 1 00 0 0 0 0 1⎥⎦


Animação 3D em Tempo Real com Análises Harmônicas e Modal 53Podemos formular a mesma restrição com as velocidades <strong>dos</strong> corpos. Diferenciandoa equação (4-7), obtemos que a restrição impõe que as velocidades<strong>dos</strong> corpos no referencial da junta sejam iguais, deixando livre apenas a coordenadada velocidade angular ω z correspondente a rotação em torno do eixo z:Γ m k ˆvj kbi= Γ m k ˆvj kbl, (4-9)A velocidade no ponto P bi é adotada como a velocidade do corpo b inaquele momento, analogamente para P bl . As velocidades <strong>dos</strong> referenciais<strong>dos</strong> corpos ˆv j kbie ˆv j kblrelativas ao referencial da junta j k são obtidas pelouso das matrizes adjuntas, vistas na seção 3.5. Então, seja a transformaçãode coordenadas do referencial do corpo b iχ j kbi∶ S bi → S jk dada por⎡χ j kbi=Ω j kbiO j k⎤bi⎢⎣0 1 ⎥⎦para o referencial da junta j k(4-10)a adjunta associada a transformação χ j kbi, e portanto a mudança de referencialda velocidade do referencial do corpo ao referencial da junta é dada comoˆv j kbi= Ad j kbi ˆv bi⎡⎢=⎢⎣O j kbiΩ j kbi0× Ω j kbiΩ j kbi⎤ ⎥⎥⎥⎥⎦ˆv bi .(4-11)Procedendo analogamente para o corpo b l , podemos reescrever nossaequação de restrição em função das velocidades <strong>dos</strong> corpos como:Γ m k⎡⎢⎣O j kbiΩ j kbi0× Ω j kbiΩ j kbi⎤ ⎥⎥⎥⎥⎦ˆv bi = Γ m k⎡⎢⎣O j kblΩ j kbl0× Ω j kblΓ m k Adj kbi ˆv bi − Γ m k Adj kbl ˆv bl = 0Γ m k (Adj kbi ˆv bi − Ad j kbl ˆv bl ) = 0.Ω j kbl⎤ ⎥⎥⎥⎥⎦ˆv bi(4-12)Procedendo de forma semelhante para cada uma das n j juntas do sistemae reescrevendo em uma única equação matricial temos:Gˆv b = 0. (4-13)Chamamos a matriz G de matriz de restrição de velocidades do sistema.Seja nr k o número de restrições da junta j k . Dado que o número total derestrições do sistema, nr, é igual ao somatório nr = ∑ n jk=1 nr k, a matriz Gpossui nr linhas e 6 ∗ n b colunas. Note que eliminamos as desnecessárias linhasnulas da matriz G, que correspondem as coordenadas livres do sistema.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 54A equação (4-13) nos diz que um vetor velocidade generalizado ˆv quesatisfaça essa restrição, pertence ao espaço nulo da matriz G. Ora, se G possuinl linhas linearmente independentes e nc colunas, e se nc−nl é igual ao númerode graus de liberdade do sistema, então temos que o espaço nulo de G é umsubespaço de movimentos “permitido” do sistema e sua dimensão é exatamenteigual ao número de grau de liberdade do sistema.Figura 4.2: Exemplos de Movimentos admissíveis de um laço de 4 e 9 corpos,respectivamente.Na ilustração 4.2, como as juntas são de revolução, ou seja Γ m j 0= Γ m j 1=Γ m j 2= Γ m j 3, então cada junta restringe os movimentos <strong>dos</strong> corpos conecta<strong>dos</strong> pelamesma a rotação em torno da sua normal. Para cada par de corpos, a normalda junta que os conecta é determinada pelo produto vetorial das direçõesdestes corpos. Como to<strong>dos</strong> os corpos pertencem a um plano, então to<strong>dos</strong> osmovimentos admissíveis do modelo também se restringem a esse mesmo plano.Figura 4.3: Transformações de velocidade para juntas no laço de 4 corpos.Para o laço ilustrado na figura (4.3), a equação (4-13) é dada por:⎡Γ m j 0Ad j 0b 00 0 −Γ m j 0Ad j ⎤ ⎡ ⎤ ⎡ ⎤0b ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦3⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ˆv b0⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦0−Γ m j 0Ad j 1b 0Γ m j 1Ad j 1b 20 0 ˆv b10 −Γ m j 2Ad j 2b 1Γ m j 2Ad j =02. (4-14)b 20 ˆv b20⎢ 0 0 −Γ⎣m j 3Ad j 3b 2Γ m j 3Ad j 3b 3ˆv b3 ⎢0⎥⎣ ⎦


Animação 3D em Tempo Real com Análises Harmônicas e Modal 55Observamos que nesse caso a matriz G não terá posto máximo, pois o últimobloco de linhas é combinação linear <strong>dos</strong> três primeiros. Esse fenômeno serátratado na seção 4.4.3.4.3Forças das juntas elásticasConsidere o mesmo sistema multicorpos da subseção 3.5.2, e denote porˆfjk a força transmitida pela junta j k (ver na figura 4.4). A força da junta j kem cada um <strong>dos</strong> corpos que ela conecta é igual em módulo e direção, porémpossui sentido oposto.Figura 4.4: Sentido das forças correspondentes a cada junta j i , i ∈ 1, 2, 3.Se para cada osso b i denotamos por F j+io conjunto de todas as juntasque contém o corpo b i como sucessor, e de modo semelhante, F j−io conjunto detodas as forças que contém o corpo b i como antecessor, então a força resultanteˆfbisobre o corpo b i será:iiˆfbi = ∑ ˆfb j k− ∑ ˆfb j k. (4-15)j k ∈F j+i j k ∈F j−iObviamente o sentido da força dependerá de um referencial, usualmenteo referencial da junta, e de uma orientação adotada. De forma análoga ao quefoi feito na subseção 4.2, usamos as matrizes adjuntas para fazer a conversãoda força no referencial da junta para o referencial do corpo.Observe que agora, ao invés de usar as coordenadas sujeitas à restrição,deve-se usar apenas as coordenadas “permitidas”, isto é, aquelas direções emque as forças podem atuar. Para isto, podemos definir matrizes complementaresàs matrizes de restrição de velocidade, e as chamaremos de matrizes derestrição de forças das juntas Γ f .Como as matrizes de restrição de forças são complementares as matrizesde restrição de velocidades, o número de linhas das matrizes de restrição de


Animação 3D em Tempo Real com Análises Harmônicas e Modal 56forças é exatamente igual ao total de graus de liberdade do sistema. No casodas juntas rotacionais, por exemplo, as matrizes de restrição de forças serãodadas por:⎡ ⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ 0 0 0 0 0 00 0 0 0 0 0Γ f k = 0 0 1 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0⎥⎦ou eliminando as linhas nulas,Γ f k(4-16)= [0 0 1 0 0 0] . (4-17)Ao aplicarmos Γ f kem um vetor de posições generalizadas obtemos que aúnica coordenada livre corresponde a rotação em torno do eixo z, assumindoque este eixo é o normal ao plano <strong>dos</strong> corpos conecta<strong>dos</strong> pela junta.Logo, a equação (4-15) pode ser reescrita como:ˆfbi =∑ Ad b ij k ∈F j+ij k(Γ f j k) Tˆfjk −∑j k ∈F j−iAd b ij k(Γ f j k) Tˆfjk , (4-18)onde a força ˆf jk é o vetor de força generalizada restrita as direções livres dadaspela junta j k , e desde que:obtemosˆfbi =∑ Ad j Tkbi(Γfj k ∈F j+i= ∑ (Γ f j kAd j kj k ∈F j+iAd b ij k= Ad j Tkbij k) Tˆfjk −bi) T ˆfjk −∑j k ∈F j−i∑j k ∈F j−iAd j kbiT(Γfj k) Tˆfjk .(Γ f j kAd j kbi) T ˆfjk .(4-19)(4-20)Procedendo de forma análoga para to<strong>dos</strong> os corpos do sistema, e reescrevendoas n b equações de uma única forma matricial, podemos definir a matrizR, tal que:ˆfb = R Tˆfj . (4-21)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 57Figura 4.5: Transformações de velocidade forças das juntas para os corpos nolaço de 4 corpos.por:Para o laço de 4 corpos ilustrado na figura 4.5, a equação (4-21) é dada⎡(Γ f j 0Ad j 0b 0) T (Γ f j 1Ad j 1b 0) T 0 00 (Γ f j 1Ad j 1b 1) T (Γ f j 2Ad j 2b 1) T 00 0 (Γ f j 2Ad j 2b 2) T (Γ f j 3Ad j 3b 2) T⎢(Γ ⎣f j 0Ad j 0b 3) T 0 0 (Γ f j 3Ad j 3⎤ ⎡ ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦T ⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ˆfj0ˆfj1b 3) T⎤ ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦=ˆfj2ˆfj3⎡ ⎤ ˆfb0 ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦ ˆfb1(4-22)ˆfb2⎢ˆfb3 ⎣Observe que como sempre estamos adotando juntas de revolução, teremosn b equações (4-21). A partir da relação (4-19), podemos verificar que a matriz Rtambém converte velocidades espaciais do corpo, ˆv b , em velocidades angularesdas juntas, ˙θ. De fato,(Ad j Tkbi(Γfj k) T T)= Γ f j kAd j kbi(4-23)e daí, assumindo novamente juntas rotacionais por simplicidade, temos:˙ θ z = Γ f j kAd j kbi ˆv bi . (4-24)Se existir forças de amortecimento cˆf b no sistema podemos obtê-lasfacilmente no referencial do corpo b, bastando apenas aplicar a matriz R pararealizar as devidas conversões:cˆfb = R T CRˆv b . (4-25)Na equação acima (4-25), a matriz C é uma matriz diagonal cujoselementos da diagonal principal são as constantes de amortecimento de cada


Animação 3D em Tempo Real com Análises Harmônicas e Modal 58junta.4.4Espaço de movimentos possíveisO estudo do espaço vetorial formado pelos movimentos possíveis <strong>dos</strong> corpose de como obter uma base para o mesmo são tarefas cruciais para dinâmicade multicorpos. Os movimentos realiza<strong>dos</strong> pelos corpos devem satisfazer asrestrições impostas pelas juntas que os conectam. Isto é, devem satisfazer asequações de restrição expressas pela matriz G,Gˆv b = 0. (4-26)O espaço nulo da matriz de restrições G, isto é, os vetores velocidades ˆv bque satisfazem estas equações, formam o espaço de movimentos possíveis paraos corpos, que chamamos de subespaço de movimentos permiti<strong>dos</strong>.4.4.1Espaço nulo de matriz de restriçõesSe um sistema multicorpos com restrições sem ciclos possui m equações derestrição e n variáveis, o núcleo da matriz G(m × n) tem dimensão n f = n − m,que corresponde ao grau de liberdade do sistema, como visto na seção 4.2.Suponha que os vetores linearmente independentes ⃗ ζ k , k = 1...n f , onde n fcorresponde ao grau de liberdade citado acima, formam a base ortonormaldo núcleo da matriz G. Um movimento permitido ˆv pelo sistema, podem serescritos como uma combinação linear <strong>dos</strong> vetores ⃗η k :ˆv = c 1⃗ ζ1 + c 2⃗ ζ1 + . . . + c nf⃗ ζnf , (4-27)onde c k ∈ R, k = 1 . . . n f . Reescrevendo esta equação de forma matricial,introduzimos a matriz N de dimensão (6 ∗ n b × n f ), onde n b é o número decorpos do sistema, que será formada pelos vetores da base do núcleo de G:ˆv bi = N⃗v⎡⎤ ζ 11 ζ 12 . . . ζ 1nf ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦ ⎡ ⎤ ⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ c 1 ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦ ζ 21 ζ 12 ζ 2nf c 2=.⋮ ⋱ ⋮ ⋮⎢ζ 6nb 1 ζ 6nb 2 . . . ζ 6nbnf c nf⎣(4-28)onde ⃗v = [c 1 , c 2 , . . . , c nf ] T .


Animação 3D em Tempo Real com Análises Harmônicas e Modal 59Figura 4.6: Subespaço de movimentospossíveis de uma junta esférica.Figura 4.7: Subespaço de movimentospossíveis de uma junta de revolução.Podemos considerar como exemplo o caso de uma junta esférica presaem um ponto fixo P . O subespaço de movimentos possíveis consiste na esferacentrada em P , veja figura 4.6.De fato, como m = 3 e n = 6, temos que o grau de liberdade do sistemaé igual a 3. De forma análoga para um corpo conectado por uma junta derevolução (figura 4.7) também fixada no ponto P , temos que m = 5, e n = 6,portanto, o grau de liberdades é 1, e o subespaço de movimentos consiste nocírculo novamente centrado em P .4.4.2Méto<strong>dos</strong> numéricos para determinar o núcleoVamos relatar dois méto<strong>dos</strong> propostos na literatura para se obter o núcleoda matriz G: o método baseado na Decomposição em Valores Singulares (SVD)e baseado na Decomposição QR, veja o livro do Golub (10).Decomposição em Valores Singulares (SVD)escrita como:A matriz G(m × n) pode serG = USV T , (4-29)onde U e V são matrizes ortogonais, de dimensões m × m, e n × n, respectivamente,e S é uma matriz retangular diagonal de dimensão m×n. Defina min mncomo o mínimo entre m e n e r = n − min mn . A matriz S é decomposta emduas matrizes S 1 (m×min mn ), diagonal com os valores singulares, e S 2 (m×r)cujos elementos são to<strong>dos</strong> nulos.Chamando por d i , i = 1 . . . n, os elementos da diagonal de S, então:• d i , i = 1 . . . min mn , serão os valores singulares não nulos,• d i = 0, para i = min mn + 1 . . . n, caso min mn = m.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 60Figura 4.8: Método SVD.A matriz V também é decomposta em duas submatrizes V 1 (min mn × n)e V 2 (r, n). Assim as linhas de V que correspondem aos elementos d i = 0 damatriz S, isto é, as linhas de V 2 , formam uma base ortonormal para o núcleode G. Ou seja,e portanto podemos definir N = V T2 .GV T2 = 0. (4-30)Decomposição QR. Dada uma matriz G (m × n), o método QR decompõeG T emG T = Q ˜R. (4-31)onde Q é uma matriz ortogonal (n × n), e ˜R é uma matriz retangular (n × m).Note que denotamos a matriz retangular por ˜R para evitar confusão coma matriz de restrição de forças R da seção 4.3. Assuma que n > m, edenote por r = n − m. A matriz Q é decomposta nas matrizes Q 1 (n × m)e Q 2 (n × r), enquanto a ˜R pode ser decomposta em uma matriz triangularsuperior ˜R 1 (m × m), e uma matriz nula de dimensão (n × r). Então:G = ˜R T Q TQG = ˜R T .(4-32)Portanto, como GQ 2 = 0, deduzimos que Q 2 gera o espaço nulo da matrizG, e daí N = Q 2 . Para o caso de m > n, a solução segue de uma análise análogaao que foi feito acima.Figura 4.9: Método QR.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 614.4.3LaçosNo caso de modelos sem laço o método QR nos dá diretamente a dimensãoe a base do espaço nulo de G. Para modelos com laços, observamos que o cálculoda dimensão do espaço nulo requer cautela. Os laços adicionam equaçõeslinearmente dependentes na G, e assim aumenta a dimensão do seu espaçonulo, ver exemplo 4.3 da seção 4.2. A matriz R do método QR possui elementosnulos em sua diagonal principal, isto é, em ˜R 1 da figura 4.9, e a quantidadedestes elementos nulos é o que complementa a dimensão de N. Portanto, senz for o número de zeros que constam na diagonal principal de ˜R 1 , então osr + nz vetores colunas de Q 2 formam o espaço nulo de G. Analogamente, parao caso do SVD.Figura 4.10: Exemplo de laços modela<strong>dos</strong> com 4, 16 e 8 corpos, respectivamente.As ilustrações na figura 4.10 correspondem aos esqueletos de um laçosimétrico de 4 corpos e de 16 corpos, e finalmente de um laço não-simétrico de8 corpos. Na tabela 4.1 relatamos os detalhes obti<strong>dos</strong> em tais testes:Modelo #ne de R = 0 Dim. de G dim(N)Laço Sim. 4 3 20 × 24 24 − 20 + 3 = 7Laço Sim. 16 3 80 × 96 96 − 80 + 3 = 19Laço Não-Sim. 8 3 40 × 48 48 − 40 + 3 = 11Tabela 4.1: Testes com modelos de laços para cálculo do espaço nulo N damatriz de restrição G.Na tabela 4.1 o item #ne de R significa o número de elementos dadiagonal de R, e Dim. de G corresponde a dimensão da matriz G.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 624.5Análise ModalA Análise Modal determina as características vibracionais de modelos,utilizando apenas informações físicas de sua estrutura, como massa e coeficientesde rigidez e amortecimento. As soluções <strong>dos</strong> sistemas modais são compostaspelos mo<strong>dos</strong> normais e a frequência angular natural. Os mo<strong>dos</strong> normais consistemem um padrão de oscilação onde to<strong>dos</strong> os elementos do sistema irãovibrar com a mesma frequência natural.Esta seção é baseada no trabalho de Kry et al. (18). Vamos analisarnovamente as equações que regem os movimentos de cada corpo do sistema,porém agora em modelos articula<strong>dos</strong>. Considere o sistema ilustrado na figura4.11.Figura 4.11: Sistema de coordenadas locais de corpos e juntas.4.5.1Equações cinemáticasTemos então n b corpos, de massas m i , conecta<strong>dos</strong> por n j juntas. Denotamospor S b os referenciais <strong>dos</strong> corpos, S j os referenciais das juntas, e nj binúmero de juntas pertencentes a um corpo b i . A equação de movimento de umcorpo b i no próprio referencial do corpo é dada por:om i ˙ˆvbi = ˆf bim i ˙ˆvbi =nj bi∑k=1ˆfbij k.(4-33)iˆfb j k é a força no referencial do corpo b i equivalente a força da junta j k , e ˆf bi é aforça resultante do somatório das forças ˆf b ij k. Considere que o sistema está livrede forças externas, e assim restringimos as forças que influenciam nos corpos


Animação 3D em Tempo Real com Análises Harmônicas e Modal 63apenas como as forças elásticas das juntas. Estas por sua vez, são provocadaspelos deslocamentos <strong>dos</strong> corpos que as conectam. Isto é, assuma que a juntaj k , com coeficiente de rigidez k jk conecte os corpos b i ′ e b i ′′.Para um dado intervalo de tempo t, o deslocamento <strong>dos</strong> corpos b i ′ e b i ′′podem ser aproxima<strong>dos</strong> por ˆv bi ′ t e ˆv bi ′′ t, respectivamente. Lembrando que aforça elástica é dada por:ˆf = −kδˆp, (4-34)com δˆp correspondendo ao deslocamento espacial do corpo, temos que a forçada junta j k em seu próprio referencial pode ser expressa como a soma:ˆfjk = −Γ f j kk jk (Ad j kbi ′ ˆv b i ′ )δt − Γ f j kk jk (Ad j kbi ′′ ˆv b i ′′ )δt. (4-35)em coorde-Observe que Ad j k ˆv bi ′ b i ′ δt nos dá o deslocamento do corpo b i ′nadas da junta j k .Figura 4.12: Forças das juntas j k e j k−1 do modelo do cavalo.4.5.2Forma matricialAssumindo que as equações são escritas no referencial do corpo, podemosreescrever a equação (4-33) comom i ˙ˆvbi =nj bi∑ Γ f j kAd b ij kˆfjk . (4-36)k=1Podemos estender a expressão da força de uma única junta j k para asn j juntas do sistema, com a observação que a matriz de restrição de forças R,transforma velocidades no referencial do corpo em velocidades no referencialda junta, confira equação (4-24), através da equação matricialˆfj = −KRˆv b δt. (4-37)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 64A equação do movimento <strong>dos</strong> corpos deste sistema, usando referenciaislocais, pode ser escrita porM ˙ˆv b = −R T KR (ˆv b δt) (4-38)onde M é a matriz diagonal de massas de cada corpo, e K é a matriz diagonalde constantes de rigidez de cada junta. Entretanto, esse movimento é restritopelas juntas. Essa restrição é dada por ˆv b ∈ ker(G), ou sejaˆv b = N ˙ˆp b , (4-39)onde ˙ˆp corresponde a velocidade em coordenadas reduzidas admissíveis. Observeque ˆp = ˆv b δt. Além disso, projetamos também a equação (4-38) emcoordenadas reduzidas e assim podemos definir novas matrizes M = N T MN eK = N T R T KRN, tal queM¨ˆp b = −Kˆp b . (4-40)Vê-se com facilidade que a matriz M é inversível, visto que a matriz demassa do sistema M é diagonal com as entradas da diagonal principal semprepositivas, e que as colunas de N formam uma base ortogonal do espaço nulo deG. Este problema pode ser solucionado para pequenas vibrações determinandoos autovalores λ e autovetores u de M −1 K.A matriz K pode não ter posto completo, e portanto obteremos autovetoresassocia<strong>dos</strong> a autovalores nulos. Um caso típico onde isto acontece é quandoo modelo não possui movimentos vibracionais, por exemplo, quando apenasrealiza uma translação.4.5.3Modelo modalSe G tem dimensão (m × n) então como solução do problema de autovaloresde (4-40) teremos uma matriz U(n f , n f ), onde n f = n − m, tal que cadacoluna corresponde aos autovetores u i que nos dá o modo normal i. Cada u isão vetores de posição de cada corpo do sistema em coordenadas reduzidas.Ao projetarmos os autovetores u i no espaço nulo de G,η i = Nu i (4-41)obtemos vetores η i ∈ R 6n b , onde nb é o número de corpos do sistema. A cada6l, l = 0, . . . n b componentes de η temos um vetor posição η l ∈ R 6 do corpob l do modelo em coordenadas admissíveis, ou seja, posições que satisfazem asrestrições impostas. Isto é,


Animação 3D em Tempo Real com Análises Harmônicas e Modal 65⎡ ⎤θ x0θ y0θ z0x 0⎡ ⎤y η 00z 0η =η 1=⋮⋮θ xnb⎢η ⎣ 6∗nb . ⎥⎦θ ynbθ znbx nby nb⎢⎣z nb . ⎥⎦com Gη = 0. (4-42)Os autovalores λ fornecem as correspondentes frequências para cadamodo normal i, logo λ ∈ R n f . Ao par {U, λ} chamamos Modelo Modal <strong>dos</strong>istema.4.5.4Solução por Análise ModalCom estas informações, uma possível solução da equação (4-40) quedescreve o comportamento <strong>dos</strong> corpos é dada por:ˆp(t) = µη sin(2πνt + γ). (4-43)Na equação (4-43) acima, ν, µ e γ são vetores de frequências, amplitudese fases, respectivamente. As amplitudes e as fases podem ser obtidas pelosda<strong>dos</strong> iniciais, ou mesmo podem ser atribuí<strong>dos</strong> para configurar um movimentodesejado.Para determinar as frequências <strong>dos</strong> movimentos fazemos a substituiçãoda solução (4-43) na equação (4-40):−4π 2 ν 2 M µη sin(2πνt + γ) = −K µη sin(2πνt + γ)−4π 2 ν 2 M ˆp(t) = −K ˆp(t)4π 2 ν 2 ˆp(t) = M −1 K ˆp(t)(4-44)e daí, a frequência será dada por:λ = 4π 2 ν 2 , ν = √ λ/2π. (4-45)


Animação 3D em Tempo Real com Análises Harmônicas e Modal 66Note que os mo<strong>dos</strong> normais, por serem projeta<strong>dos</strong> no espaço nulo da G,e consequentemente em seu domínio, estão em coordenadas do referencial decada corpo.Sendo assim, para um certo modo normal κ, cuja frequência e fase serãodenota<strong>dos</strong> por ν κ e γ κ , respectivamente, o movimento do corpo b i relativo aoseu referencial local é descrito pela expressão:ˆp(t) bi = µ κ η κ sin(2πν κ t + γ κ ) + ˆp(0) bi , (4-46)com ˆp(0) bi ∈ R 6 sendo o vetor contendo a posição de equilíbrio generalizadado corpo b i em seu próprio referencial. Isto porque o movimento vibracionaloscila em torno de sua posição de equilíbrio.Figura 4.13: À esquerda ilustramos o cavalo em sua posição de equilíbrio e àdireita com as patas da frente reposicionadas por um movimento de marcha.A figura 4.13(a) da esquerda ilustra o cavalo em sua posição de equilíbrioe a figura à direita 4.13(b) o mostra com as patas da frente reposicionadaspor um movimento de marcha correspondendo ao modo normal de frequência0.167031 Hz.4.5.5Sobreposição de mo<strong>dos</strong> normaisPodemos visualizar o conjunto de mo<strong>dos</strong> normais obti<strong>dos</strong> do sistema,como uma base de movimentos naturais. Pela linearidade do sistema é possívelobter um outro movimento qualquer fazendo uma combinação linear destabase de movimentos naturais. Então, novamente para um corpo b i pode-sedeterminar as posições generalizadas do mesmo em qualquer instante de tempot pela expressão:ˆp(t) bi =nm∑κ=1µ κ η κ sin(2πν κ t + γ κ ) + ˆp(0) bi . (4-47)Em (4-47), nm consiste no número de mo<strong>dos</strong> normais do sistema.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 67Na figura 4.14, ilustramos os movimentos gera<strong>dos</strong> por dois mo<strong>dos</strong> normaisdo modelo do Smurf. O trigésimo modo normal simula o comportamento deuma marcha, onde as pernas dobram alternadamente, veja no bloco mais àesquerda da ilustração. Já no bloco à direita, ilustramos o segundo modonormal, onde podemos ver o Smurf mexendo alguns de<strong>dos</strong> das mãos.Figura 4.14: Ilustração do trigésimo e segundo mo<strong>dos</strong> normais. O trigésimomodo é ilustrado no quadro mais à esquerda, enquanto no quadro à direitapodemos ver o segundo modo normal.Fazendo a combinação de ambos mo<strong>dos</strong> relata<strong>dos</strong> acima, obtemos oSmurf marchando e com os de<strong>dos</strong> ainda em movimento, veja figura 4.15.Figura 4.15: Combinação <strong>dos</strong> mo<strong>dos</strong> 2 e 30 do modelo do Smurf.4.5.6Edição de movimentosObserve que alterações nos comportamentos <strong>dos</strong> corpos podem ser feitasapenas adicionando novos termos µ κ Nu κ , com um coeficiente µ κ pequeno nãonulo.Por exemplo, poderíamos adicionar um modo do Smurf balançando acabeça (ver figura 4.16) ao movimento ilustrado em 4.15.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 68Figura 4.16: Modo adicional onde o modelo balança a cabeça.Desta forma, é possível escolher em uma paleta de movimentos naturais,os movimentos mais adequa<strong>dos</strong> para a aplicação com o intuito de construirnovos movimentos. Deve-se levar em conta que as posições de equilíbriopossuem grande influência nos movimentos cria<strong>dos</strong>, já que a oscilação <strong>dos</strong>corpos sempre acontece em torno da posição de equilíbrio.Figura 4.17: Na figura 4.17(a) ilustramos o cavalo em uma posição de equilíbrio,e na figura 4.17(b) à direita, mostramos a pata oscilando em torno de uma novaposição de equilíbrio.Ao mudar a posição de equilíbrio do cavalo ilustrada na figura 4.17(a)à esquerda, obtemos que o corpo reposicionado também muda seu comportamentopara oscilar em torno da nova posição de equilíbrio, como vemos em4.17(b) à direita. As posições mais claras correspondem a posição de equilíbrionas duas figuras.Além disso, as combinações das constantes ν κ e γ κ atribuídas a cadamodo normal κ amplia a diversidade de movimentos possíveis, aumentando aamplitude <strong>dos</strong> movimentos ou fazendo-os começar em um instante de tempodiferente.


5Animação com Análise ModalNeste capítulo descrevemos explicitamente como é feita a visualização damúsica usando análise modal.5.1Análise Modal controlada por um sinal sonoroA equação usada para determinar as posições <strong>dos</strong> corpos (4-43) porAnálise Modal também são expressas por uma combinação de movimentossenoidais associa<strong>dos</strong> aos autovetores η, autovalores λ = 4π 2 ν 2 e um ângulo defase γ:ˆp(t) bi =nm∑κ=1µ κ η κ sin(2πν κ t + γ κ ). (5-1)De forma semelhante ao que fizemos em Harmônicos de Variedade, iremosusar a equação da posição generalizada acima (5-1) como a função F (i) daTransformada de Fourier vista na equação (2-13), com o intuito de fazermosos corpos se movimentarem sob a influência da música. Desta forma, para ocorpo b i teremos seis equações: uma para cada coordenada θ xi , θ yi , θ zi , x i , y i , z i ,para cada modo normal associado a frequência ν.Assim como nos Harmônicos de Variedade, as frequências mais altas doModelo Modal possuem o comportamento muito brusco, tornando-os menosnaturais ao que esperamos. Assim iremos nos concentrar apenas em lidar comas frequências mais baixas e novamente criaremos um filtro ϕ(ν) de forma queamplifique cada harmônica H ν :F (i) =n−1∑ ϕ(ν) ˜F (ν)H ν . (5-2)ν=0Na equação (5-2) acima, n corresponde ao número total de mo<strong>dos</strong> normaisseleciona<strong>dos</strong> para gerar a animação.5.2Tratamento de esqueletos complexosPor definição, uma junta é um elemento cinemático que conecta doiscorpos. Porém, na realidade é bem comum encontrar objetos ou membros cujos


Animação 3D em Tempo Real com Análises Harmônicas e Modal 70modelos possuam juntas que conectam três ou mais corpos. Basta olharmospor exemplo, a junta que conecta o pescoço as demais partes do cavalo, figura5.1.Figura 5.1: Destaque a uma junta com mais de dois corpos no modelo docavalo.Assim como na sua definição, a implementação das juntas também sóadmitem dois corpos conecta<strong>dos</strong>. Entretanto, para este problema usamosjuntas duplicadas, isto é, fazemos combinações pareadas de corpos cada qualcom uma junta.Figura 5.2: Combinação <strong>dos</strong> pares de corpos conecta<strong>dos</strong> a uma mesma junta.É evidente que estas juntas também entram na construção das matrizesG e R. De forma análoga as demais juntas do modelo, os corpos associa<strong>dos</strong>a uma junta adicional devem permanecer conecta<strong>dos</strong> no decorrer de to<strong>dos</strong>os movimentos, e portanto deve-se adicionar restrições para a mesma. Além


Animação 3D em Tempo Real com Análises Harmônicas e Modal 71disso, ao realizar os movimentos estas juntas sofrem torques que influenciamos corpos que ela conecta, e portanto tais torques devem entrar nos somatóriosde força <strong>dos</strong> corpos.5.3Skinning modalDado um modelo articulado e uma malha associada a este modelo, oskinning tradicional associa a cada vértice da malha um ou mais corposdo esqueleto. Assim para cada movimento de um corpo do esqueleto, novasposições <strong>dos</strong> vértices associa<strong>dos</strong> ao mesmo devem ser recalculadas.As novas posições ṽ i , de um vértice ⃗v i , no skinning tradicional, podem serobtidas pelo somatório das transformações M b <strong>dos</strong> corpos b que o influenciampondera<strong>dos</strong> por um peso δb i ∈ R, 0 ≤ δi b≤ 1, que corresponde a influência queaquele corpo possui sob o vértice em questão. Isto é,ṽ i = ∑ δb iM b⃗v i . (5-3)bVamos calcular as mesmas posições, porém de forma mais eficiente aproveitandoa natureza modal do movimento do esqueleto. Lembrando que asposições <strong>dos</strong> corpos em nosso modelo são determinadas por:ˆp(t) bi =nm∑κ=1µ κ η b lκ sin(2πν κ t + γ κ ) + ˆp(0) bi . (5-4)para um certo modo normal η b lκ , com associada frequência ν κ e fase γ κ , em umcerto instante de tempo t. Vale lembrar que η b lκ é um vetor de 6 dimensões.Logo, podemos denotar M bl :M bl =nm∑κ=1µ κ η b lκ sin(2πν κ t + γ κ ) (5-5)como uma matriz de transformação que leva a posição de equilíbrio do corpoˆp(0) bl na nova posição ˆp(t) bl , no tempo t, ¯χ t 0 (ˆp b l).Com a associação de pesos aos corpos para cada vértice realizada nosoftware Blender (1), usamos nossas matrizes de transformações de cada corpopara recalcular as posições <strong>dos</strong> vértices. Então, podemos reescrever a equação(5-6) comoṽ i = ∑ δ i nmb ∑ µ κ ηκ b sin(2πν κ t + γ κ )⃗v i . (5-6)b κ=1Esta equação certamente é igual a:ṽ i = ∑bnm∑ (δb iηb κ) µ κ sin(2πν κ t + γ κ )⃗v i . (5-7)κ=1O termo (∑ b δ i b ηb κ) pode ser pré-calculado assim que obtemos os mo<strong>dos</strong>


Animação 3D em Tempo Real com Análises Harmônicas e Modal 72normais, e assim armazena<strong>dos</strong> para cada vértice v i e o κ-ésimo modo normal.Abaixo ilustramos alguns resulta<strong>dos</strong> do skinning.Figura 5.3: Skinning da malha da mão.Na ilustração 5.3 vemos o movimento sincronizado entre vértices do dedoindicador com seu esqueleto. A transformação do corpo foi obtida pelos mo<strong>dos</strong>normais, e os pesos nos vértices foram atribuí<strong>dos</strong> usando o software Blender2.61 (1).Figura 5.4: Renderização do skinning do modelo da mão.Na figura 5.4 mostramos a renderização do skinning mostrado na figura 5.3.


6Aspectos computacionais6.1Edição de filtrosNesta seção detalhamos como é feito o mapeamento das frequências <strong>dos</strong>om às frequências da malha em ambos os méto<strong>dos</strong>.6.1.1Filtros em Harmônicos de VariedadeOs filtros da equação (2-16) são sensíveis, então o mapeamento dasamplitudes das harmônicas do sinal para as amplitudes das harmônicas davariedade requer bastante cautela se for feito manualmente. Por isto, foidesenvolvida um sistema simples de galeria para ajudar o usuário a realizareste mapeamento.Suponha um sinal de som g(t), o qual queremos usar para deformarnossa malha. Queremos obter um filtro ϕ(ν) das amplitudes harmônicas ˜g(ξ)do sinal g(t), tal que a relação ϕ(ν) = Φ(˜g)(ν) seja não necessariamente linear.Além disso, o número de frequências #ξ do sinal quase sempre é diferente donúmero de harmônicas #ν da malha.Portanto, o mapeamento das amplitudes harmônicas do sinal para asamplitudes harmônicas da malha é realizado em duas etapas:– Usamos uma função de transferência t ∶ ξ ↦ ν ∈ {0, 1, . . . , #ν − 1}.– Usamos uma função de amplificação, a ∶ ν ↦ a(ν) ∈ R aplicadas nasamplitudes <strong>dos</strong> harmônicos da variedade.Como queremos que cada harmônico da malha receba contribuição deto<strong>dos</strong> os harmônicos do sinal, para por exemplo podermos associar umaharmônica a um instrumento, propomos o mapeamento entre harmônicosΦ t,a ∶ ˜g ↦ ϕ como:⎛Φ t,a (˜g)(ν) = a(ν) ⋅ ⎜⎝∑ξ∈t −1 (ν)⎞˜g(ξ) ⎟ + 1. (6-1)⎠


Animação 3D em Tempo Real com Análises Harmônicas e Modal 74Transfer:Mesh Frequencies:DeformedmeshAmplification:Sound Frequencies:SoundFigura 6.1: Filtro de combinações entre as funções de transferência e amplificação.A curva em cinza para a transferência corresponde ao mapeamentodireto de ξ = √ Λ t(ξ) .Na figura 6.1 ilustramos o mapeamento das funções de transferência ede amplificação. Desta forma, as frequências da malha irão receber contribuiçõesde todas as frequências do som t −1 (ν). Note que adicionamos um naequação, para manter a intuição usual de amplificação. Amplificando todas asfrequências da malha para 0 (isto é: a ≡ 0) obtemos φ = 1; logo não haverádeformação da malha. Note também que assim como as amplitudes do sompodem ser negativas, a amplificação também pode ser negativa.6.1.2Filtros em Análise ModalFigura 6.2: Filtro como a combinação das funções de transferência e deamplificação para os harmônicos do modo normal.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 75Analogamente aos Harmônicos de Variedade, dado um sinal de somg(t), a relação ϕ(ν) = Φ(˜g)(ν), entre o filtro e o sinal ˜g(ν) não precisaser necessariamente linear. Em geral o número de frequências #ξ do sinal édiferente do número de frequências #ν do Modelo Modal, e seria interessanteque cada corpo tivesse a influência de todas as harmônicas do sinal. Portantopodemos criar uma função de amplificação a ∶ ν → a(ν) ∈ R e uma funçãode transferência t ∶ ξ → ν tal que combinando estes construímos a aplicaçãoΦ a ∶ ˜g → ϕ como:⎛Φ a (ν) = a(ν) ⎜⎝∑ξ∈t −1 (ν)⎞˜g(ξ) ⎟ + 1. (6-2)⎠Com isso, cada corpo terá a influência de todas as harmônicas possíveisdo sinal, e se a amplificação for nula, a ≡ 0, os corpos permanecerão emsuas respectivas posições. Substituindo a função do filtro na equação originalteremos que:F (i) ==n−1∑ν=0n−1∑ν=0⎛ ⎛⎜a(ν)⎜⎝ ⎝⎛a(ν) ⎜⎝∑ξ∈t −1 (ν)∑ξ∈t −1 (ν)⎞˜g(ξ) ⎟⎠⎞+ 1⎟˜F (ν)H ν⎠⎞˜g(ξ) ⎟ ˜F (ν)H ν +⎠n−1∑ν=0˜F (ν)H ν .(6-3)Observe que a amplificação “a” pode assumir valores negativos, dado queas amplitudes das harmônicas podem ser negativas.6.2GaleriaNa animação usando Harmônicos de Variedades, o mapeamento ϕ t,a érepresentado por dois vetores: t ∈ N #ξ , e a ∈ R #ν . Podemos facilmente misturaras aplicações harmônicas por combinações desses vetores. Usando o vocabuláriode algoritmos genéticos, o mapeamento harmônico Φ t,a é representado por doiscromossomos a e t, os quais podem reproduzir pela combinação.Diferentes mapeamentos harmônicos são propostos ao usuário que, então,seleciona aqueles que deseja. A partir da escolha <strong>dos</strong> mapeamentos é geradauma nova galeria usando reprodução genética, até o usuário escolher apenasum mapeamento harmônico.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 766.2.1Geração de novas galerias por reprodução genéticaPara reproduzir novas galerias, S pares de mapeamentos seleciona<strong>dos</strong>pelo usuário são aleatoriamente escolhi<strong>dos</strong>. Como as funções t e a tem efeitoscomplementares, as reproduzimos independentemente. Isto reduz o tamanhoinicial da galeria. Na prática, isto significa que primeiro decidimos se combinamosas funções de transferência do par usando um experimento de 1 2 −Bernoulli(“cara” ou “coroa”). De forma similar, decidimos se as funções de amplificaçãoserão combinadas.Para combinar as funções de transferência de frequências t ′ e t ′′ , primeiroescolhemos um valor inteiro aleatoriamente n 0 ν, como uma variável aleatóriageométrica em {1, . . . , #ν}, e uma variável aleatória r 0com distribuiçãouniforme em [0, 1]. Selecionamos os n 0 ν primeiros coeficientes do vetor t comoos primeiros n 0 ν coeficientes de r 0 t ′ + (1 − r 0 )t ′′ . Novamente escolhemos n 1 ν ∈{1, . . . #ν} e r 1 ∈ [0, 1], e ajustamos r 1 de tal forma que n 0 ν +n 1 ν ≤ #ν (o objetivodo processo aleatório geométrico é reduzir os efeitos deste truncamento).Determinamos então os n 1 ν valores de t como descrito acima, e repetimos atécompletar todas as frequências. Realizamos as mesmas operações acima paraa combinação das amplificações.Este método de combinação evita produzir combinações que variembruscamente, quando compara<strong>dos</strong> a escolher aleatoriamente valores reais rem cada frequência.6.2.2Inicialização das galeriasInicialmente geramos uma galeria que poderia teoricamente gerar qualquermapeamento harmônico usando a reprodução citada na subseção 6.2.1.Como as reproduções das funções de transferência e de amplificação são independentes,podemos usar os S elementos da galeria inicial para gerar tantoas funções de transferência das frequências quanto as funções de amplificação.Isto reduz o tamanho da galeria inicial embora, geralmente seja preciso umareprodução a mais para obtermos mapeamentos interessantes.A primeira função de transferência da frequência é o mapeamento direto:⎧⎪t ini (ξ) = min ⎨ν; tal que ξ√ ⎫Λν ⎪⎬⎪⎭≤ . (6-4)ξ ⎪⎩#ξ Λ #νξIsto nos assegura que, se existe um único ν tal queξ #ξ≤ √ Λ νΛ #ν,então t ini (ξ) = ν. Esta função mapeia as baixas frequências do som nasbaixas frequências da malha, similarmente para as altas. Podemos definir


Animação 3D em Tempo Real com Análises Harmônicas e Modal 77Figura 6.3: Galeria inicial do modelo polvo e suas respectivas funções deamplificação e transferência. A frequência do som é ilustrada na parte de baixona figura.t rev = #ν − t ini que mapeia as altas frequências do som nas baixas frequências,e vice-versa.Geralmente, a alteração das baixas frequências da malha nos dão efeitosmais visíveis. Portanto, definimos as funções de transferência de frequênciasdas galerias iniciais como transferências concentradas nas baixas frequências:t(ξ) = t ir (ɛξ), onde t ir é t ini ou t rev e ɛ ∈ {0, 1, 2 S , 2 2 S , 3 2 S, . . .}. O primeiro valorpara ɛ, isto é, ɛ = 0, é um mapeamento constante para a frequência mais baixae a frequência mais alta. Isto nos assegura que qualquer função de transferênciapode ser gerada pelas combinações.As funções de amplificação da galeria inicial são simples filtros passabaixa,com fatores negativos ou positivos. O intervalo das frequênciasharmônicas da variedade 0, . . . , #ν − 1 é dividido em intervalos I ɛ para ɛ ∈{0, 1, S 2 , 2 S 2 , 3 S 2, . . .}. Depois definimos a função de amplificação para a primeirametade da galeria a ɛ (ν) = M a se ν ∈ I ɛ e a ɛ (ν) = 0 caso contrário, onde M a é ofator máximo de amplificação. A outra metade é definida similarmente usando−M a .Se as amplitudes do som são normalizadas a [−1, 1] e se a malha érazoavelmente suave, a ordem de grandeza de M a é 5.000. Como queremosenfatizar as baixas frequências, definimos os intervalos I ɛ em [ɛ 2 , (ɛ + 2 S )2 ].


Animação 3D em Tempo Real com Análises Harmônicas e Modal 786.3Efeitos complementaresPara recalcular as normais em Harmônicos de Variedade, usamos umgeometry shader que calcula, para cada triângulo, uma normal constante.Esta normal é usada em uma iluminação por pixel via o fragment shader.Entretanto, uma normal constante nos dá um shading facetado. Para obterresulta<strong>dos</strong> mais suaves, no geometry shader resolvemos ponderar a normalconstante do triângulo com a normal original do vértice.6.4(a): Modelo sem deformaçãocom as normais originais.6.4(b): Modelo deformado com asnormais originais.6.4(c): Modelo deformado com asnormais deformadas, flat normals6.4(d): Modelo deformado comnormais ponderadas com peso 0, 4para normais deformadas.Outro efeito complementar em Harmônicos de Variedade, foi permitir oreuso de mapeamentos harmônicos. O principal obstáculo é que o número defrequências da variedade #ν pode ser diferente de modelo para modelo. Como


Animação 3D em Tempo Real com Análises Harmônicas e Modal 79solução, normalizamos os valores da imagem de t para um intervalo constante[0, 1] ∶ ¯t(ξ) = t(ξ)#ν e adaptamos o mapeamento Φ t,a para⎛⎞Φ t,a (˜g)(ν) = a(ν) ⋅⎜ ∑ ˜g(ξ)⎟ + 1. (6-5)⎝ξ∈¯t −1 ( ν#ν ) ⎠O cálculo das normais na animação com Análise Modal foi baseado noartigo (21), e detalhamos a seguir. O cálculo envolve apenas um geometryshader e um passo de “render-to-normal-buffer”. O geometry shader recebecada triângulo e emite três pontos, posiciona<strong>dos</strong> pelo índice de cada vértice dotriângulo. A cor de cada ponto é dada por d −1 (v)n T , onde d −1 (v) é a inversado grau do vértice v e n T é a normal do triângulo escalonado pela área domesmo.Os valores de d −1 (v) são armazena<strong>dos</strong> em textura, e escalona<strong>dos</strong> paranão acumular além de 1 2(ou seja, são dividi<strong>dos</strong> por duas vezes a maior área damalha). Assim a normal de cada vértice é dada pela média das normais dasfaces adjacentes. Esta soma final é obtida usando uma função de blending earmazenada em um framebuffer.6.4Implementação na GPU do filtro harmônicoA principal dificuldade em trabalhar com música em tempo real é calculare renderizar cada elemento da galeria sincronizado com a música.Se tivermos S elementos na galeria, cada qual é uma malha com n vérticescom #ν frequências harmônicas, e #ξ frequências de música, um único framerealiza O(S ⋅ #ν ⋅ #ξ ⋅ 3n) operações.Portanto, propomos uma implementação do filtro harmônico da variedadena GPU, enquanto a decomposição harmônica é realizada na CPU.• Implementação Para a implementação do código em placa gráficafoi usada a linguagem GLSL (3). Usamos um único fragment shader,que calcula o sinal filtrado F ϕ para cada coordenada x, y, e z juntocom um passo de “render-to-vertex-buffer” para copiar o resultado nascoordenadas <strong>dos</strong> vértices.Enviamos para GPU os harmônicos da variedade por textura: umatextura ˜xỹ˜z que contém as amplitudes harmônicas ˜x(ν), ỹ(ν), e ˜z(ν)da malha original, uma textura d xyz contendo a soma das contribuiçõesdas altas frequências para cada componente e uma textura H ν contendoos autovetores <strong>dos</strong> harmônicos da variedade. O filtro ϕ deve ser enviadopara GPU a cada galeria em cada frame. Como, ϕ possui um tamanho


Animação 3D em Tempo Real com Análises Harmônicas e Modal 80menor que as frequências de som ˜g e os vetores t e a, nós o calculamosna CPU e o enviamos como uma textura 1D φ.• Armazenamento Todas as texturas são armazenadas usando floats 32bits para manter a precisão das coordenadas <strong>dos</strong> vértices. Como o númerode vértices é geralmente maior que o tamanho máximo das texturas 1D,usamos duas coordenadas de textura em {0, . . . , [ √ n] − 1} como índices<strong>dos</strong> vértices. As contribuições das altas frequências são armazenadascomo textura 2D RGB de tamanho [ √ n] × [ √ n], onde as coordenadassão mapeadas para componentes de RGB.Como o número de frequências da variedade #ν cabe em uma linha detextura, as amplitudes harmônicas originais ˜xỹ˜z são armazenadas comotextura 1D RGB de tamanho #ν, onde os componentes ˜x, ỹ, e ˜z sãomapea<strong>dos</strong> para RGB.Finalmente, o escalar H ν e o φ do autovetor harmônico de n coordenadase o filtro podem ser armazena<strong>dos</strong> nos componentes RGBA para otimizarespaço: φ é então uma textura [ #ν4 ] 1D e H ν uma textura [ √ n] × [ √ n] ×[ #ν4] 3D RGBA.• Fragment Shader Após carregar todas as texturas, a renderização deum único quadrado de tamanho [ √ n] × [ √ n] irá chamar o fragmentshader para cada índice de vértice e recalcular as posições <strong>dos</strong> vérticescomo framer color, veja figura 6.4. O fragment shader renderiza parauma frame buffer as novas posições <strong>dos</strong> vértices, o qual é copiado paraum vertex buffer na GPU. O shader recebe uma variável uniforme1δν =(4#ν−1), a qual é o incremento normalizado para a iteração dafrequência da variedade dentro de coordenadas de textura normalizada.6.5Implementação na GPU do filtro modalAo recalcular as posições <strong>dos</strong> corpos a partir <strong>dos</strong> mo<strong>dos</strong> normais emcada tempo, guardamos as transformações obtidas que serão usadas para oskinning de cada vértice. Enviamos então apenas duas texturas para a GPU:no pré-processamento a textura ˜xỹ˜z que contém as posições <strong>dos</strong> vértices comas suas respectivas transformações pré-calculadas para cada modo normal, e acada quadro a textura φ contendo os produtos µ sin(2πνt + γ) de cada modonormal.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 81uniform sampler1D ˜xỹ˜z ;uniform sampler2D dxyz ;uniform sampler1D H k ;uniform sampler1D φ ;uniform float δk ;void main(){}vec3 texcoord = gl TexCoord[0].stp;vec3 pos = texture2D(dxyz, texcoord.st).xyz;for( float k = 0.0; k ≤ 1.0; ){texcoord.p = k;vec4 H = texture3D( H k ,texcoord);vec4 f = texture1D( φ ,k);vec3 ˜xỹ˜z 0 =texture1D(˜xỹ˜z ,k).xyz;k+= δk;vec3 ˜xỹ˜z 1 =texture1D(˜xỹ˜z ,k).xyz;k+= δk;vec3 ˜xỹ˜z 2 =texture1D(˜xỹ˜z ,k).xyz;k+= δk;vec3 ˜xỹ˜z 3 =texture1D(˜xỹ˜z ,k).xyz;k+= δk;pos += f[0] * H[0] * ˜xỹ˜z 0 + f[1] * H[1] * ˜xỹ˜z 1 +f[2] * H[2] * ˜xỹ˜z 2 + f[3] * H[3] * ˜xỹ˜z 3 ;}gl FragColor.rgb = pos.xyzFigura 6.4: Fragment Shader para o filtro <strong>dos</strong> harmônicos da variedade.Cada elemento de φ é enviado a galeria correspondente ao seu modoe como, em geral, a quantidade de mo<strong>dos</strong> é pequena, eles são calcula<strong>dos</strong>diretamente na CPU.• Armazenamento das texturas. Como cada transformação contém 3componentes de translação (tx, ty, tz) e mais 3 de rotação (rx, ry, rz),além de termos que guardar a posição inicial do vértice, precisamos deum espaço de pelo menos 2 ∗ #ν + 1 para 1 cada vértice, onde #ν é onúmero de mo<strong>dos</strong> obti<strong>dos</strong> no Modelo Modal. Portanto, os escalares datextura ˜xỹ˜z são armazena<strong>dos</strong> em uma textura 3D RGB, de dimensões√ #v ×√ #v × (2 ∗ #ν + 1), onde #v corresponde ao número de vértices.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 82˜xỹ˜z = [x 0 , y 0 , z 0 , rx 0 , ry 0 , rz 0 , tx 0 , ty 0 , tz 0 , x 1 , y 1 , . . . x #v , y #v , z #v , rx #v ,ry #v , rz #v , tx #v , ty #v , tz #v ].A textura φ é apenas um vetor de textura 1D de float, já que constaapenas os #ν escalares µ sin(2πνt + γ) de cada modo normal.• Fragment Shader Após carregar todas as texturas, chamamos o fragmentshader de cada vértice para recalcular as novas posições <strong>dos</strong> vérticescomo cores RGB, veja figura 6.5. O fragment shader processa então umframe buffer contendo as novas posições, o qual é copiado para um vertexbuffer na GPU. O shader recebe uma variável uniforme que é um incre-1mento normalizado dm =2∗#ν+1que são normalizadas.para iterar nas coordenadas da textura6.6Detalhes de implementaçãoAnálise Harmônica em Variedades Para o método de Harmônicos emVariedade usamos a estrutura de da<strong>dos</strong> Compact Half Edge (19) paraarmazenar a malha.Para o cálculo <strong>dos</strong> autovetores e <strong>dos</strong> autovalores harmônicos da variedadeusamos a biblioteca Scalable Library for Eigenvalue Problem Computations(SLEPc) (13). SLEPc além de apresentar um grande número deméto<strong>dos</strong> para cálculo de autovetores, também apresenta interfaces parapacotes bem conheci<strong>dos</strong> de autovalores.Para a decodificação do som, usamos a biblioteca FFmpeg(7) e aOpenAL (14) para a decodificação e monitoramento do som. Paraa configuração do áudio nos baseamos no tutorial disponível emkcat.strangesoft.net/openal.html.Análise Harmônica combinada com Modal em Modelos Articula<strong>dos</strong>O ambiente em que desenvolvemos as animações usando Análise Modale Harmônica para modelos articula<strong>dos</strong> foi o QtCreator. No cálculodas matrizes e do problema de autovalores usamos a biblioteca GNUScientific Library (GSL) (2). A GSL oferece um grande número de rotinasmatemáticas em diversas áreas e desenvolvida para a linguagem C eC++.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 83uniform sampler3D ˜xỹ˜z ;uniform sampler1D φ ;uniform float dm ;void main(){}vec3 texcoord = vec3(0.0,gl TexCoord[0].st ) ;vec3 v = texture3D( ˜xỹ˜z, texcoord).xyz;vec3 tm = vec3(0.0, 0.0, 0.0);vec3 rm = vec3(0.0, 0.0, 0.0);for( texcoord.s = dm; texcoord.s ≤ 1.0; ){float f = texture1D( φ ,texcoord.s).x;tm += f * texture3D( ˜xỹ˜z, texcoord ).xyz ; texcoord.s += dm ;rm += f * texture3D( ˜xỹ˜z, texcoord ).xyz ; texcoord.s += dm ;}v+=tm;float theta = length( rm ) ;rm / =theta;float c = cos(theta) ;gl FragColor.rgb = c∗v+sin(theta)∗ cross(rm,v) + (1.0-c)∗dot(rm,v)∗rm;Figura 6.5: Fragment Shader para o filtro <strong>dos</strong> harmônicos no modal.Assim como para Harmônicos em Variedade, para a decodificação do som,usamos a biblioteca FFmpeg (7) e a OpenAL (14) para a decodificaçãoe monitoramento do som. Além disso, também usamos as mesmasconfigurações de som do Análise Harmônica em Variedades.Como estrutura de da<strong>dos</strong> usamos listas de instâncias de classes parajuntas e corpos rígi<strong>dos</strong>. Para o armazenamento e manipulação da malha,usamos a estrutura de da<strong>dos</strong> Compact Half Edge (19).1


7Resulta<strong>dos</strong>7.1Harmônicos de VariedadeComparamos o processo de implementação <strong>dos</strong> filtros harmônicos naCPU e na GPU. Obviamente, era esperado que o desempenho da implementaçãoda GPU superasse o da CPU. Na tabela (7.1) mostramos o resultadoda deformação de uma única malha na CPU, com 6 e 12 deformações.Validamos que a implementação na GPU suporta processamento emtempo real para manter a sincronização com o som. Estas experiências permitemestimar o tamanho da galeria apropriada, dependendo da placa gráfica (vertabela (7.1)). Concluímos que para os modelos com cerca de 50.000 vértices,um tamanho correto para a galeria seria entre 6 e 12 em uma GeForce 130 com48 núcleos de 500 MHz.Testamos a visualização da música em diferentes modelos em tempo real.Nós incluímos uma chamada que atualiza o filtro a cada 50 milissegun<strong>dos</strong>, e arenderização é feita seguindo o ciclo de renderizações, tal que mesmo com umgrande número de galerias, o que poderia prejudicar a renderização em temporeal da aplicação, o som não para de tocar.Para finalizar, adicionamos uma variável m ∈ [0, 1] que controla asuavidade com que as frequências são passadas para a malha. Então asamplitudes associadas as frequências do som são sempre ponderadas:˜g(ξ) new = m ⋅ ˜g(ξ) old + ˜g(ξ).Isto evita os efeitos trêmulos durante a animação com músicas, paramúsica muito ritmada. Veja os exemplos ilustra<strong>dos</strong> nas figuras 7.1 e 7.2.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 85Fig. 5.Gallery after one reproduction from the 1 st , 4 th and 5 th items of Fig. 3 in reading order, with the reproduced transfer and amplification functions.Figura 7.1: Galeria depois de uma reprodução <strong>dos</strong> itens 1, 4 e 5 da figura 6.3nesta ordem de leitura.B. Tuning through design galleriesThe filter design above gives a concise representation of theof the pair using a 1 2-Bernoulli trial (“heads or tails”). Wedecide in a similar manner if the amplification functions willharmonic mapping t,a from sound harmonic amplitudes to be combined.manifold harmonic amplitudes. Indeed t,a is represented as The combination of the frequency transfer functions t 0two vectors: t 2 N #! is an integer vector of size #!, and a 2 and t 00 of the pair is done as follow. First we randomlyR #k is a real vector of size #k. This allows to easily mix twoharmonic mappings by combinations of those vectors. Usingvocabulary from genetic algorithms, the harmonic mappingchoose an integer value n 0 k , as a geometric random variable in{1,...#k}, and a random real value w 0 uniformly in [0, 1].We then set the first n 0 k coefficients of vector t as the firstt,a is represented by two chromosomes a and t, which can n 0 k coefficients of w0 · t 0 +(1 w 0 ) · t 00 . We choose againreproduce by combination.This leads to a direct design gallery interface, where differentharmonic mappings are proposed to the user, who canselect the ones he likes. From this selection, a new gallery isgenerated using genetic reproduction, until the user choosesonly one harmonic mapping, as explained in the next section.The following section will detail the initial gallery creation.The harmonic mapping can then be directly edited from thetwo curves of t and a.random values n 1 k 2{1,...#k} and w1 2 [0, 1], and clampn 1 k to ensure n0 k + n1 k apple #k (the geometric random processintends to reduce the effect of this clamping). We then set thefollowing n 1 k values of t as above, and repeat until completingall the frequencies. We perform the same operations for theamplifications (see Figs. 3 and 5).This combination method avoids producing combinationthat varies too quickly, as compared to randomly choosingreal values w at each frequency.C. ReproductionThe reproduction generates a new gallery of S harmonicmappings from a selection of old mappings. To do so, S pairsof distinct selected old mappings are randomly chosen. Eachpair is then combined into a new mapping as follows.Since the frequency transfer and amplification functionst and a have complementary effects, we reproduce themindependently. This also reduces the initial gallery size, asexplained in the next subsection. In practice, this means thatwe first decide if we combine the frequency transfer functionsD. Gallery initializationWe generate an initial gallery (see Fig. 3) that couldtheoretically generate any harmonic mapping by the abovereproduction. Since the reproduction of the frequency transferand amplification are independent, we can use the S elementsof the initial gallery to span the frequency transfer functionsand the same S elements to span the amplification functions.This reduces the size of the initial gallery, although it generallyrequires one more reproduction to get interesting mappings.Fig. 11.REFERENCES[1] B. Vallet and B. Lévy, “Spectral geometry processing with manifoldharmonics,” in Computer Graphics Forum, vol. 27, no. 2, 2008, pp.251–260.[2] F. de Moura Pinto and C. M. D. S. Freitas, “Two-level interaction transferfunction design combining boundary emphasis, manual specificationand evolutive generation,” in Sibgrapi. IEEE, 2006, pp. 281–288.[3] A. Bordignon, L. Sigaud, G. Tavares, H. Lopes, T. Lewiner, andW. Morgado, “Arch generated shear bands in granular systems,” PhysicaA: Statistical Mechanics and its Applications, vol. 388, no. 11, pp. 2099– 2108, 2009.[4] H. Jenny, Cymatics: A Study of Wave Phenomena & Vibration, 3rd ed.Macromedia, 2001.[5] R. W. Clough and J. Penzien, Dynamics of Structures. Mcgraw-Hill,1975.[6] A. Pentland and J. Williams, “Good vibrations: modal dynamics forgraphics and animation,” Siggraph, vol. 23, no. 3, pp. 207–214, 1989.[7] C. Yinghui, W. Jing, and L. Xiaohui, “Real-time deformation usingmodal analysis on graphics hardware,” in Graphite. ACM, 2006, pp.173–176.[8] J. F. O’Brien, C. Shen, and C. M. Gatchalian, “Synthesizing soundsFrames of rock music visualization using the armadillo model.Figura 7.2: Visualização de música rock no armadillo.[13] K. Wang, M. Luo, A. Bors, and F. Denis, “Blind and robust meshwatermarking using manifold harmonics,” in ICIP. IEEE, 2009, pp.3657–3660.[14] M. Ovsjanikov, J. Sun, and L. Guibas, “Global intrinsic symmetries ofshapes,” in SGP. Eurographics, 2008, pp. 1341–1348.[15] H.-Y. Wu, T. Luo, L. Wang, X.-L. Wang, and H. Zha, “3D shape retrievalby using manifold harmonics analysis with an augmentedly local featurerepresentation,” in VRCAI. ACM, 2009, pp. 311–313.[16] J. Marks, B. Andalman, P. Beardsley, W. Freeman, S. Gibson, J. Hodgins,T. Kang, B. Mirtich, H. Pfister, W. Ruml et al., “Design galleries:A general approach to setting parameters for computer graphics andanimation,” in Siggraph. ACM, 1997, p. 400.[17] “The OpenGL Shading Language v 4.0,” 2010, www.opengl.org/ documentation/glsl.[18] Apple, “PBORenderToVertexArray: render-to-vertex-array using FBO,PBO and VBO,” 2006, developer.apple.com/ mac/ library/ samplecode/PBORenderToVertexArray.[19] F. Patin, “Beat detection algorithms,” 2003, www.gamedev.net/ reference/programming/ features/ beatdetection.[20] V. Hernandez, J. Roman, and V. Vidal, “SLEPc: A scalable and flexibletoolkit for the solution of eigenvalue problems,” Transactions onMathematical Software, vol. 31, no. 3, p. 362, 2005.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 86#verts #freqs pre- CPU GPU GPUn #k process S=1 S=6 S=12modelo secs fps fps fpspig 1 843 184 4 54.2 203.0 122.8triceratops 2 832 256 7 46.9 153.9 63.6neptune 9 392 276 32 12.7 58.6 31.2multitorus 11 898 270 43 11.5 73.9 40.1dinosaur 14 054 533 74 4.7 28.3 13.9octa 15 136 529 25 4.1 26.8 13.2octopus 20 351 546 129 3.0 21.4 7.1alien 24 988 540 232 3.4 22.4 12.1david 24 988 804 116 2.6 14.8 7.3david head 30 058 1317 232 1.8 15.0 7.0cat 30 059 271 379 9.6 45.7 23.0gargoyle 30 059 1052 96 2.1 13.7 6.9bunny 34 834 1070 478 1.7 12.1 5.8buste 37 874 1075 329 1.5 13.4 3.4blooby 42 432 1065 553 1.5 12.5 7.5egea 63 739 275 718 0.9 7.2 3.2head 65 002 1607 739 0.5 8.7 4.3armadilo 86 488 2376 1 134 0.2 10.3 3.4Tabela 7.1: To<strong>dos</strong> os modelos são normaliza<strong>dos</strong> em um box volumétrico [−1, 1] 3, e a galeria de S itens é renderizada em uma janela de resolução 1024 × 768.To<strong>dos</strong> os testes são realiza<strong>dos</strong> em um processador 3.06GHz com uma GeForceGT 130 com 512MB de RAM. A velocidade da deformação é medida emframe por segun<strong>dos</strong> (fps), enquanto o pré-processamento do cálculo das basesharmônicas é expresso em segun<strong>dos</strong>.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 877.2Análise Harmônica combinada com ModalNossos primeiros testes foram sobre a eficácia do skinning. Devido adificuldade em encontrar modelos articula<strong>dos</strong> com rigging disponíveis na web,construímos nossos próprios modelos no software Blender 2.61 (1).Foram realiza<strong>dos</strong> testes simples, como animação com um único modo eamplitudes baixas à movimentos mais complexos envolvendo combinações demais de um modo normal e amplitudes mais altas. A possibilidade do skinningfuncionar com deformações mais exageradas é menor. De todas as formas,tivemos resulta<strong>dos</strong> bastantes favoráveis com nosso skinning. (Veja as imagens5.3 e 7.3).Figura 7.3: Zebra em um único modo de freqüência 0.213596 Hz e amplitude1.5.Posteriormente, fizemos experiências com a visualização de música. Usamosdiversos tipos de música para verificar a influência das frequências. O testerealizado com o modelo da mão com uma música de rock foi aquele em queocorreram maiores deformações. No teste com o modelo do laço onde usamosuma música de forró (cujas frequências, no nosso caso, são tipicamente maioresque as da música de rock) a oscilação foi mais rápida. Veja figuras 5.4, 7.5, efinalmente 7.6.Por fim, testamos a performance do uso da placa. Verificamos para osmodelos cita<strong>dos</strong> que, graças ao uso da placa gráfica, o processamento se deu emtempo real. Fizemos uma comparação análoga à tabela 7.2, onde analisamoso tempo de processamento e renderização de um único modo na CPU, e naGPU.To<strong>dos</strong> os testes foram executa<strong>dos</strong> em um computador com um processadorde 3.06GHz com uma GeForce GT 130 com 512MB de RAM. Verificamos


Animação 3D em Tempo Real com Análises Harmônicas e Modal 88Figura 7.4: Simulando a deformação do laço sob uma música de forró.Figura 7.5: Modelo do Smurf ao som de MPB.Figura 7.6: Zebra sob a influência de uma música francesa.que para este caso um tamanho razoável para a galeria teria entre 9 a 15 mo<strong>dos</strong>normais.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 89#verts#freqs pre- CPU GPUn #ν process NM=1 NM = 1modelo secs fps fpszebra 572 23 0.021 3.718 13.727laço 576 13 0.055 3.717 13.59mão 762 19 0.024 3.707 14.1smurf 32168 36 0.029 3.826 4.74Tabela 7.2: A galeria de NM itens é renderizada em uma janela de resolução1024 × 768. To<strong>dos</strong> os testes são realiza<strong>dos</strong> em um processador 3.06GHz comuma GeForce GT 130 com 512MB de RAM. A velocidade da deformação émedida em frame por segun<strong>dos</strong> (fps), enquanto o pré-processamento do cálculodas bases harmônicas é expresso em segun<strong>dos</strong>.


8Conclusão e trabalhos futurosApresentamos nesta tese animações em tempo real geradas por deformaçõesde malha sob a influência de sinais de som. Com o uso da AnáliseHarmônica conseguimos obter as amplitudes das harmônicas que permitem asdeformações acompanhar as “vibrações” das músicas.As deformações foram feitas em malhas e modelos articula<strong>dos</strong> 3D, usandoduas abordagens diferentes. Na primeira abordagem, usando a proposta deVallet e Lévy, fazemos o mapeamento das frequências do som nas frequênciasda malha usando uma galeria com reprodução genética. Uma sutileza destetrabalho vem da etapa de mapeamento das frequências. Os filtros harmônicossão bem sensíveis no sentido em que, pequenas variações nos filtros podemgerar grandes deformações na malha.Como solução propomos o uso da galeria na qual o usuário pode navegare escolher os mapeamentos até obter uma deformação interessante dentro desua expectativa. Porém, o uso da galeria nos impõe o desafio da renderização dadeformação da malha em sincronia com a música. A ideia então foi pré-calcularas harmônicas da malha na CPU, e enviá-las para GPU para a renderizaçãodas deformações. Assim, a decodificação da música e o cálculo das harmônicasda malha, não interferem na performance da galeria.Na outra abordagem, lidamos com modelos articula<strong>dos</strong>. Os esqueletos sãosimula<strong>dos</strong> por um sistema massa-mola com restrições. Com os mo<strong>dos</strong> normaisobti<strong>dos</strong> pela Análise Modal, conseguimos construir uma base de movimentosnaturais do modelo. Como o próprio nome diz, essa base é tal que podemoscombinar dois ou mais mo<strong>dos</strong> para obter animações específicas.Os mo<strong>dos</strong> normais nos fornecem transformações para cada corpo rígidodo modelo. Com isto, incorporamos tais transformações com um skinning, deforma que as malhas se deformem suavemente com os corpos.A chave desta versão então foi, ao invés de mapear as frequências <strong>dos</strong>om nas harmônicas da malha, mapeá-las às frequências naturais associadasaos mo<strong>dos</strong> normais do modelo. Desta forma, obtemos deformações <strong>dos</strong> nossosmodelos a partir de uma associação indireta das frequências do som aos


Animação 3D em Tempo Real com Análises Harmônicas e Modal 91vértices da malha. Uma vantagem é que o usuário pode escolher os mo<strong>dos</strong>,e consequentemente as frequências, de forma que as frequências mais altasque em geral nos dão movimentos mais bruscos, pode não interferir tanto nasdeformações.Nos modelos articula<strong>dos</strong> usamos apenas as juntas de revolução, uma vezque ela satisfazia nossas principais necessidades, além de considerarmos apenasas forças provenientes <strong>dos</strong> torques das juntas. Mas, a mesma ideia pode serusadas para diferentes juntas. Outra aplicação interessante, seria a animaçãode modelos deformáveis elasticamente, podendo ou não ser influencia<strong>dos</strong> porforças e torques causa<strong>dos</strong> por movimentos secundários passivos de outroscorpos do modelo, e pelo ambiente.


Referências Bibliográficas[1] Blender, 1999.[2] GSL - GNU Scientific Library, 2009.[3] The openGL shading language v 4.0, 2010.[4] ARNOLD, D. N.; FALK, R. S. ; WINTHER, R. Finite element exteriorcalculus, homological techniques, and applications. Acta Numerica, v.15,p. 1–155, 2006.[5] BARZEL, R.; BARR, A. H. A modeling system based on dynamicconstraints. SIGGRAPH, p. 179–188, 1988.[6] BEER, F. P. Mecânica Vetorial para Engenheiros - Estática.Makron Books.[7] BELLARD, F. Ffmpeg, 2004.[8] DESBRUN, M. Discrete differential forms and applications tosurface tiling. In: SOCG, p. 40, 2006.[9] FEATHERSTONE, R. Rigid body dynamics algorithms. Springer,2008.[10] GOLUB, G. H.; VAN LOAN, C. F. Matrix computations. JohnsHopkins Studies in the Mathematical Sciences, 1996.[11] GRZESZCZUK, R.; TERZOPOULOS, D. Automated learning ofmuscle-actuated locomotion through control abstraction. In:SIGGRAPH, p. 63 – 70, 1995.[12] HECKER, C.; RAABE, B.; ENSLOW, R. W.; DEWEESE, J.; MAY-NARD, J. ; VAN PROOIJEN, K. Real-time motion retargeting tohighly varied user-created morphologies. In: SIGGRAPH, p. 27:1–27:11, 2008.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 93[13] HERNANDEZ, V.; ROMAN, J. ; VIDAL, V. SLEPc: A scalable andflexible toolkit for the solution of eigenvalue problems, volume 31,p. 362. 2005.[14] HIEBERT, G. OpenAL programmer’s guide, 2005.[15] HODGINS, J. K.; POLLARD, N. S. Adapting simulated behaviorsfor new characters. In: SIGGRAPH, p. 153 – 162, 1997.[16] HODGINS, J. K.; WOOTEN, W. L.; BROGAN, D. C. ; O’BRIEN, J. F.Animating human athletics. In: SIGGRAPH, p. 71 – 78, 1995.[17] ISAACS, P. M.; COHEN, M. F. Controlling dynamic simulation withkinematic constraints, behavior functions and inverse dynamics. ComputerGraphics, v.21, n.4, p. 215–224, 1987.[18] KRY, P. G.; REVERET, L.; FAURE, F. ; CANI, M.-P. Modal locomotion:Animating virtual characters with natural vibrations. Computer GraphicsForum, v.28, p. 289–298, 2009.[19] LAGE, M.; LEWINER, T.; LOPES, H. ; VELHO, L. CHF: a scalabletopological data structure for tetrahedral meshes. SIBGRAPI, p. 349–356,2005.[20] LEWINER, T.; VIEIRA, T.; BORDIGNON, A.; CABRAL, A.; MAR-QUES, C.; PAIXAO, J.; CUSTODIO, L.; LAGE, M.; ANDRADE, M.;NASCIMENTO, R.; BOTTON, S. D.; PESCO, S.; LOPES, H.; MELLO,V.; PEIXOTO, A. ; MARTINEZ, D. Tuning manifold harmonics filters.In: SIBGRAPI, p. 110–117, 2010.[21] LEWINER, T.; VIEIRA, T.; MARTÍNEZ, D.; PEIXOTO, A.; MELLO,V. ; VELHO, L. Interactive 3d caricature from harmonic exaggeration.Computers and Graphics, v.35, n.3, p. 586–595, 2011.[22] MCGEER, T. Passive dynamic walking. The International Journal ofRobotics, v.9, n.2, p. 62–82, 1990.[23] NAYLOR, A.; SELL, G. Linear Operator Theory in Engineeringand Science. Applied Mathematical Sciences. Springer, 2000.[24] O’BRIEN, J. F.; SHEN, C. ; GATCHALIAN, C. M. Synthesizingsounds from rigid-body simulations. In: SCA, p. 175–181, 2002.


Animação 3D em Tempo Real com Análises Harmônicas e Modal 94[25] PENTLAND, A.; WILLIAMS, J. Good vibrations: modal dynamicsfor graphics and animation. In: SIGGRAPH, p. 215–222, 1989.[26] SHABANA, A. A. Computational Dynamics. Wiley-Interscience, 2001.[27] SUN, H. C.; METAXAS, D. N. Automating gait generation. In:SIGGRAPH, p. 261–270. ACM, 2001.[28] TAUBIN, G. A signal processing approach to fair surface design.In: SIGGRAPH, p. 351–358, 1995.[29] VALLET, B.; LEVY, B. Spectral geometry processing with manifoldharmonics. Computer Graphics Forum, v.27, n.2, p. 251—260, 2008.[30] WITKIN, A.; KASS, M. Spacetime constraints. In: SIGGRAPH, p.159–168, 1988.[31] WU, J. C.; POPOVIĆ, Z. Realistic modeling of bird flight animations.ACM Transactions on Graphics, v.22, n.3, p. 888–895, 2003.[32] YINGHUI, C.; JING, W. ; XIAOHUI, L. Real-time deformation usingmodal analysis on graphics hardware. In: SIGGRAPH ASIA, p. 173–176, 2006.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!