tese 18,9 mb

125
Animação Anatomicamente Correcta de um Humanóide Tiago Guiomar Ribeiro Dissertação para obtenção do Grau de Mestre em Engenharia Informática e de Computadores Júri Presidente: Prof. José Carlos Martins Delgado Orientador: Prof. João Madeiras Pereira Co-Orientador: Prof. José Braz Vogal: Prof. António Veloso Maio 2011

Upload: dangdan

Post on 08-Jan-2017

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tese 18,9 MB

Animação Anatomicamente Correcta de umHumanóide

Tiago Guiomar Ribeiro

Dissertação para obtenção do Grau de Mestre emEngenharia Informática e de Computadores

Júri

Presidente: Prof. José Carlos Martins DelgadoOrientador: Prof. João Madeiras PereiraCo-Orientador: Prof. José BrazVogal: Prof. António Veloso

Maio 2011

Page 2: Tese 18,9 MB
Page 3: Tese 18,9 MB

Agradecimentos

Quando começamos a escrever uma dissertação, esta é uma daquelas páginas que deixamos embranco, para o final, questionando-nos apenas por um momento de quais serão os nomes que irão aquificar.Essa lista é tanto inimaginável a início, como indescritível no fim. Se apenas uma página pudessedescrever todas as pessoas a quem preciso de agradecer, isso apenas reflectiria o quão sossegado foi esteperíodo.Mas definitivamente não chega.

Ao longo de cerca de dois anos a minha vida foi rodeada de familiares, amigos e colegas que pre-senciaram as últimas etapas do meu curso. Desde o último exame, à última aula da última cadeira,aos momentos em que eu pensava que a tese corria nas calmas, àqueles em que desesperei porque nadacorria bem, e finalmente até ao ponto em que tudo se iluminou e consegui terminar.Finalmente, sinto-me feliz com o meu trabalho, não apenas pelo que dele resultou, mas porque tive tantagente a apoiar-me e a acreditar em mim, tantos amigos que fui capaz de manter mesmo quando o tempoparecia nem sequer permitir proferir a palavra "Olá".Os meus pais são sem dúvida aqueles a quem mais alto ergo com um grande Obrigado. Por tudo o quederam para que eu pudesse estar onde estou hoje, e porque quando eu dizia que não conseguia, elesconvenciam-me do contrário. Ao lado deles, as minhas irmãs e a minha avó foram as pessoas que sempreacreditaram em mim mais do que eu próprio acredito.O meu orientador, o Prof. João Madeiras Pereira, e o meu co-orientador, Prof. José Braz mostraram-mesempre qual o caminho que eu devia seguir quando eu me perdia do mapa. A eles agradeço a suapaciência e respostas quando eu próprio acreditava que o trabalho seria um fracasso.Alguns amigos têm os seus nomes fortemente gravados nas entrelinhas deste trabalho. O Pedro Lopesfoi um amigo e um mentor que a todo o momento se certificava de que o meu trabalho correria damelhor forma possível; a Ângela nunca perdeu o fôlego ou o sorriso para me motivar a trabalhar quandoa vontade perecia; o Sérgio soube sempre ouvir os meus problemas na companhia de uma cerveja. OPimenta, a Ana, a Vivi, o Daniel, o Vasco, a Tânia, a Teresa, o Jerónimo, o Guilherme, o Fraga, o Tiago,o Semedo, a Diana, o Miguel, o João Estrela, o João Carmo, o Luís, a Rita, a minha afilhada Raquel, aSarah, o Dário, o Nuno, a Sara, a Isabel e a Mara são algumas das pessoas que mais me presenciaramcom a sua paciência, preocupação e apoio, alguns deles desde o início deste curso, já há sete anos atrás.A Nessa, o Humberto, o Vítor, o Catarino, o Manel, e tantos outro amigos que guardo há anos desdeAveiro, mesmo à distância, mantiveram-se próximos, guardando-me sempre aquelas palavras que sóquem me conhece desde o secundário é capaz de dar.Finalmente, reservo ainda um obrigado ao meu Winamp que nunca se calou de me acompanhar naslongas tardes e noites que passei a trabalhar.A todas estas pessoas, seres, não-seres, e a todos os que de alguma forma me deram um encosto, umempurrão, ou um abanão, o meu maior obrigado.

Lisboa, Maio 2011Tiago Guiomar Ribeiro

Page 4: Tese 18,9 MB
Page 5: Tese 18,9 MB

Aos meus pais.

Page 6: Tese 18,9 MB
Page 7: Tese 18,9 MB

ResumoO corpo humano é uma das obras mais misteriosas e fascinantes que a Natureza já criou. Esse

fascínio despertou ao longo dos anos, interesse em diversas áreas, como a arte, a biomecânica, e maisrecentemente, a computação gráfica. Um dos maiores desafios desta última área é a simulação de umcorpo humano.

Um dos aspectos determinantes para a correcta simulação do corpo humano é a animação do seuesqueleto virtual. É possível utilizar diversos métodos para criar essas animações, desde métodos interac-tivos, procedimentais, ou captura a partir de movimento real protagonizado por humanos. Torna-se assimútil poder garantir que as animações obedeçam às restrições biomecânicas do corpo humano, recorrendoo mínimo possível a auxílio humano.

Estudamos diversas técnicas existentes neste contexto, como a adaptação de animações a esqueletoscom morfologia diferente daquela para a qual tinha sido desenhada, a limitação de rotações em juntascom diversos graus de liberdade, ou o acoplamento do movimento de juntas que no esqueleto humano semovem também em conjunto.

Fazendo uso de algumas dessas técnicas, implementámos um modelo de esqueleto que permite seranimado com sequências de animação provenientes de diferentes origens e com diferentes morfologias.O esqueleto possui restrições biomecânicas integradas para impedir movimentos incorrectos que possamter sido gravados na sequência de animação. Possui ainda mecanismos para movimentar em conjuntoas várias juntas do complexo do ombro apenas a partir da rotação do ombro, e também para movimen-tar correctamente todas as vértebras, mesmo que apenas algumas sejam directamente animadas pelasequência de animação.

Analisámos o resultado final concluindo que as técnicas escolhidas são adequadas ao nosso problema.Apontamos ainda assim algumas falhas que impedem actualmente a correcta utilização do esqueleto,explicando as suas razões, e propondo respectivas soluções.

Page 8: Tese 18,9 MB
Page 9: Tese 18,9 MB

AbstractThe human body is one of the most mysterious and fascinating works that nature has ever created.

Over the years, this fascination aroused interest in various fields such as art, biomechanics, and morerecently, computer graphics. One of the biggest challenges of the latter area is the simulation of a humanbody.

One of the most important aspects for the correct simulation of the human body is the animationof its virtual skeleton. There are several methods currently available to create these animations, frominteractive methods, procedural, and also motion captured from real humans. It thus becomes usefulto be able to ensure that the animations meet the biomechanical constraints of the human body, withminimal recourse to human assistance.

We studied several existing techniques in this context, such as the adaptation of the animatedskeletons with different morphology from that for which it had been designed, limiting rotations in jointswith various degrees of freedom, or the coupling the motion of joints that in the human skeleton alsomove together.

Using some of these techniques, we have implemented a model for a skeleton that is capable ofbeing animated with sequences from different sources and with different morphologies. Biomechanicalconstraints are integrated in the skeleton in order to prevent incorrect movements that may have beenrecorded in the animation sequence. It also has mechanisms for moving along the various joints of theshoulder complex from the simple rotation of the shoulder, and also for all the vertebrae to move properly,even if only some are directly driven by the animation sequence.

We analyzed the results, concluding that the selected techniques are appropriate to our problem. Wealso point out some flaws that currently prevent the proper use of the skeleton, explaining their reasons,and proposing solutions.

Page 10: Tese 18,9 MB
Page 11: Tese 18,9 MB

Palavras ChaveKeywords

Palavras Chave

Animação por Computador

Biomecânica

Humanos Virtuais

Restrições Cinemáticas

Adaptação de Movimento de Esqueleto

Keywords

Computer Animation

Biomechanics

Virtual Humans

Cinematic Constraints

Skeleton Motion Retargetting

Page 12: Tese 18,9 MB
Page 13: Tese 18,9 MB

Índice

1 Introdução 1

1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Definição do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Objectivos Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.4 Publicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.5 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.6 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Conceitos de Biomecânica 5

2.1 Movimento Anatómico do Corpo Humano . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Joelho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.1.2 Tornozelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.3 Ritmo Umero-Escapular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.4 Coluna Vertebral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Trabalho Relacionado 11

3.1 Implementações Existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.1 Modelos de Esqueleto Anatomicamente Correctos . . . . . . . . . . . . . . . . . . . 11

3.1.1.1 Reconstrução a Partir de Dados Clínicos . . . . . . . . . . . . . . . . . . 11

3.1.1.2 Modelos Comerciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.2 Simulação Biomecânica de Esqueletos . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1.2.1 Aplicações Para Simulação e Análise de Dados Clínicos . . . . . . . . . . 13

3.1.2.2 Aplicações Para Visualização de Esqueletos e Dados Clínicos . . . . . . . 14

3.1.2.3 Simulação Para Fins de Entretenimento . . . . . . . . . . . . . . . . . . . 14

3.2 Animação e Controlo de Esqueletos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.1 Estruturas Articuladas em Árvore . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.2 Animação de Figuras Humanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.2.1 Síntese Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.2.2 Síntese Dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

i

Page 14: Tese 18,9 MB

3.2.2.3 Captura de Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.2.3.1 Captura Óptica . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.2.3.2 Captura Magnética . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2.2.3.3 Exo-Esqueletos e Fatos Inerciais . . . . . . . . . . . . . . . . . . 20

3.2.2.3.4 Captura Acústica . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.2.4 Quadro-a-Quadro versus Interpolação de Quadros-Chave . . . . . . . . . 21

3.2.2.5 Representação de Rotações e Orientações . . . . . . . . . . . . . . . . . . 22

3.2.2.5.1 Ângulos Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2.5.2 Matriz de Rotação . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.2.5.3 Eixo-Ângulo (Axis-Angle) . . . . . . . . . . . . . . . . . . . . . . 25

3.2.2.5.4 Quaterniões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.2.3 Técnicas Utilizadas em Animação e Controlo de Esqueletos . . . . . . . . . . . . . 29

3.2.4 Síntese de Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.5 Técnicas Espácio-Temporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.6 Métodos Offline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2.7 Métodos Aplicados Sobre Marcas MOCAP . . . . . . . . . . . . . . . . . . . . . . 32

3.2.8 Modelos Dinâmicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.9 Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.10 Adaptação de Esqueletos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2.11 Restrições Locais com Cinemática Directa . . . . . . . . . . . . . . . . . . . . . . . 35

3.2.12 Trabalhos Auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.2.12.1 Matemática e Computação Gráfica . . . . . . . . . . . . . . . . . . . . . . 37

3.2.12.2 Antropometria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.2.12.3 Pesquisas (Surveys) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4 Arquitectura 39

4.1 Definição dos Sub-Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2 Considerações da Abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3 Medidas Antropométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.4 Dados Para Teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.5 Modelo Lógico do Esqueleto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.5.1 Modelo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.5.2 Modelo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.5.3 Adaptação da Morfologia do Esqueleto . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.6 Modelo das Juntas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

ii

Page 15: Tese 18,9 MB

4.6.1 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.6.2 Juntas Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.6.2.1 Junta Estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.6.2.2 Junta Uniaxial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.6.2.3 Junta Poliaxial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.6.3 Juntas Estendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.6.3.1 Cotovelo (Uniaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.6.3.2 Joelho (Uniaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.6.3.3 Biaxial (Poliaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.6.3.4 Planas (Poliaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.6.3.5 Ombro (Poliaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.6.3.6 Punho (Poliaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.6.3.7 Tornozelo (Poliaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.6.3.8 EsternoClavicular (Biaxial) . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.6.3.9 Vertebra (Plana) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.7 Modelo das Restrições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5 Implementação 65

5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2 Funcionalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.3 Utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.4 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.4.1 Gestor de Objectos (ObjectManager) . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.4.2 Gestor de Esqueletos (SkeletonManager) . . . . . . . . . . . . . . . . . . . . . . . . 69

5.4.3 Gestor de Animação (AnimationManager) . . . . . . . . . . . . . . . . . . . . . . . 70

6 Avaliação dos Resultados 71

6.1 Avaliação Perceptual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.2 Avaliação Anatómica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.3 Avaliação de Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7 Conclusão e Trabalho Futuro 77

A Glossário 85

B Figuras Anatómicas 87

C Tabelas de Limites Anatómicos 97

iii

Page 16: Tese 18,9 MB

D Dados da norma H-Anim 200x 99

E Estrutura Interna de Ficheiros 101

E.0.1 Ficheiro de Animação BVH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

E.0.2 Ficheiro de Estrutura de Esqueleto . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

E.0.3 Ficheiro de Pose Inicial de Esqueleto . . . . . . . . . . . . . . . . . . . . . . . . . . 103

E.0.4 Ficheiros de correspondência de marcas MNM . . . . . . . . . . . . . . . . . . . . . 103

iv

Page 17: Tese 18,9 MB

Lista de Figuras

2.1 Movimento indirecto de rotação e de translacção do joelho. . . . . . . . . . . . . . . . . . 7

2.2 Movimentos acoplados do tornozelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Complexo do ombro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.4 Coluna vertebral, com representação das diversas secções, e cada uma das vértebras. . . . 9

3.1 Exemplos de esqueletos comerciais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 Sistemas comerciais de visualização de esqueletos. . . . . . . . . . . . . . . . . . . . . . . . 14

3.3 Sistemas esqueléticos da indústria do entretenimento. . . . . . . . . . . . . . . . . . . . . . 15

3.4 Estrutura articulada representando o esqueleto de uma figura humanóide. . . . . . . . . . 16

3.5 Hierarquia em árvore dos membros inferiores de um humanóide. . . . . . . . . . . . . . . . 16

3.6 Utilização de captura óptica em cinema, no filme Avatar . . . . . . . . . . . . . . . . . . . 18

3.7 Captura óptica de movimento sem recorrer a marcas . . . . . . . . . . . . . . . . . . . . . 19

3.8 Sistema Kinect da Microsoft. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.9 Sistema de marcas magnéticas para captura de movimento. . . . . . . . . . . . . . . . . . 20

3.10 Exo-Esqueleto e Fato Inercial da Animazoo. . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.11 Aplicação de rotações em ordens diferentes e em sistemas de coordenadas diferentes. . . . 23

3.12 Sistema de coordenadas aeroespacial (Yaw, Pitch, Roll). . . . . . . . . . . . . . . . . . . . 24

3.13 Sistema de marcas magnéticas para captura de movimento. . . . . . . . . . . . . . . . . . 24

3.14 Representação Eixo-Ângulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.15 FIFA Soccer 09 da Electronic Arts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.16 Ontologia de técnicas de animação e controlo de esqueletos. . . . . . . . . . . . . . . . . . 31

3.17 Sistema de Locomoção de Ko e Badler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.18 Junta spline proposta por Lee. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.19 Simulação do movimento do joelho proposto por Delp. . . . . . . . . . . . . . . . . . . . . 37

4.1 Modelo geral proposto para o esqueleto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2 Ciclo de execução da GLUT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3 Adaptação da morfologia do esqueleto pelo método de Monzani. . . . . . . . . . . . . . . 43

4.4 Processo de adaptação de cada junta pelo método de Monzani. . . . . . . . . . . . . . . . 43

v

Page 18: Tese 18,9 MB

4.5 Hierarquia das juntas utilizada pelo nosso esqueleto. . . . . . . . . . . . . . . . . . . . . . 44

4.6 Representação do referencial zero de uma junta (onde α representa o ângulo referido). . . 45

4.7 Referencial utilizado pelas juntas do esqueleto. . . . . . . . . . . . . . . . . . . . . . . . . 46

4.8 Correcção da junta Uniaxial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.9 Componentes swing e twist de uma rotação. . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.10 Polígono esférico utilizado para restringir a rotação na junta Poliaxial. . . . . . . . . . . . 49

4.11 Projecção ortogonal do polígono esférico utilizado para restringir a rotação na junta Poliaxial. 49

4.12 Elipse de restrição ao movimento de swing. . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.13 Indeterminismo da orientação do cotovelo a partir da pose do braço. . . . . . . . . . . . . 54

4.14 Aplicação correcta de rotação no cotovelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.15 Decomposição da rotação do ombro em componentes de elevação e abdução, segundo Badler. 57

4.16 Método de Shao e Hing para o acomplamento de graus de liberdade. . . . . . . . . . . . . 61

5.1 Protótipo de teste da nossa solução. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2 Representação visual das restrições. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.3 Estrutura de classes do protótipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.4 Estrutura da classe ObjectManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.5 Estrutura da classe SkeletonManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.6 Estrutura da classe AnimationManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.1 Alguns momentos de uma das animações de teste . . . . . . . . . . . . . . . . . . . . . . . 72

6.2 Performance da simulação de 16 esqueletos . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.3 Contagem de quadros-por-segundo (fps) numa simulação com 100 esqueletos. . . . . . . . 75

6.4 Análise da performance de 16 esqueletos sem desenho, com e sem restrições . . . . . . . . 75

B.1 O Esqueleto Humano Completo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

B.2 Ossos da Coluna Vertebral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

B.3 Ossos da Caixa Torácica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

B.4 Ossos da Cintura Escapular, Pélvica e Membros Superior e Inferior Direito . . . . . . . . 90

B.5 Ossos das mãos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

B.6 Ossos do pé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

B.7 Planos de Corte do Corpo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

B.8 Tipos de articulações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

B.9 Flexão e Extensão do corpo humano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

B.10 Abdução e Adução do Ombro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

B.11 Abdução e Adução dos Dedos da Mão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

vi

Page 19: Tese 18,9 MB

B.12 Rotação Interna e Externa do Ombro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

B.13 Pronação e Supinação do braço. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

vii

Page 20: Tese 18,9 MB

viii

Page 21: Tese 18,9 MB

Lista de Tabelas

2.1 Limites de rotação para a coluna vertebral para cada secção. . . . . . . . . . . . . . . . . 9

2.2 Pesos multiplicativos de rotação para cada uma das articulações da coluna vertebral. . . . 10

4.1 Definição das restrições utilizadas no nosso esqueleto. . . . . . . . . . . . . . . . . . . . . . 64

C.2 Tipologia e Restrições das articulações dos membros inferiores. . . . . . . . . . . . . . . . 97

C.3 Tipologia e Restrições das articulações dos membros superiores . . . . . . . . . . . . . . . 98

C.4 Tipologia e Restrições das articulações das mãos. . . . . . . . . . . . . . . . . . . . . . . . 98

C.5 Tipologia e Restrições das articulações da coluna vertebral. . . . . . . . . . . . . . . . . . 98

D.1 Posição inicial das juntas da norma ISO H-Anim 200x http://www.h-anim.org/ . . . . . . . . . 99

ix

Page 22: Tese 18,9 MB

x

Page 23: Tese 18,9 MB

1Introdução

O pé humano é tanto uma obra-prima de engenharia como uma obra de arte.– Leonardo Da Vinci

1.1 Motivação

Tal como o pé, todo o corpo humano continua a ser uma das obras mais misteriosas que a Natu-reza criou. Sendo uma criação com, simultaneamente, tantas capacidades estruturais, e flexibilidadesmecânicas, desde cedo inspirou um profundo estudo. Aristóteles escreveu um dos primeiros documentossobre o assunto em 350 A.C, intitulado De Motu Animalium [1] (Sobre o Movimentos dos Animais), noqual analisa a forma como o ser humano e os animais, no geral, se movimentam, relacionando-os com ouniverso e com a energia presente na alma, explicando os conceitos subjacentes ao movimento de juntasentre segmentos de corpos. Por detrás do complexo sistema neuronal, dos vastos sistemas de órgãos, edo robusto sistema muscular, a base do poder mecânico do corpo humano é o seu esqueleto. Como emtodos os mamíferos, o esqueleto humano é composto por quatro componentes: ossos, cartilagem, tendõese ligamentos. Os ossos são as estruturas mais rígidas e que mais definem a estrutura do corpo humano.São constituídos por tecido ósseo que lhes confere a resistência necessária, e cartilagens que garantem aflexibilidade em determinados pontos. Os ligamentos, quase exclusivamente formados por espessos ramosde fibras de colagénio, têm elevada resistência mecânica e ao estiramento [2].

Um dos primeiros estudiosos desta área, considerado pai da biomecânica, foi Giovanni Alfonso Borelli,com o seu trabalho intitulado De Motu Animalium [3], publicado em 1680, com o qual reanimou o nomeda obra de Aristóteles. Neste livro, Borelli estuda o movimento do esqueleto do ponto de vista da física,comparando-o a sistemas mecânicos articulados.

O conjunto de todos estes elementos, porém, é tão objecto de estudo, quanto de contemplação porparte de artistas ao longo de eras sem fim. Desde a idade primitiva, o corpo humano sempre teve umlugar proeminente nas representações artísticas visuais.

Ainda antes de Borelli, já Leonardo da Vinci estudava e desenhava o corpo humano do ponto devista anatómico. Através da dissecção de cadáveres, produziu detalhados modelos do esqueleto humano,dos seus músculos, e dos aspectos mecânicos das articulações, recolhidos entre os anos 1510 e 1511, epublicados, em 1651, juntamente com diversos outros tópicos, na obra intitulada Tratado Da Pintura [4].

Inicialmente representado através da pintura, o corpo humano, e em especial, o seu esqueleto, adquiretambém forma na escultura, e mais recentemente, em escultura digital, sob a forma de modelação 3D,sendo utilizado frequentemente em áreas de investigação biomédica, de arte, e de entretenimento.

É da união destas áreas que surge a necessidade de um esqueleto, anatómicamente correcto em com-posição e movimento, adequado para o contexto clínico e que simultaneamente se demonstre esteticamentecredível e agradável para diversas áreas aplicacionais - desde a multimédia às personagens interactivas.

Page 24: Tese 18,9 MB

2 CAPÍTULO 1. INTRODUÇÃO

1.2 Definição do Problema

Um esqueleto que suporte a união de diferentes áreas de aplicação terá, também, de ser construído,a partir da união de múltiplos domínios do conhecimento.

De forma a corresponder à perfeição anatómica, requerida para ser utilizado em estudos mecânicosvisuais, esse esqueleto deve considerar a maior percentagem dos ossos do corpo humano real.

Todas as suas articulações devem permitir simular, da melhor forma, a dinâmica permitida peloseu tipo de junta, e deve ainda manter todas as restrições biomecânicas que um esqueleto real detém.Apesar de suportar ser animado a partir de dados resultantes de captura de movimento, estes dadospoderão ter sido alvo de composição, a qual, por sua vez, incorre na hipótese de ter sido incorrectamenteexecutada, pelo que o esqueleto não deverá permitir poses anatomicamente incorrectas. Algumas ideiasde composição de sequências da captura de movimento foram já propostas por [5; 6]. O presente trabalhosurgiu no contexto do projecto Anicomda, que apresenta uma arquitectura própria para composição deanimações.

Um problema que surge é o facto de que, ao aliar qualidade visual e mecânica, e flexibilidade deutilização, o resultado é geralmente complexo e intensivo em termos computacionais, pelo que se tornanecessário um estudo adequado de forma a encontrar uma solução útil.

Assim, uma compreensão da relação, e das implicações, entre grafismo e desenvolvimento multimédia,conduz este problema ao domínio da engenharia de informática. Um trabalho que se debruce sobre asolução do problema deve, assim, produzir um esqueleto que possa conter, tanto os elementos gráficos,como os elementos de desenvolvimento de software informático que o compõem, e que possa ser cedido àcomunidade mundial, de forma a ser facilmente integrado e utilizado nas mais variadas áreas de aplicaçãoque o exijam.

1.3 Objectivos Propostos

É objectivo central da presente tese desenvolver um esqueleto humano virtual, com restrições bio-mecânicas anatomicamente correctas, executado na plataforma OpenGL, passível de animar com dadosprovenientes de síntese ou captura de movimentos respeitantes às juntas de um humanóide tal comoespecificadas pela norma ISO H-Anim 200X 1.

Considerando a possibilidade de animar o referido esqueleto, não só com dados provenientes directa-mente de movimentos capturados, mas também com composições desses movimentos, e assumindo que,após uma análise preliminar do problema:

1. A composição pode gerar movimentos fisicamente irrealizáveis para um esqueleto humano [5];

2. Uma forma de evitar tal geração é incorporar restrições aos movimentos gerados;

3. A incorporação de tais restrições pode ser feita a dois níveis: no próprio esqueleto ou no ambienteno qual o esqueleto é animado;

4. Interessa-nos a vertente de incorporação das restrições biomecânicas no próprio esqueleto.

1http://www.h-anim.org/

Page 25: Tese 18,9 MB

1.4. PUBLICAÇÕES 3

Com este objectivo central em mente, conseguimos divisar desde já uma série de tarefas que tere-mos de executar para o atingir, nomeadamente:

(a) Analisar os âmbitos de utilização de esqueletos humanos virtuais e anatomicamente correctos com oobjectivo de propor uma solução flexível que possa ser útil e disponibilizada à comunidade científica;

(b) Analisar as soluções existentes para a visualização de animações de esqueletos anatomicamentecorrectos a partir de dados antropométricos e cinéticos;

(c) Analisar as restrições biomecânicas do esqueleto humano de forma a produzir uma relação dasmesmas e incorporá-las no esqueleto;

(d) Estudar as soluções existentes e implementar uma forma de animar um esqueleto em OpenGL queobedeça às restrições consideradas, tanto em termos de dimensionamento dos ossos, como de rotaçãodas juntas, e ainda, que movimente de forma indirecta a coluna vertebral;

(e) Para o ponto anterior deve-se ter em conta que a animação do esqueleto é definida por um conjuntolimitado de pontos, colocados em locais coincidentes com algumas das juntas do esqueleto;

(f) As animações poderão ter diferentes origens, e estarem definidas para esqueletos topologicamentediferentes do nosso.

(g) Implementar um ambiente de animação que permita testar o esqueleto implementado de acordocom os objectivos acima referidos.

1.4 Publicações

No âmbito do projecto Anicomda, do qual surgiu a presente tese, publicámos um artigo, que incluiua contextualização do nosso problema, derivando-o da composição de animações de humanos virtuais, eda forma como a compreensão conjunta tanto das diversas áreas de aplicação onde se enquadra, como dasrestrições biomecânicas do corpo humano, pode ser utilizada para corrigir a animação de humanóides,produzindo um resultado mais credível. A referência deste artigo é a seguinte:

• Braz, J.; Pereira, J. M.; Ribeiro, T.; Tissot, D. I & Tremblier, C. Uma Arquitectura Experimentalpara Composição de Animações, 17º Encontro Português de Computação Gráfica, 2009.

1.5 Contribuições

Com o nosso trabalho, apresentamos um estudo organizado sobre animação de humanóides, e in-clusive, da incorporação de restrições no seu movimento. Este estudo é de interesse para a comunidadecientífica que trabalhe nesta área, endereçando-se como uma base de referência e de sumários de trabalhose de métodos, e ainda de introdução anatómica, matemática e técnica ao contexto. Propomos ainda ummodelo de juntas geral que utilizámos para animar um esqueleto com 279 graus de liberdade, incluindoos diversos métodos utilizados para implementar restrições biomecânicas, bem como uma forma de asutilizar em conjunto. Finalmente, avaliámos a nossa solução, concluindo que o modelo e as técnicas queescolhemos são adequadas ao contexto, salientando, no entanto, alguns problemas que surgiram, e paraos quais propomos uma direcção a seguir para resolução futura.

Page 26: Tese 18,9 MB

4 CAPÍTULO 1. INTRODUÇÃO

1.6 Estrutura

Esta dissertação está estruturada em sete principais secções. A primeira (e actual) introduz o con-texto e identifica o problema que abordamos, juntamente com os objectivos a que nos propomos, e cujaresolução serve de contribuição para a comunidade científica. Na segunda e terceira secção exploramosdiferentes áreas de trabalho que se relacionam com o nosso, desde os conceitos de anatomia, à visualizaçãode esqueletos humanos, e à animação de figuras humanas. A quarta secção ilustra a nossa abordagem aoproblema, contendo a arquitectura da nossa solução, algumas considerações que tivemos, e o modelo dejuntas e de restrições que propomos utilizar. Na quinta secção descrevemos o protótipo que implementá-mos para testar a nossa proposta, sendo que na sexta e penúltima secção falamos sobre a forma como aavaliámos, evocando algumas falhas e possíveis soluções para as mesmas. Finalmente na última secção,sumariamos o projecto, expondo as nossas conclusões e passos futuros.

Page 27: Tese 18,9 MB

2Conceitos de Biomecânica

2.1 Movimento Anatómico do Corpo Humano

Para a construção de um esqueleto virtual anatomicamente correcto, é necessário identificar as ca-pacidades cinemáticas das diversas articulações do corpo humano real. Esse estudo assenta em dados deartrocinemática 1, e faz-se em duas partes. Primeiro é preciso identificar as articulações cuja gama demovimento será alvo de restrição. Em segundo lugar, é importante definir os tipos de movimento que asarticulações podem executar, e quantificar cada uma delas. Essa quantificação consistirá em estabelecerquais os limites angulares para cada tipo de movimento. Para auxiliar a identificação de alguns dos ossose articulações são fornecidos mapas do esqueleto nas Figuras B.1 a B.6(a) e B.6(b). Os planos de corteutilizados para descrever o movimento de partes do corpo estão indicados na Figura B.7. Todas as figurasreferidas nesta secção encontram-se em Anexo.

Os seguintes tipos de articulações foram considerados:

1. Articulação Plana (Figura B.8(a)). Permite pouco movimento, deslizante, sendo exemplo as arti-culações que interligam as vértebras, ou que ligam as costelas às vértebras;

2. Articulação em Sela (Figura B.8(b)). Permitem pouco movimento, sobre dois eixos, sendo exemplosa articulação que liga o polegar ao punho, e a articulação esterno-clavicular;

3. Articulação em Roldana (Figura B.8(c)). Permite movimento de um eixo, sendo exemplo as arti-culações do joelho, do cotovelo, e dos dedos das mãos e dos pés;

4. Articulação Cilíndrica (Figura B.8(d)). Permite rotação sobre um eixo, sendo exemplo a articulaçãoentre o rádio e o cúbito, que compõe o antebraço, ou entre as duas vértebras mais próximas docrânio, que permitem rodar a cabeça para os lados;

5. Articulação de Elíptica (figura B.8(e)). Permite movimento sobre dois ou mais eixos, sendo exemploas articulações dos nós das mãos, a do punho, ou a articulação que liga o pescoço à base do crânio;

6. Articulação Esférica (Figura B.8(f)). Permite movimento sobre múltiplos eixos, sendo exemplo aarticulação da anca e a do ombro [2].

Os tipos de movimentos que uma articulação pode executar têm as seguintes designações:

1. Flexão (Figuras B.9(a), B.9(b), B.9(c), B.9(d), B.9(e) e B.10) é descrita como sendo dobrar aarticulação, movendo uma parte do corpo numa direcção anterior, ou ventral, sendo exemplo dobraro cotovelo;

2. Extensão (Figura B.9(a), B.9(b), B.9(c), B.9(d), B.9(e) e B.10) é descrita como sendo esticar aarticulação, movendo uma parte do corpo numa direcção posterior, ou dorsal, e associa-se a reporo membro na pose em que estava antes de ser flectido, sendo exemplo esticar o cotovelo;

1Estudo dos tipos de movimentos ósseos dentro de uma articulação [7]

Page 28: Tese 18,9 MB

6 CAPÍTULO 2. CONCEITOS DE BIOMECÂNICA

3. Hiperextensão é descrita como sendo uma extensão para lá da posição anatómica normal, ou seja,é dobrar a articulação na direcção posterior, no sentido contrário à da flexão, sendo exemplo, rodarpara trás os braços esticados, junto ao corpo;

4. Abdução (Figuras B.11, B.10) é um movimento que afasta um membro da linha mediana do seumovimento, sendo exemplo afastar os dedos de uma mão aberta. A linha mediana de cada dedocorresponderá à sua posição quando os dedos estão juntos, na referida pose da mão;

5. Adução(Figuras B.11, B.10) é um movimento que aproxima um membro da linha mediana do seumovimento, sendo exemplo juntar os dedos de uma mão aberta com os dedos afastados;

6. Rotação (Figura B.12) é rodar uma estrutura em torno do seu eixo mais longo, sendo exemplo,rodar a cabeça para os lados, ou rodar o braço esticado, ao longo do eixo que ele próprio define.Pode-se distinguir a rotação interna, que volta o membro na direcção do eixo vertical do esqueleto,e a rotação externa, no sentido oposto;

7. Pronação (Figura B.13) é um movimento apenas do antebraço e do tornozelo, em que, estando apalma da mão ou a planta do pé orientados para baixo, consistirá em roda-los, de forma a ficaremvirados para fora;

8. Supinação (Figura B.13) é o movimento inverso da pronação, em que, estando a palma da mão ou aplanta do pé orientados para baixo, consistirá em roda-los, de forma a ficarem virados para dentro;

9. Abdução Horizontal é o movimento dos braços, visto no plano transverso, quando, a 90º de abdução(normal), os braços são movimentados para trás, em movimento de extensão;

10. Adução Horizontal é o movimento dos braços, visto no plano transverso, quando, a 90º de abdução(normal), os braços são movimentados para a frente, em movimento de flexão;

As Tabelas C.2 a C.5, apresentadas em Anexo, sumariam os dados que serão considerados durantea realização deste projecto. Nessas tabelas é indicado o tipo de cada articulação, e a gama de valoresangulares para cada tipo de movimento. Considera-se que a pose inicial, na qual todos os graus deliberdade estão a zero graus, corresponde à posição anatómica, ou seja, a uma pose em que o esqueleto seencontra em pé, com os pés voltados para a frente, e os braços esticados junto ao corpo, com as palmasviradas para dentro. O sentido dos ângulos é orientado com o movimento que descreve, ou o primeirodeles, caso descreva um par complementar.

[8] descreve os diversos factores naturais que contribuem para a restrição do movimento das articu-lações no corpo humano. Esse movimento é, especialmente limitado pela forma dos ossos, mas tambémdevido a ligamentos, a musculatura, a gordura e cartilagem. Apesar de não pretendermos explorar emdetalhe cada um destes factores, é importante estar ciente deles, enquanto analisamos as restrições bio-mecânicas do esqueleto humano, se queremos implementar uma simulação das articulações de forma maiscorrecta. Neste trabalho, ele refere ainda um facto importante, que é o facto de que o movimento derotação das articulações raramente se dá em torno de um eixo fixo, pelo que a solução proposta deveráter esse factor em consideração.

2.1.1 Joelho

O joelho é geralmente associado a uma articulação cilíndrica. Na realidade, possui um movimentobastante mais complexo, pois o fémur desliza e roda sobre a tíbia durante o movimento de flexão eextensão, como se ilustra na Figura 2.1. Estes dois movimentos associados à flexão são involuntários,pois não conseguimos simplesmente rodar internamente o joelho. Segundo [9], o joelho roda sobre sidurante os últimos 20 graus de extensão, o que é suficiente para termos de considerar este movimentocomo um movimento acoplado, ou seja, a rotação do joelho é um movimento indirecto que surge porparte da sua flexão.

Page 29: Tese 18,9 MB

2.1. MOVIMENTO ANATÓMICO DO CORPO HUMANO 7

Figura 2.1: Movimento indirecto de rotação e de translacção do joelho [9].

2.1.2 Tornozelo

Como se observa na Figura 2.2, existem três tipos de movimento associados ao tornozelo. No entanto,segundo [9], a supinação acontece de forma acoplada à adução, e a pronação acontece acoplada à abdução.Assim, este factor é também importante para a posterior simulação desta articulação.

Figura 2.2: Movimentos acoplados do tornozelo [9].

2.1.3 Ritmo Umero-Escapular

O ombro é um dos pontos mais complexos do corpo em termos de mecânica. O seu movimento,apesar de ser associado a uma articulação esférica, surge na realidade pelo conjunto de três articulações,cujo conjunto se designa pelo complexo do ombro (Figura 2.3):

Gleno-umeral: articulação esférica que liga o braço (úmero) ao ombro (gleno é uma zona da escápula);Acromio-clavicular: articulação plana que une a clavícula à omoplata (o acrómio é uma zona da

escápula);Esterno-clavicular: articulação em sela que une a clavícula ao esterno.

O ritmo umero-escapular corresponde à forma como todas estas articulações trabalham em con-junto para permitir todos os movimentos possíveis do ombro. [9] informa que os primeiros 30 graus demovimento do ombro (flexão ou abdução do braço) são executados exclusivamente na articulação gleno-umeral. A partir daí, por cada 2 graus de flexão ou abdução do braço, a escápula roda 1 grau na mesmaorientação.

Page 30: Tese 18,9 MB

8 CAPÍTULO 2. CONCEITOS DE BIOMECÂNICA

Figura 2.3: Complexo do ombro [9].

2.1.4 Coluna Vertebral

A distribuição dos valores de rotação por cada uma das vértebras depende da zona da coluna vertebrala que pertence dada vértebra, e em alguns casos, depende especificamente da vértebra. Como [9] explica,a porção especialmente móvel da coluna vertebral divide-se em três secções, como ilustrado na Figura2.4:

Cervical: corresponde ao pescoço, e contém, de cima para baixo, as sete vértebras C1 até C7, sendoa secção com maior mobilidade. É importante referir que em termos de articulações, incluímosnesta secção a articulação atlanto-occipital, o que totaliza em oito articulações, e não sete como sepoderia esperar;

Torácica: corresponde à porção abrangida pela caixa torácica, e é a secção que possui menor mobilidade.Contém 12 vértebras, que de cima até baixo, são a T1 até a T12;

Lombar: corresponde à zona lombar, ou seja, ao fundo das costas; Tem cinco vértebras, a L1 até aL5, e é nesta secção que ocorre a maioria do movimento tóraxico, mais especificamente entre asvértebras L4 e L5, e entre a L5 e o sacro.

É importante num estudo deste género analisar detalhadamente a liberdade de movimento da colunavertebral. [10] é uma importante referência nesse aspecto. Neste livro dedicado especialmente à fisiologiadas vértebras, encontramos o alcance de movimento de cada uma das vértebras individuais, para cadaum dos movimentos anatómicos. O problema é que, como é referido no mesmo livro, é extremamentedifícil medir com precisão os limites de movimento entre cada vértebra, mesmo recorrendo à instalaçãode instrumentos através de cirurgia, pelo que os valores variam bastante de autor para autor. Além disso,a flexibilidade da coluna vertebral é algo que difere muito de pessoa para pessoa, reduzindo-se bastantecom a idade, pelo que qualquer conjunto de valores que utilizemos será composto de valores médios.Excepcionalmente, no corpo deste documento, vamos descrever detalhadamente os limites de rotaçãopara toda a coluna vertebral, em vez de apenas indicar os valores na tabela final em anexo. Vamosutilizar os valores que este autor dá para cada secção, e que organizamos na Tabela 2.2.

Estes valores agora devem ser divididos entre cada vértebra que compõe cada secção. Para esta-belecermos os pesos que cada vértebra tem, analisámos alguns dados fornecidos no livro. Estes dadosestão organizados de forma a mostrar a amplitude de rotação entre cada vértebra, para diferentes faixasetárias. O autor fornece uma tabela que contém quatro faixas etárias, dos 2 aos 13 anos, dos 35 aos

Page 31: Tese 18,9 MB

2.1. MOVIMENTO ANATÓMICO DO CORPO HUMANO 9

Figura 2.4: Coluna vertebral, com representação das diversas secções, e cada uma das vértebras [9].

Secção Flexão Hiperextensão Flexão Lateral Rotação AxialCervical 40º 75º 45º 55ºTorácica 45º 25º 20º 35ºLombar 60º 35º 20º 5º

Tabela 2.1: Limites de rotação para a coluna vertebral para cada secção [10]

49, dos 50 aos 64, e dos 65 aos 77. Não vamos descrever todas. Optamos por utilizar como referência ointervalo dos 35 aos 49 anos, correspondente a um adulto médio, e com esses valores estabelecemos, paracada articulação, um peso que meça a sua contribuição para o movimento da secção, entre 0 a 1, de formaque a soma dos pesos de uma secção totalize 1. As entradas azuis correspondem à secção cervical, asvermelhas à torácica, e as verdes à secção lombar. Os pesos correspondentes a cada uma das articulaçõesencontram-se na Tabela 2.2.

* Para a secção torácica, apenas havia informação relativamente à rotação axial, pelo que utilizámosos pesos relativos a este movimento como referência para os restantes movimentos.

Page 32: Tese 18,9 MB

10 CAPÍTULO 2. CONCEITOS DE BIOMECÂNICA

Articulação Flexão e Hiperex-tensão

Flexão Lateral Rotação Axial

C1-Crânio 0.04 0.15 0.16C2-C1 0.18 0.04 0.15C3-C2 0.13 0.135 0.115C4-C3 0.13 0.135 0.115C5-C4 0.13 0.135 0.115C6-C5 0.13 0.135 0.115C7-C6 0.13 0.135 0.115T1-C7 0.13 0.135 0.115T2-T1 0.21* 0.21* 0.21T3-T2 0.05* 0.05* 0.05T4-T3 0.05* 0.05* 0.05T5-T4 0.065* 0.065* 0.065T6-T5 0.065* 0.065* 0.065T7-T6 0.065* 0.065* 0.065T8-T7 0.065* 0.065* 0.065T9-T8 0.065* 0.065* 0.065T10-T9 0.065* 0.065* 0.065T11-T10 0.065* 0.065* 0.065T12-T11 0.065* 0.065* 0.065L1-T12 0.17* 0.17* 0.17L2-L1 0.14 0.16 0.5L3-L2 0.18 0.26 0.125L4-L3 0.21 0.26 0.125L5-L4 0.28 0.26 0.125Sacro-L5 0.19 0.06 0.125

Tabela 2.2: Pesos multiplicativos de rotação para cada uma das articulações da coluna vertebral [10]

Page 33: Tese 18,9 MB

3Trabalho Relacionado

3.1 Implementações Existentes

3.1.1 Modelos de Esqueleto Anatomicamente Correctos

Nesta secção analisamos modelos tridimensionais que possuam a estrutura óssea humana completacom dimensões antropométricas correctas, sendo por tal relevantes na nossa pesquisa de esqueleto ana-tomicamente correctos.

Na maioria dos casos comerciais, pelo que constatámos, não há qualquer informação acerca do métodoutilizado para a modelação do mesmo, apresentando-se apenas como sendo um esqueleto 3D correcto,com uma indicação do preço, e a licença de utilização1. A modelação destes esqueletos é geralmenteexecutada através de duas formas alternativas: modelação à mão por artistas 3D, a partir de fotografiase modelos físicos à escala real, ou reconstrução a partir de dados clínicos [11; 12; 13] geralmente a partirde imagens de TAC, raio-X ou ressonância magnética.

3.1.1.1 Reconstrução a Partir de Dados Clínicos

A grande maioria das soluções de reconstrução de modelos de esqueletos tridimensionais a partirde dados clínicos baseia-se na base de imagens disponibilizada pela Biblioteca Nacional de Medicina doInstituto Nacional de Saúde dos Estados Unidos, através do seu projecto The Visible Human2. Estabiblioteca contém imagens de cortes crio-seccionais de alta resolução adquiridos através de TAC e resso-nância magnética, num total de 1871 imagens para o corpo masculino, e 5189 para o corpo feminino. Apartir destas imagens são aplicados métodos de reconstrução [11; 12; 13] que não serão foco de análiseno presente documento. Actualmente alguns dos institutos e laboratórios que produzem este tipo demodelos têm ainda as suas próprias bases de imagens, recolhendo dados com cada vez maior detalhe,resolução e perfeição. Geralmente o resultado da reconstrução de modelos a partir de imagens clínicasnão é totalmente perfeito, pois dependendo da técnica e da resolução das imagens, poderá apresentardeformações regulares, e malhas de polígonos irregulares, pelo que o modelo só está completo após serrevisto e rearranjado por modeladores profissionais3.

3.1.1.2 Modelos Comerciais

A Anatomy Planet4, loja online de conteúdo multimédia de anatomia, possui um esqueleto que émodelado por artistas especializados do Catfish Animation Studio5. Detalhes acerca do método utilizadopara a sua modelação não são especificados, sendo apenas indicado o seu preço, de 200€, o que o tornariaum esqueleto acessível para diversos fins, se a licença não permitisse apenas a sua utilização restrita paraa produção de conteúdos em formato vídeo.

1http://store.cgsociety.org/product/000093/2http://www.nlm.nih.gov/research/visible/visible_human.html3http://www.cgcharacter.com/cghuman.html4http://www.catfish3d.com/Category.aspx?parentID=635http://www.catfishanimationstudio.com/

Page 34: Tese 18,9 MB

12 CAPÍTULO 3. TRABALHO RELACIONADO

(a) Zygote (b) cgCharacter

Figura 3.1: Exemplos de esqueletos comerciais.

O estúdio Zygote6 possui também uma loja online de conteúdo anatómico7, que inclui esqueletosde alta qualidade e resolução, como se pode ver na Figura 3.1(a).Estes foram modelados a partir dedigitalizações de modelos sólidos, e a partir de TAC e ressonância magnética. Ao longo da nossa pesquisa,concluímos que este é um dos esqueletos disponíveis em regime comercial mais anatomicamente correctosque se pode encontrar.

O esqueleto macho possui mais de 200 000 polígonos, o que é uma elevada resolução, pelo que não serámuito adequado a aplicações interactivas actuais, para além de que possui um preço bastante elevado, de$4060, se incluirmos as texturas. O cgCharacter é um estúdio especializado em modelação e configuraçãode modelos de personagens virtuais que vende alguns esqueletos anatomicamente correctos e aptos a seranimados a preços acessíveis ($195), estando um deles apresentado na Figura 3.1(b). Estes esqueletostêm vindo a ser desenvolvidos ao longo de 15 anos a partir de dados clínicos, numa cooperação entremodeladores e peritos médicos, apresentando-se assim como uma aceitável solução comercial.

Muitos outros modelos de esqueletos estão disponíveis comercialmente em diversos estúdios de pro-dução de conteúdo multimédia, mantendo-se na generalidade incógnito o método e técnicas utilizadaspara a modelação dos mesmos. As licenças associadas geralmente proíbem a distribuição do esqueletojuntamente com alguma aplicação interactiva, fazendo deles produtos orientados à produção de conteúdo

6http://www.zygote.com/index.php7http://www.3dscience.com/3D_Models/Human_Anatomy/Male_Systems/Male_Skeletal_3.php

Page 35: Tese 18,9 MB

3.1. IMPLEMENTAÇÕES EXISTENTES 13

gráfico estático ou audiovisual.

3.1.2 Simulação Biomecânica de Esqueletos

A simulação biomecânica de esqueletos surge especialmente para análise e reportagem da cinemáticade estudos médicos e de pacientes, sendo que a maioria dos restantes serve para fins pedagógicos, eainda uma parte desse estudo é aplicada a tecnologia para fins de produção de entretenimento. Aquiloque procuramos estudar, relacionado com o presente trabalho, são soluções que permitam visualizar omovimento de um esqueleto humano completo, a partir de dados de captura de movimento. Os dadosresultantes de captura de movimento são sempre deslocados dos dados de movimento que realmente sequer aplicar ao esqueleto, pois as marcas cujo movimento é captado são colocadas sobre a pele, e omovimento dos esqueletos é efectuado ao nível das juntas. Assim é preciso interpretar o movimento quefoi registado sobre a pele, para daí perceber como as juntas se deverão mover para corresponder ao mesmomovimento. Para o presente projecto vão-se utilizar dados que se encontram já na norma H-Anim, ouseja, cada ponto corresponderá realmente a uma junta, e não a uma das marcas colocadas sobre a pele.Porém, a maioria das aplicações actualmente existentes que simulam o movimento de esqueletos trata defazer esta correspondência entre marcas e juntas, ou seja, adicionam o problema de inferir ou ajustar umesqueleto a partir dos dados registados a partir das marcas.

3.1.2.1 Aplicações Para Simulação e Análise de Dados Clínicos

Um simulador bastante completo é o KinTools RT8 da Motion Analysis, que consegue analisardetalhadamente a cinemática produzida a partir de sequências de captura de movimento, através doSkeleton Builder9, outro software disponibilizado pela mesma empresa. Este último permite adaptar oconjunto de marcas dispersas a um esqueleto rígido previamente definido. A mesma empresa possui aindao SIMM (Software for Interactive Muskuloskeletal Modeling), que consiste num conjunto de ferramentasque permitem modelar, animar e analisar sistemas músculo-esqueléticos em 3D. Após testarmos o SIMM,concluímos que parece estar mais ligado à análise clínica de cinemática e dinâmica das juntas e dosmúsculos, pois centra-se bastante em configurar as juntas e os músculos, e gerar gráficos a partir dediversas variáveis medidas após a aplicação de movimentos à estrutura. Neste âmbito testámos tambémo software AnyBody10 da AnyBody Technology, e tivemos a mesma conclusão, embora este funcionemuito à base de programar as estruturas e as configurações da cinemática, para depois visualizar apenasos resultados em gráficos. A Vicon possui um sistema de geração de relatórios de análise cinemática maisavançado, que gera relatórios multimédia óptimos para serem apresentados a qualquer tipo de público.O Vicon Polygon11 alia-se à tecnologia de captura de movimento da Vicon, e permite gerar visualizações3D de esqueletos anatomicamente correctos em tempo real, juntamente com gráficos e tabelas relativosaos dados analisados. O OpenSim12 [14; 15; 16] é uma aplicação open source de suporte ao estudo esimulação de dinâmica de estruturas músculo-esqueléticas. A aplicação disponibilizada permite carregarmodelos definidos em ficheiros, escritos em formato XML13, sendo nestes ficheiros definida a sua estruturaesquelética e muscular. Para cada osso pode-se definir a geometria a utilizar, sendo ainda disponibilizadoo conjunto completo da geometria dos ossos. Suporta ainda carregar movimentos definidos nalgunsformatos específicos, e ainda carregar modelos exportados do SIMM (descrito acima). Esta aplicação éconstruída sobre o SimTK14, que é, por sua vez, uma framework, também gratuita, e bastante útil parao desenvolvimento de aplicações que simulem diversos tipos de comportamento biológico. Em especial,

8http://www.motionanalysis.com/html/movement/kinetics.html9http://www.motionanalysis.com/html/movement/skb.html

10http://www.anybodytech.com/index.php?id=2611http://www.vicon.com/products/polygon.html12http://simtk.org/home/opensim13Formato de ficheiro de texto para armazenar dados. http://www.w3.org/XML/14SimTK framework, Simbios – NIH Center for Biomedical Computation at Stanford, Stanford University, http://simtk.

org/

Page 36: Tese 18,9 MB

14 CAPÍTULO 3. TRABALHO RELACIONADO

o módulo Simbody15 permite simular sistemas articulados, como é o caso de esqueletos ou moléculas.Para criar estes sistemas articulados, a biblioteca fornece uma arquitectura que permite criar e simularuma estrutura hierárquica de objectos, ligados por juntas. Cada junta é um objecto de alto nível, poisna realidade, é composto de um conjunto de graus de liberdade. A esses graus de liberdade podem seratribuídas restrições de movimento.

3.1.2.2 Aplicações Para Visualização de Esqueletos e Dados Clínicos

No contexto de aplicações que não pretendem simular movimento, mas apenas visualizá-lo, começá-mos por analisar o Visual 3D16, da C-Motion (ver Figura 3.2(a)), que é uma solução que parece fazeruma parte daquilo que pretendemos fazer. Na sua génese, esta aplicação serve para visualizar sequênciasde captura de movimento, em especial a partir de ficheiros C3D17. A partir das marcas utilizadas, pode-seconstruir e associar um esqueleto sob a forma de simples segmentos de linhas, ou modelos de ossos, deforma a visualizar o movimento com maior realismo. A configuração do esqueleto pode ir ao nível dasjuntas, definindo-se a cinemática inversa com restrições para cada uma delas, de forma a poder exportar oesqueleto para outra aplicação. Tal como as anteriores, esta aplicação têm também geração de relatóriose gráficos para análise.

(a) Visual3D da C-Motion (b) MediView da cgCharacter

Figura 3.2: Sistemas comerciais de visualização de esqueletos.

Em termos de aplicações que servem unicamente à visualização de esqueletos destacam-se as di-ferentes aplicações pedagógicas da Next Dimension Imaging18 e o MediView19 da cgCharacter. Estasaplicações permitem a visualização do sistema músculo-esquelético humano ao nível de sistemas, seg-mentos e de elementos, com acesso a informação adicional sobre cada parte do corpo. O MediView,apresentado na Figura 3.2(b), permite ainda ver cortes seccionais no sistema músculo-esquelético.

3.1.2.3 Simulação Para Fins de Entretenimento

Outro tipo de simulação da mecânica de esqueletos são os chamados rag-dolls, nome associadoa bonecos de trapos, que pretendem simular a física de um corpo inanimado[17]. Estes modelos sãobastante utilizados em jogos e produções audiovisuais, embora na maioria dos casos, não apresentemum comportamento anatomicamente correcto, mas sim, esteticamente agradável. Embora haja diversostipos de rag-dolls, eles geralmente definem o esqueleto como um conjunto de segmentos ligados porjuntas com diferentes graus de rotação e de limites. Muitos possuem ainda sistemas de cinemática

15ttp://simtk.org/home/simbody16http://www.c-motion.com/products/Visual3D.htm17Formato de ficheiro utilizado para gravar dados de animação 3d a partir de captura de movimento. http://www.c3d.org/18http://www.nextd.com/products.asp19http://www.cgcharacter.com/mediview/

Page 37: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 15

inversa, de forma a restringir o movimento de determinadas articulações, ou até volumes de colisão,para evitar interpenetração de umas partes do corpo nas outras [18]. Em relação às restrições aplicadassobre as juntas, no caso do presente trabalho interessa em especial restringir os graus de rotação sobrealguns eixos, e limitar angularmente a rotação sobre outros, utilizando para tal métodos já estudadosem [19], e que serão melhor analisados no ponto seguinte. Um exemplo, bastante completo e funcional,de sistemas esqueléticos, usados actualmente na indústria do entretenimento, é o sistema endorphin20

da NaturalMotion. Embora seja um sistema para síntese de movimento dinâmico, possui um complexoconjunto de restrições a partir de dados antropométricos e biomecânicos [20], produzindo assim corposanimados a partir de esqueletos com restrições anatomicamente correctas, aptos para serem utilizadosem fins de entretenimento (Figura 3.3(a)).

(a) endorphine da NaturalMotion (b) Grand Theft Auto IV (c) Star Wars

Figura 3.3: Sistemas esqueléticos da indústria do entretenimento.

Em termos de videojogos que fazem uso da qualidade de simulação destes esqueletos, o Grand TheftAuto IV 21 e o Star Wars – The Force Unleashed22, apresentados nas Figuras 3.3(b) e 3.3(c), são possíveisexemplos. Em ambos, os esqueletos permitem simular correctamente a interacção entre personagens, edestes com o cenário envolvente, em situações de lutas e ataques. Estes esqueletos simulam ainda a físicaaplicada sobre corpos suspensos ou em desequilibro, garantindo o efeito correcto da gravidade sobre ospersonagens.

Outro videojogo que fez uso das capacidades deste sistema foi o Tekken 5 23, permitindo criar cenasde luta corpo a corpo e reacções físicas de forma realista. No cinema, muitas acrobacias perigosas sãoefectuadas por actores especializados, designados por duplos. O endorphin permite substituir estes duplospor actores virtuais, e exemplos disso encontram-se nos orcs e cavalos durante as batalhas do Lord OfThe Rings – The Return of The King24. Outros filmes que utilizaram este sistema de animação foram oTroy25, nos combates dos guerreiros, e Poseidon26, em sequências nas quais os personagens caíam e eramarrastados, juntamente com todos os objectos envolventes, através de um navio subvertendo-se no mar.

3.2 Animação e Controlo de Esqueletos

3.2.1 Estruturas Articuladas em Árvore

Antes de avançar, convém introduzir alguns dos conceitos que tal área requer, e a forma como elesserão considerados no âmbito do presente trabalho. Em primeiro lugar, quando falamos de biomecânica,

20http://www.naturalmotion.com/endorphin.htm21http://www.rockstargames.com/IV22http://www.lucasarts.com/games/theforceunleashed23http://www.tekken-5.com24http://www.lordoftherings.net/film/trilogy25http://troymovie.warnerbros.com26http://www2.warnerbros.com/poseidon/

Page 38: Tese 18,9 MB

16 CAPÍTULO 3. TRABALHO RELACIONADO

estamos a falar da cinemática de estruturas articuladas, com o fim de simular a mecânica do corpohumano real. Nesse contexto, juntamos conceitos tanto de anatomia do ser humano, como de robótica.Na animação virtual de estruturas articuladas, utiliza-se geralmente um modelo que consiste em segmentosrígidos, ligados por juntas, organizados hierarquicamente, como é mostrado na Figura 3.4.

Figura 3.4: Estrutura articulada representando o esqueleto de uma figura humanóide.

Este tipo de hierarquia designa-se por uma árvore, e é largamente utilizado em diversas áreas pararepresentar informação, sendo que uma árvore corresponde a um conjunto de nós, em que cada nó possuium ou mais nós filhos. Esse nó torna-se assim nó pai desses filhos, e ele próprio pode ser filho de outro nó.Cada nó da árvore corresponde a uma junta, e o segmento será a ligação entre dois nós adjacentes. Narealidade, em termos lógicos, não vamos utilizar segmentos, pois o que vamos ter é um deslocamento decada nó face ao seu nó pai, criando assim a ilusão de segmentos, e que designamos por meta segmentos. Ahierarquia é descrita de forma análoga a uma árvore genealógica, em que se representam hierarquicamentediversos membros de uma família, e é bem explicada visualmente na Figura 3.5, onde temos uma estruturahierárquica correspondente aos membros inferiores de um esqueleto humano. As bolas azuis correspondema juntas, e os traços a preto a meta segmentos. Podemos ver também a ordem atribuída às juntas, eque corresponde à ordem que vamos utilizar neste trabalho. Quando uma junta possui dois filhos,segue-se primeiro, neste caso, pelo que corresponda ao membro esquerdo do corpo, neste caso, a pernaesquerda. Uma articulação tem, anatomicamente, estrutura e funcionalidades extremamente complexas.

Figura 3.5: Hierarquia em árvore dos membros inferiores de um humanóide.

Em robótica, essa complexidade é geralmente reduzida por limitações físicas, e virtualmente reduz-sea complexidade de forma a garantir a eficiência computacional da solução. Assim, no nosso contexto,vamos considerar duas principais funcionalidades para as juntas:

1. Manter a distância entre si e a sua junta pai, de forma que o esqueleto mantenha as proporçõescorrectas;

Page 39: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 17

2. Permitir movimento local, em relação à junta pai;

3. Restringir o seu movimento local, dependendo do tipo de articulação que pretende simular.

O movimento permitido por cada junta poderá ser tanto de translação, como de rotação, dependendo dotipo de junta. Em ambos os casos, o movimento poderá estar restrito a apenas alguns eixos, e terá semprea sua amplitude limitada independentemente em cada um dos eixos, pois esse é um factor essencial doesqueleto humano que pretendemos simular. Na realidade, e como acontece em quase toda a simulaçãode esqueletos, tanto virtual como robótica, o nosso modelo será muito mais simples do que o modelo dearticulação do esqueleto real. No entanto, vamos ter considerações perceptuais sobre isso. Apesar detentarmos manter todo o modelo simples o suficiente para ser eficiente e possível de integrar em diversasaplicações, aprofundaremos a complexidade de alguns pontos importantes para que tenhamos não umasimulação perfeitamente correcta, mas perceptualmente correcta. No caso de uma junta que possuarotação em apenas um eixo, diz-se que essa junta possui um grau de liberdade (DOF). Uma junta quepermite rotação em três eixos tem três graus de liberdade, e uma junta que permita rotação em 3 eixos,e translação também em três eixos, possui 6 graus de liberdade. Assim, quando nos referirmos a graude liberdade, estamos a falar de uma forma de movimento de uma junta, que pode ser parametrizada elimitada independente dos restantes graus de liberdade dessa junta. É importante ter este conceito bemdefinido, pois teremos casos em que uma junta se movimenta em dois eixos, mas se considera possuirapenas um grau de liberdade, pois possui apenas um único valor que permite parametrizar o movimentosimultaneamente em ambos os eixos, como acontece no caso da flexão e rotação interna do joelho, queapesar de ocorrerem em eixos distintos, são movimentos acoplados, ou seja, a rotação interna do joelhoé dirigida pela flexão que lhe terá sido aplicada. Posto tudo isto, distinguimos que, no âmbito destetrabalho, nos referimos a articulações para indicar articulações anatómicas do corpo humano e juntaspara indicar juntas do nosso esqueleto, sendo que distinguimos também que um grau de liberdade doesqueleto humano corresponde aos tipos de movimento anatómicos enunciados no ponto 2.2.1, ao passoque um grau de liberdade numa das nossas juntas é referente a um dos movimentos que a junta permite,como foi explicado no parágrafo anterior. Assim, a árvore que vamos utilizar para simular a biomecânicado esqueleto corresponde unicamente a uma árvore de juntas dispostas de forma hierárquica, sendo quecada junta pretende simular um ou mais graus de liberdade do esqueleto humano, com valores limitadosa uma amplitude bem definida para cada um deles.

3.2.2 Animação de Figuras Humanas

Importa descrever neste ponto os vários métodos que geralmente são utilizados para criar animaçõesde figuras humanas. [21] e [22] apresentam pesquisas recentes que englobam a maioria dos diversos méto-dos existentes. Estes podem ser subdivididos em dois grandes grupos: síntese de movimento ou métodosprocedimentais, e captura de movimento. O primeiro consiste um utilizar sistemas que permitam produ-zir sequências de animação directamente no meio virtual. O segundo, por sua vez, consiste em registarmovimento no mundo real, e traduzi-lo para o meio virtual. Apesar disso, a subdivisão é geralmenteconsiderada em três principais subgrupos, que passamos a descrever.

3.2.2.1 Síntese Cinemática

Estes métodos consistem em criar directamente poses numa figura. Essas poses podem ser criadasinteractivamente, especificando a posição de determinados pontos, ou orientação de determinados seg-mentos, ou ainda ser gerada procedimentalmente. O aspecto que mais distingue estes métodos dos outrosé que se tem em conta apenas a pose do esqueleto, e não as configurações ou atributos físicos inerente aeste tipo de figuras.

Page 40: Tese 18,9 MB

18 CAPÍTULO 3. TRABALHO RELACIONADO

3.2.2.2 Síntese Dinâmica

Estes métodos distinguem-se dos anteriores por se basearem nos atributos físicos da figura em questão.Aqui incluem-se tanto métodos que simulam a actividade muscular, como métodos que simulam o efeito doambiente físico sobre o corpo. Ao simular a actividade muscular, produz-se movimento como resultado deforças e torções aplicadas sobre os ossos, tendo com conta densidade muscular, massa e outros atributos.Na simulação do meio físico envolvente, tem-se em conta a gravidade que é aplicada também aos membros,e que afectam a força que transmitem, como também o equilíbrio do centro de massa, entre outros factoresque possam ser incluídos para aumentar a fiabilidade da solução face à realidade.

3.2.2.3 Captura de Movimento

Estes métodos distinguem-se dos dois anteriores porque em vez de se tentar compreender em profun-didade o movimento do corpo humano para o replicar, utiliza-se o corpo humano real para daí extrair todaa informação necessária relativamente ao movimento. No fundo estes métodos tentam imitar o compor-tamento do corpo humano, através da observação, e designam-se vulgarmente por técnicas de MOCAP,que vem do inglês MOtion CAPture. A captura de movimento pode ser realizada de diferentes formas.[23] apresenta um bom apanhado de diferentes técnicas que podem ser utilizadas para capturar movi-mento. As mais populares são as técnicas ópticas, que se baseiam em capturar o movimento com umacâmara, e daí identificar e extrair o movimento de determinados pontos ou articulações ao longo do tempo.O resultado de qualquer uma das técnicas será um conjunto de trajectórias em espaço tridimensional,correspondendo cada uma, à trajectória descrita por algum ponto específico do corpo humano. Estastrajectórias podem depois ser filtradas e processadas de modo que possam ser utilizadas para animar umesqueleto virtual. O processo de ajustar as trajectórias resultantes de MOCAP a um esqueleto designa-sepor fitting.

3.2.2.3.1 Captura Óptica A captura óptica possui de modo geral, duas versões. Podemos colocarmarcas em determinados pontos específicos do corpo de um actor, e gravar uma sequência de movimentoutilizando várias câmaras de infra-vermelhos, dispostas em redor da área de actuação. As marcas podemser ou activas ou passivas. No caso de serem activas, elas são na realidade emissores de luz infra-vermelha.As passivas são apenas objectos revestido de material retro-reflectivo, sendo que neste caso as câmarasutilizadas terão de ser responsáveis pela emissão de luz infra-vermelha, para que as marcas a possamreflectir. O resultado será um vídeo por câmara, onde cada uma das marcas está evidentemente visível,por exemplo a branco, sobre um fundo escuro. Sobre estas imagens são aplicados algoritmos que asprocessam, extraindo a informação da trajectória desses pontos em espaço tridimensional através detécnicas de triangulação, dada a posição de cada marca na vista de cada uma das câmaras. Esta vertentede captura de movimento tem a particularidade de ser também útil e utilizada para capturar expressãofacial de actores, algo que não é de todo abordado neste trabalho, mas que no entanto, ajuda a ilustrara aplicabilidade desta técnica. A Figura 3.6 ilustra a utilização de captura óptica de movimento paracapturar em simultâneo o movimento do esqueleto e da cara de uma actriz, no filme Avatar27. O custo de

Figura 3.6: Utilização de captura óptica em cinema, no filme Avatar

27www.avatarmovie.com/

Page 41: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 19

um sistema deste tipo pode variar bastante de solução para solução, havendo ainda alguma diferença entresistemas activos e passivos, pois nos sistemas passivos as câmaras têm de possuir o emissor, enquanto asmarcas são objectos baratos, face ao caso de sistemas activos, em que a câmara apenas tem de capturar,mas cada emissor é mais caro do que no caso passivo. Além disso, quanto mais câmaras forem utilizadas,menor é a probabilidade de alguma marca sofrer oclusão, pelo que o número de câmaras a utilizar é umdos factores que dita a escala económica e de precisão do sistema. Um sistema destes da OptiTrack28, porexemplo, pode ser actualmente adquirido por entre cerca de 5000€ e 15 000€, com entre 6 a 24 câmaras,ou por cerca de 7 000 para cada câmara, para sistemas com mais precisão como a câmara Ruby daStandard Deviation29. Existem também soluções que consistem em estruturas já montadas com centenasde sensores de infra-vermelhos que não precisam de calibração, e fato com dezenas de emissores. Estassoluções podem, no entanto, ascender aos 65 000€, como no caso do sistema ReActor 2 da AscensionTechnology Corporation30. Outra hipótese é utilizar algoritmos que processam vídeos de imagem real, emluz visível, e que são capazes de identificar e segmentar a figura humana, identificando as articulações,e extraindo daí também as suas trajectórias em espaço tridimensional. Este método designa-se tambémpor markerless MOCAP (MOCAP sem marcas), pela particularidade de não utilizar qualquer elementoextra colocado no corpo do actor. As diversas fases utilizadas por um sistema destes são ilustradasna Figura 3.7. Uma vertente nova de captura sem marcas, que tem surgido mais recentemente, é a

Figura 3.7: Captura óptica de movimento sem recorrer a marcas, ilustrando diversas fases do processa-mento da imagem.

utilização de dispositivos que capturam visualmente a profundidade de uma cena. O dispositivo dessegénero mais actualmente mais relevante é o Kinect31 da Microsoft32, que custa apenas cerca de 140€.Este dispositivo captura uma imagem em tempo real, que representa o mapa de profundidade da cena,que é uma imagem em escala de cinzentos, onde os pontos mais claros representam objectos próximosda câmara, e pontos mais escuros representam objectos longe da câmara. Esta imagem é depois alvo depós-processamento, de forma a extrair os elementos relevantes para animar um personagem virtual, oque permite que jogadores utilizem o próprio corpo para controlar os personagens, sem terem de utilizarqualquer elemento adicional, como se pode observar na Figura 3.8. Actualmente existem já bibliotecasgratuitas que permitem a utilização deste dispositivo em computadores, como o OpenKinect33, o que abreum enorme interesse no meio académico. O grande problema que se enfrenta nas técnicas ópticas é aoclusão, ou seja, durante o movimento há marcas ou partes do corpo que são ocludidas por outras partesdo corpo, o que gera trajectórias incompletas ou segmentadas para algumas marcas em determinadosintervalos de tempo. A captura utilizando reflectores infra-vermelhos possui também o problema deexigir equipamento extremamente caro, ao passo que a captura utilizando imagem real é, de todas astécnicas existentes, e mais barata. No entanto, é aquela que está ainda mais atrasada em termos de sercapaz de produzir resultados fiéis ao movimento real.

28http://www.naturalpoint.com/optitrack/29http://www.sdeviation.com/30http://www.ascension-tech.com/realtime/reActor2.php31http://www.xbox.com/en-US/kinect32http://www.microsoft.com/33http://openkinect.org/wiki/Main_Page

Page 42: Tese 18,9 MB

20 CAPÍTULO 3. TRABALHO RELACIONADO

Figura 3.8: Sistema Kinect da Microsoft.

3.2.2.3.2 Captura Magnética Outro método de captura também popular é a captura magnética.Neste método, as marcas colocadas sobre o corpo são na realidade sensores electromagnéticos, que per-mitem saber individualmente qual a sua distância em relação aos outros. Isto permite inferir rápidae facilmente as suas posições, e daí, valores de rotação dos diversos segmentos. No entanto, é menosutilizado, em especial, por ser bastante sensível a interferência por parte de outros objectos metálicos oumesmo campos magnéticos. Além disso, muitos dos modelos, e em especial os mais baratos, possuemum cabo ligado a cada sensor, como se observa na Figura 3.9, o que não permite grande liberdade demovimento, e exige cuidado para não entrelaçar os cabos. As vantagens são que os dados resultantesnecessitam de menos pós-processamento do que na captura óptica, e em especial, este método carece doproblema de oclusão. A Polhemus possui o sistema sem fios Libery Latus34 que pode custar entre cerca

Figura 3.9: Sistema de marcas magnéticas para captura de movimento.

de 6000€ e 12 000€, entre modelos que trazem um sensor mas suportam 4 a 16. O preço final depoispode ser escalado à medida, custando cada sensor extra cerca de 2000€.

3.2.2.3.3 Exo-Esqueletos e Fatos Inerciais Um método menos popular é o de exo-esqueletos.Estes exo-esqueletos consistem num fato que se veste, e no qual se podem colocar estruturas metálicasligadas por acelerómetros nas principais juntas, que assim permitem retribuir directamente a posição eorientação de cada junta do esqueleto. As principais vantagens e desvantagens são semelhantes às dacaptura electromagnética. O principal problema deste método é que o fato não permite flexibilidadeou velocidade para todas as situações, visto que além de oferecer entrave em termos de conforto, exigeainda um ligeiro grau de esforço adicional ao actor, devido à movimentação das peças utilizadas nasmedições. Versões antigas utilizavam também cabos como nos sistemas magnéticos, para comunicar como computador. Sistemas mais recentes, como o da Figura 3.10(a) são actualmente uma boa soluçãomais acessível, porque funcionam sem fios, com as vantagens que este tipo de sistema traz em termos detratamento de dados. A Animazoo35 possuía uma versão sem fios por cerca de 23 000€, que recentementeactualizou para uma versão muito mais acessível, custando cerca de 6 000€, mas que no entanto éligado por fios. Actualmente há os chamados fatos inerciais, que se baseiam nos exo-esqueletos, mastornam-se mais práticos e fáceis de utilizar, pois utilizam pequenos sensores de inércia pouco perceptíveis

34http://www.polhemus.com/?page=Motion_Liberty_Latus35http://www.animazoo.com/index.php/gypsy-7

Page 43: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 21

ou intrusivos ao movimento do actor e conseguem ser integrados em fatos completos de peça única(semelhantes aos fatos de mergulho), que podem ser utilizados em condições em que as outras soluçãonão seriam praticáveis, como no caso da Figura 3.10(b). Estes são sistemas bastante flexíveis e fáceis deutilizar, no entanto, os preços, por exemplo, do IGS-190 36 da Animazoo ascendem aos 46 000€.

(a) Exo-esqueleto (b) Fato inercial

Figura 3.10: Exo-Esqueleto e Fato Inercial da Animazoo.

3.2.2.3.4 Captura Acústica Ainda outra alternativa para capturar movimento é a captura pormeios acústicos. Este método é a vertente acústica do método óptico, ou seja, os diversos sensoresque são colocados no corpo transmitem um sinal acústico de alta frequência. Diversos receptores sãocolocados em volta da área de actuação (tal como as câmaras no caso da captura óptica), e através davelocidade do som e da diferença de tempo que cada sinal acústico demora a chegar a cada receptor, épossível triangulá-los e inferir a sua posição tridimensional. A vantagem que este sistema oferece sobreos sistemas de captura óptica é que consegue ser mais barato, dependendo da qualidade do equipamentoutilizado, e é possível identificar individualmente cada receptor, pois cada um é definido para emitir auma frequência específica, algo que não é possível na captura óptica. As desvantagens são que são menosprecisos do que os outros sistemas, e é um sistema bastante sujeito a interferência sonora externa [23].

3.2.2.4 Quadro-a-Quadro versus Interpolação de Quadros-Chave

É importante ainda notar que independentemente do método que utilizarmos para sintetizar oucapturar uma animação, existem ainda duas vertentes em que esses dados podem ser temporalmenteutilizados. Importa perceber aqui o conceito de quadro (frame). Comparando por exemplo com umfilme, um quadro será cada uma das imagens estáticas que compõe o filme, ou seja, no sistema europeuPAL, um segundo de vídeo corresponde a uma sequência de 25 imagens, ou quadros.

Quando falamos de quadros numa sequência de animação, estamos a falar de poses específica eexplicitamente definidas pelas quais o actor irá transitar durante a execução da animação. Assim, setivermos uma animação que seja actualizada trinta vezes por segundo, essa animação consistirá emtrinta poses por segundo, que aplicadas sucessivamente ao personagem, criam o efeito de animação, ou achamada ilusão de vida. Esta ideia vem da animação tradicional, e continua a ser, por vezes, utilizada naanimação digital, sendo este o conceito de uma animação executada quadro-a-quadro, ou seja, é necessáriodefinir a pose exacta do personagem a cada instante. No entanto, no meio digital existe a técnica deinterpolação, que consiste na estimação de valores intermédios entre dois valores conhecidos. Assim,herdou-se também a técnica de key-framing e in-betweening, da animação tradicional, que é utilizadaquando um animador principal desenha um conjunto de poses que são consideradas as poses principaispara definir correctamente o movimento, e depois os animadores secundários desenham as poses quedevem ser encontradas entre essas poses chave, de forma a completar a animação [24]. Dessa forma, édiferente pensarmos numa técnica que se preocupa em definir individualmente cada uma das poses, ouem definir apenas poses em determinados pontos, deixando que a transição entre poses se realize por

36http://www.animazoo.com/index.php/igs-190-m

Page 44: Tese 18,9 MB

22 CAPÍTULO 3. TRABALHO RELACIONADO

interpolação. Algumas técnicas podem até misturar estes dois métodos, definindo a cada quadro a posede cada junta para alguns pontos mais críticos, e definindo outras juntas apenas com quadros chave.

Ligando estes conceitos com os métodos de síntese e captura de animação abordados acima, é bastantedirecto que a captura de movimento constitui, em si, um método de captura quadro-a-quadro. No entanto,há técnicas que podem analisar estes dados para extrair daí poses chave, para posterior edição, e acabargerando uma animação que faça uso de interpolação. No que toca a animação interactiva, por parte deanimadores, é frequente a utilização de quadros-chave, pois animar individualmente cada um dos quadrostorna-se extremamente exaustivo. Por sua vez, uma simulação de física poderá ser considerada quadroe quadro, apesar de que é comum que a simulação física seja executada de forma dessincronizada davisualização, e portanto, a física é calculada a um ritmo menor do que a animação é exibida. Nessecaso, a física pode fazer uma animação quadro e quadro, fornecendo, no entanto, dados de, por exemplo,velocidade, para que o ciclo de visualização possa tentar interpolar esses dados enquanto o sistema defísica calcula o seu próximo passo.

Após estudar e analisar diversas técnicas de animação que apresentamos na secção seguinte, torna-se nítido que a certo ponto ambos os métodos são utilizados de forma interligada, sendo, no entanto,essencial perceber os seguintes conceitos:

• Um quadro de animação representa um instante da animação que pode ser visualizado;

• Um quadro-chave de animação representa um quadro de animação cuja pose foi explicitamentedefinida;

• A interpolação é a técnica que permite induzir a sequência de quadros que se encontra entre doissucessivos quadros-chave.

3.2.2.5 Representação de Rotações e Orientações

Não existe uma forma única ou mais correcta de representar rotações e orientações. Para cada situ-ação, deveremos ser capaz de compreender o que precisamos. Quando estamos a lidar com utilizadores, épreferencial que se representem rotações através de ângulos Euler, no entanto, este tipo de representaçãopossui bastantes problemas. Quando queremos utilizar interpolação, é preferencial que se utilizem quater-niões, no entanto, este não representam qualquer significado ao utilizador. O que geralmente acontece éque em diferentes pontos das aplicações, utilizamos diferentes representações, pelo que se torna necessáriocompreender não só como cada uma funciona, mas também como efectuar a respectiva conversão. Inde-pendentemente da representação que escolhemos, é importante ainda considerar se estamos a trabalharem coordenadas globais ou locais. Se estivermos a trabalhar em coordenadas globais, as rotações serãoaplicadas relativamente aos eixos coordenados do referencial mundo, e portanto, o conceito de “rodar paraa direita” será o mesmo para todos os objectos. Se estivermos em rotações locais, a rotação é aplicada emrelação ao referencial em que o objecto se encontra já, e portanto, é como pensarmos que estamos dentrodo objecto (como se fosse um avião), e nesse caso, visto de fora do avião, por alguém que se encontrassefixo no referencial mundo, o acto de “rodar para a direita” depende da orientação com que o objecto seencontra já. Nesse caso, se tivermos um objecto a vir na nossa direcção, e outro a afastar-se da nossadirecção (em sentido contrário ao primeiro), se ambos rodarem para a direita, nós veremos cada um delesa ir para um lado diferente. Esta diferença será mais bem explicada e visualizada nas secções seguintes,para cada um dos tipos de representação de rotações e orientações que enunciamos.

3.2.2.5.1 Ângulos Euler A forma mais comum e intuitiva de representar rotações é através doschamados ângulos de Euler. Estes ângulos correspondem a um vector tridimensional que contém trêselementos, indicando, cada um deles, um valor de rotação que deverá ser aplicado, respectivamente, a cadaum dos eixos referenciais. A sua forma habitual é (αx, αy, αz), sendo cada elemento αβ correspondenteao ângulo que deverá ser aplicado sobre o eixo β. Com este tipo de representação de orientações, énecessário considerarmos a ordem pela qual elas são aplicadas, como demonstramos na Figura 3.11.

Page 45: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 23

A figura central mostra uma chaleira sem qualquer rotação aplicada. As restantes são o resultado deaplicar a rotação (αx, αy, αz) = (30◦, 45◦, 60◦), utilizando referenciais e ordem de aplicação diferentes.Cada uma das figuras possui um eixo que indica o seu referencial local, e centro, em baixo, é indicado o

Figura 3.11: Aplicação de rotações em ordens diferentes e em sistemas de coordenadas diferentes.

referencial do mundo. Podemos observar a diferença entre a utilização de referencial local e referencialglobal comparando as chaleiras da direita com as da esquerda, respectivamente. Para cada um deles éainda apresentado um exemplo de como a ordem de rotação é importante neste tipo de representação.Isto acontece porque, tendo três valores de rotação para aplicar, temos de aplicar um de cada vez, peloque o primeiro afectará os outros dois, e o segundo afectará também o último. Quando utilizamoscoordenadas locais, é frequente designar os diversos graus de liberdade através de uma nomenclatura quevem da aviação: Yaw, Pitch e Roll. A Figura 3.12 mostra um avião, com os eixos a que geralmente éatribuído cada termos. Nota-se que este referencial, utilizado na computação gráfica, não correspondeexactamente ao referencial utilizado em aviação: pegando no exemplo do Pitch, em aviação, um Pitchpositivo significará que a nave está em ascensão, ou seja, aponta para cima; na computação gráfica, porém,assumiram-se os sentidos usuais em matemática, pelo que um Pitch positivo fará a nave apontar parabaixo. Este tipo de representação incorre também ainda no problema que se designa por Gimbal Lock.Isto acontece quando a rotação de um dos eixos alinha os outros dois, o que retira um grau de liberdadeà junta, dando a impressão de que está bloqueada. Esta situação é ilustrada na Figura 3.13. Gimbalsignifica giroscópio, que podemos identificar na mencionada figura. À esquerda temos o giroscópio na suaposição neutra, na qual identificamos que existem três formas possíveis de rodar o objecto, rodando cadaum dos círculos coloridos, que rodam segundo o eixo de cor correspondente. No entanto, na imagem àdireita, verificamos que após rodar o eixo vermelho 90 graus, os eixos azul e verde passam a coincidir,pelo que, embora possamos rodar cada um deles, o seu efeito será o mesmo, o que dá a impressão deque se perdeu um grau de liberdade. Na realidade, deixamos de conseguir rodar o objecto na direcçãoque antes era permitida pelo eixo azul [24]. Compreende-se que quando se utiliza directamente estarepresentação para aplicar rotações, é necessário ter atenção a um conjunto diverso de factores, de forma

Page 46: Tese 18,9 MB

24 CAPÍTULO 3. TRABALHO RELACIONADO

Figura 3.12: Sistema de coordenadas aeroespacial (Yaw, Pitch, Roll).

Figura 3.13: Sistema de marcas magnéticas para captura de movimento.

a garantir que o resultado é aquele que pretendemos. Assim, este tipo de representação tem vindo acair em desuso durante o processo de cálculo na computação gráfica, sendo mais utilizado apenas parafornecer parâmetros intuitivos aos utilizadores.

3.2.2.5.2 Matriz de Rotação Uma matriz de rotação é um objecto que representa completamenteuma rotação, sem termos de especificar nenhuma ordem. Nesta representação temos de começar por terem consideração se estamos a trabalhar com vectores-linha ou vectores-coluna (row-major ou column-major). Uma matriz de rotação é uma matriz quadrada, 3x3, cujos vectores são ortogonais, e que possuideterminante 1. Aqui surge a diferença entre utilizar vectores-linha e vectores-coluna. No primeiro caso,consideramos que cada linha é um vector; no segundo caso consideramos que cada coluna é um vector.Na realidade, esta diferença é puramente de notação, de forma que se estabeleça uma interpretaçãocoerente das matrizes. Para converter entre notação de vectores-linha e vectores-coluna basta transpor amatriz. Além disso, pós-multiplicar uma matriz em notação vector-coluna é o mesmo que pré-multiplicá-la em notação vector-linha. Uma matriz representada na notação de vector-coluna por

( x1 y1 z1x2 y2 z2x3 y3 z3

), é

representada em notação de vector-linha como( x1 x2 x3y1 y2 y3z1 z2 z3

). Repara-se que a notação de vector-linha é a

que corresponde geralmente àquilo que um programador possa esperar, ao definir uma matriz 3x3 comosendo na realidade, um vector de 9 valores.

Page 47: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 25

A representação padrão para matrizes é o formato vector-linha. No entanto, OpenGL, por exemplo,utiliza o formato vector-coluna, pelo que é esse formato que adoptamos neste documento. Nestas matrizes,os três eixos x, y e z são ortogonais, portanto definem um espaço, ou seja, cada um deles indica, face àmatriz identidade (rotação zero), qual a direcção que cada eixo irá tomar, e portanto, representa a rotaçãodirecta que transforma a identidade neste novo espaço. Desta forma, a diferença entre uma matriz querepresenta uma rotação local, e uma matriz que representa uma rotação global, é que a matriz de rotaçãoglobal para uma determinada orientação, será a matriz que, multiplicada à matriz identidade, resulta naorientação pretendida. Uma matriz de rotação local será uma matriz que, quando multiplicada à matrizque representa a orientação do espaço do pai, resulta na orientação desejada. Por outras palavras, amatriz de rotação local será a matriz que transforma as coordenadas do pai nas coordenadas do filho.Uma grande vantagem de utilizar matrizes para representar rotações, é que a rotação inversa da matrizé representada pela sua matriz inversa, e uma das propriedades da matriz de rotação é que a sua inversacorresponde à sua transposta, o que faz com que seja extremamente rápido calculá-la:

A =

a d gb e hc f i

A−1 = AT =

a b cd e fg h i

(3.2.1)

Quando queremos calcular a matriz que efectua a transformação entre dois espaços, basta resolver aequação:

OrientacaoF inal = MatrizDeRotacao ∗OrientacaoInicial (3.2.2)

o que resulta em

MatrizDeRotacao = OrientacaoF inal ∗OrientacaoInicial−1 (3.2.3)

ou sejaMatrizDeRotacao = OrientacaoF inalxOrientacaoInicialT (3.2.4)

As grandes desvantagens na utilização de matrizes são que, em primeiro lugar, é difícil para um humanointerpretá-la, tirando algumas situações específicas; e em segundo lugar, não é possível interpolá-lasdirectamente. Se tentarmos calcular uma matriz intermédia simplesmente somando ambas e dividindopor dois, o resultado é, na maioria dos casos, uma matriz que nem é ortogonal, nem representa de algumaforma a rotação pretendida. Finalmente, a sua representação necessita de 9 valores, o que a torna umarepresentação cara em termos de memória [25].

3.2.2.5.3 Eixo-Ângulo (Axis-Angle) A representação em eixo-ângulo é bastante popular, poisa sua utilização é intuitiva, e é compacta, pois pode ser representada apenas com um vector de trêselementos. Esta representação é uma extensão da Fórmula de Rotação de Rodrigues [26], que mostra comorodar um vector, sobre determinado eixo, com determinado ângulo. Por extensão, executa-se o mesmo,mas considerando os três vectores ortogonais que formam a base de um espaço. Torna-se mais fácil deperceber esta representação se a visualizarmos, como na Figura 3.14, o que aliás, é uma das suas vantagens.É mais fácil de utilizar quando temos a possibilidade de a configurar ou parametrizar visualmente. Nestafigura temos um referencial inicial ligeiramente transparente. Foi-lhe aplicada uma rotação em torno doeixo α, representado a amarelo, com um ângulo β, representado pelo segmento de círculo, também aamarelo. Podemos ver o resultado final representado pelo referencial XY Z opaco. Apesar de ilustrarmoso segmento de círculo apenas para ilustrar a rotação do referencial Z, os restantes referenciais sofreramuma rotação análoga, e que poderia ter sido representado nos mesmos, da mesma forma. É trivialreparar que, se o vector a é definido com três componentes, e o ângulo β é outro componente, então estarepresentação aparenta necessitar de um total de quatro componentes. No entanto, o eixo de rotaçãoserve apenas para indicar uma direcção, sendo irrelevante a sua magnitude. Por isso, em vez de adicionaruma nova componente, é usual utilizar a magnitude do vector para representar esse ângulo, compactandoassim a representação em apenas três componentes, apesar de esta compactação não ser obrigatória,sendo possível utilizar quatro componentes, de forma a eliminar a computação necessária ao cálculo damagnitude do vector [24].

Page 48: Tese 18,9 MB

26 CAPÍTULO 3. TRABALHO RELACIONADO

Figura 3.14: Representação Eixo-Ângulo.

3.2.2.5.4 Quaterniões Os quaterniões são uma forma de representar rotações, descoberta por SirWilliam Hamilton, em 1843. Eles são uma forma de números complexos que contém uma parte real, etrês imaginárias, na forma

q = a+ bi+ cj + dk (3.2.5)

com as seguintes propriedades:i2 = j2 = k2 = −1 (3.2.6)

ij = k (3.2.7)

ji = −k (3.2.8)

Não vamos nesta secção analisar o desenvolvimento teórico dos quaterniões. Em vez disso, apresentamosapenas algumas propriedades, operações e conversões relevantes para o trabalho em questão. Ao leitorinteressado em aprofundar este assunto, recomendamos a consulta do capítulo XII.3.3 de [25]. Geralmenteos quaterniões representam-se num formato análogo à representação eixo-ângulo, excepto que aqui énecessário separar o eixo do ângulo, exigindo assim que se utilizem 4 elementos para representar umaorientação. Uma das suas particularidades, pelo menos no âmbito da computação gráfica, é que eles sãounitários, ou seja, a sua magnitude é 1. A forma usual de pensar em quaterniões é:

q = (s, v) (3.2.9)

onde(s, v) = s+ vxi+ vyj + vzk (3.2.10)

qw = s (3.2.11)

qx = vx (3.2.12)

qy = vy (3.2.13)

qz = vz (3.2.14)

Algumas propriedade interessantes são o facto de a rotação representada por ˘q, R−q ser exactamentea mesma que a rotação Rq representada por q, e ainda, que a rotação inversa de q é representada peloinverso de q, que no caso de quaterniões unitários, corresponde ao seu conjugado, ou seja:

Rq = R−q (3.2.15)

R−1q = Rq−1 (3.2.16)

qq−1 = q−1q = 1 (3.2.17)

Page 49: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 27

q−1 = q̄ = s− vxi− vyj − vzk (3.2.18)

O conceito deles é assim semelhante ao conceito de eixo-ângulo, ou seja, os quaterniões permitem re-presentar uma rotação sobre o eixo v, com ângulo α. No entanto, eles constituem, matematicamente,um grupo, pelo que podem ser efectuadas operações sobre os mesmos. Em especial, eles permitem serinterpolados, ou seja, é fácil calcular pontos médios entre duas rotações. Ao constituírem um grupo, osquaterniões são dotados de uma operação de multiplicação, que, multiplicando dois quaterniões, produztambém um quaternião. Essa operação é calculada da seguinte forma:

q1 = (s1, v1) (3.2.19)

q2 = (s2, v2) (3.2.20)

q1q2 = (s1s2 − v1.v2, s1v2 + s2v1 + v1xv2) (3.2.21)

Agora passando à utilização de quaterniões unitários para efectuar rotações, começamos por ver comorepresentar a rotação Ra,v como um quaternião, ou seja, o quaternião que representa uma rotação sobreo eixo definido pelo vector v, com ângulo α:

q = (cos α2 , vx sin α2 , vy sin α2 , vz sin α2 ) (3.2.22)

Para converter um quaternião de volta à representação eixo-ângulo, o procedimento será:

a = 2 cos−1 qw (3.2.23)

vx = qx√1− qw2

(3.2.24)

vy = qy√1− qw2

(3.2.25)

vz = qz√1− qw2

(3.2.26)

Passamos agora a apresentar a forma de rodar um vector v utilizando o quaternião q, resultando novector w:

w = qvq−1 (3.2.27)

Nesta expressão, v e w estão a ser tratados como um quaterniões. Na realidade, o que é necessário fazeré “elevá-los” a quaterniões puros (com parte real nula), na forma

vq = (0, v) = vxi+ vyj + vzk (3.2.28)

e assim, calcular a rotação como um produto de quaterniões

wq = qvqq−1 (3.2.29)

resultando que o vector final w se extrai de wq:

wq = (0, w) (3.2.30)

Observando as equações (3.2.24) a (3.2.26), que mostram como extrair do quaternião o eixo que representa,vemos que, se qw é zero, então o denominador passa a ser neutro, pelo que w é retirado directamente dascomponentes de wq, sem cálculos adicionais. Finalmente, vamos apresentar um método para converteruma matriz de rotação para quaternião, e vice-versa. Esta conversão pode ser feita de várias maneiras;no entanto, seguimos o método proposto em [25]. Neste método consideram-se quatro casos diferentes,que têm como objectivo evitar a divisão por zero, e a instabilidade numérica a que está sujeita a divisãopor números muito próximos de zero.

SejaM uma matriz de rotação em formato vector-coluna, eMi,j o elemento da matriz correspondente

Page 50: Tese 18,9 MB

28 CAPÍTULO 3. TRABALHO RELACIONADO

à coluna i, linha j, o quaternião final será dado por q:

M =

M0,0 M1,0 M2,0M0,1 M1,1 M2,1M0,2 M1,2 M2,2

(3.2.31)

traço = M0,0 +M1,1 +M2,2 (3.2.32)

Se traço > M0,0,M1,1eM2,2 (3.2.33)

qw = 12√

traço + 1 (3.2.34)

qx = M2,1 −M1,24qw (3.2.35)

qy = M0,2 −M2,04qw (3.2.36)

qz = M1,0 −M0,14qw (3.2.37)

Senão, Se M0,0 > M1,1eM2,2 (3.2.38)

qx = 12√

2M0,0 − traço + 1 (3.2.39)

qw = M2,1 −M1,2

4qx(3.2.40)

qy = M1,0 −M0,1

4qx(3.2.41)

qz = M0,2 −M2,0

4qx(3.2.42)

Senão, Se M1,1 > M2,2 (3.2.43)

qy = 12v(2M1,1 − traço + 1) (3.2.44)

qw = M0,2 −M2,0

4qy(3.2.45)

qx = M1,0 −M0,1

4qy(3.2.46)

qz = M2,1 −M1,2

4qy(3.2.47)

Senão (3.2.48)

qz = 12v(2M2,2 − traço + 1) (3.2.49)

qw = M1,0 −M0,1

4qz(3.2.50)

qx = M0,2 −M2,0

4qz(3.2.51)

qy = M2,1 −M1,2

4qz(3.2.52)

Embora pareça extenso, na realidade é um método bastante eficiente, e que endereça o problema de formaapropriada à sua utilização em computação gráfica, mantendo estabilidade numérica. A conversão de um

Page 51: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 29

quaternião para uma matriz de rotação é apresentada de seguida, numa forma mais compacta:

MRq =

q2w + q2

x − q2y − q2

z 2qxqy − 2qzqw 2qxqz + 2qyqw2qxqy + 2qzqw q2

w − q2x + q2

y − q2z 2qyqz − 2qxqw

2qxqz − 2qyqw 2qyqz + 2qxqw q2w − q2

x − q2y + q2

z

(3.2.53)

Mais uma vez, observa-se que o processo de conversão não incorre, por exemplo, em cálculos de funçõestrigonométricas, que são geralmente um ponto que torna os algoritmos mais computacionalmente pesados.Na realidade, existe até um conjunto de operações redundantes que, durante uma implementação de talalgoritmo, podem ser calculadas apenas uma vez, e posteriormente reutilizadas[Buss2003].

3.2.3 Técnicas Utilizadas em Animação e Controlo de Esqueletos

Quando se pretende simular esqueletos, é necessário utilizar técnicas de animação hierárquica deestruturas rígidas articuladas. Cada uma desta estrutura está ligada a outras através de juntas, e énestes objectos que se foca a aplicação de restrições ao movimento. Essas restrições são importantes paracorrigir eventuais poses anatomicamente incorrectas que algum sistema de composição ou sintetizaçãode movimento possa gerar, como acontece num bug apresentado no videojogo FIFA Soccer 09 37, daElectronic Arts38 (Figura 3.15). Para melhor perceber que metodologias poderíamos seguir para resolver

Figura 3.15: FIFA Soccer 09 da Electronic Arts.

o nosso problema, decidimos criar uma ontologia que nos ajudasse a contextualizar a nossa situação.Assim, analisámos diversos métodos e técnicas de animação de esqueletos, e de formas de controlar estaanimação: tanto por meios interactivos, como por processamento em tempo real ou offline39. Acabámospor definir diversos pares opostos que definem determinado aspecto de cada método ou técnica, deforma que possamos triá-los de forma binária, relativamente a cada um desses pares: para cada par decaracterísticas A, e seu oposto B, cada técnica pertencerá ou a A ou a B. A fim de não expandir demasiadoo âmbito, decidimos depois expandir subcaracterísticas apenas para a característica A ou B de cada par,que interessa à nossa solução, de forma que vamos analisando técnicas cada vez mais específicas ao nosso

37http://www.ea.com/games/fifa-soccer-0938http://www.ea.com/39Um processo que corre offline é um processo que não corre em tempo real, e que, portanto, no nosso contexto, dá-se

mais ênfase à qualidade, em vez de performance.

Page 52: Tese 18,9 MB

30 CAPÍTULO 3. TRABALHO RELACIONADO

problema, até encontrar finalmente um contexto mais reduzido para analisar. Os diversos pares opostosde características que definimos estão estruturados na Figura 3.16, e descrevem-se de seguida:

1. Síntese de movimento vs. Movimento pré-gravado: Começamos por distinguir técnicas que sebaseiam em animações gravadas previamente à sua aplicação, de técnicas que de alguma formageram a animação, quer por meios de síntese que por interacção ou por comportamento, ou dirigidopor objectivos. Interessa-nos aqui a vertente de animações gravadas previamente.

2. Técnicas aplicadas no espaço-tempo vs. Técnicas quadro-a-quadro: As técnicas baseadas no espaço-tempo da animação têm em conta, a cada momento, a história e/ou o futuro da animação, ou seja,permitem que o movimento a cada instante seja adaptado conforme a pose anterior, ou a posepara a qual a animação se dirige. Nas técnicas quadro-a-quadro, as restrições são aplicadas apenasconforme a pose do esqueleto a cada momento. Como queremos um esqueleto capaz de ser utilizadoem diversos âmbitos, e queremos poder trabalhar inclusive com animações que possam estar aser capturadas ou sintetizadas previamente, em tempo real, portanto interessa-nos trabalhar asrestrições quadro-a-quadro.

3. Offline vs Tempo real: As técnicas offline são geralmente mais precisas do que as técnicas em tempo-real, pois podem despender de mais tempo de computação. No entanto, foi já definido no âmbitodesta tese que queremos técnicas possíveis de ser utilizadas em tempo real.

4. Aplicado sobre marcas MOCAP vs Aplicado sobre juntas de um esqueleto: Muitas técnicas estu-dadas pretendem ser utilizadas directamente com as marcas gravadas pelo sistema de captura demovimento, e que portanto, incluem que se infira daí as posições efectivas das juntas corresponden-tes às marcas. Interessa-nos a vertente de receber animações que estejam já formatadas para umesqueleto constituído por juntas.

5. Modelo Dinâmico vs. Modelo Cinemático: Há técnicas que se baseiam em sistemas de física paraimpor as restrições. Essas técnicas são designadas de técnicas dinâmicas. Pelo contrário, outrastécnicas, como as que pretendemos, utilizam somente cinemática para impor as restrições.

6. Utiliza Cinemática Inversa vs. Utiliza Cinemática Directa: Há técnicas que fazem uso de métodosde cinemática inversa para garantir as restrições, e outros que trabalham as restrições apenas comcinemática directa, ou dentro do próprio espaço local de cada junta. Assumimos que numa faseposterior, o esqueleto poderá vir a integrar uma camada de cinemática inversa, para melhor garantirrestrições não a nível anatómico, mas a fim do seu ambiente de execução, como por exemplo, manteros pés no chão, ou agarrar objectos. No entanto, a fim de implementar apenas as restrições queexistem por questões biomecânicas, optámos por explorar métodos que trabalhem estas restriçõesapenas a nível global ou utilizando cinemática inversa, esperando-se assim conseguir um resultadomais equilibrado entre excelência e desempenho.

Foram ainda consultados alguns trabalhos que oferecem informação e técnicas auxiliares, nomeadamentenos campos da Matemática, da Antropometria e Modelos Anatómicos, e ainda algumas pesquisas quecoleccionam e descrevem diversas técnicas existentes (Surveys). Nos pontos seguintes apresentamos umsumário de alguns dos trabalhos e métodos existentes na área de animação e controlo de esqueletos,os quais foram, por sua vez, considerados na nossa triagem, e excluídos pela mesma. Os sumáriossão apresentados de modo que se fique com um apanhado geral da área, explicitando-se o aspecto quelevou cada método ou técnica a ser desconsiderado para o nosso problema (por se incluírem na primeiracaracterística em cada nó, excepto do primeiro, da Figura 3.16). A esta lista juntamos alguns trabalhosauxiliares relacionados com a área, de forma a dar algum complemento técnico a este apanhado.

3.2.4 Síntese de Movimento

Um dos primeiros paradigmas de simulação de humanos virtuais, e que atingiu sucesso comercial,foi o Jack [27] [28] [29] [30] [31], que é um modelo de humano virtual que pretende ser fiel à realidade

Page 53: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 31

Figura 3.16: Ontologia de técnicas de animação e controlo de esqueletos.

não apenas em termos visuais mas também em termos comportamentais. O seu derivado comercial éutilizado especialmente para testes de usabilidade e ergonomia humana. Nas suas primeiras versões,começou por permitir que se manipulasse interactivamente a figura humana usando um dispositivo comoo rato. Nesta altura, o Jack, mais do que um sistema completo, era um conjunto de ferramentas comrotinas e operadores que permitiriam aos programadores construir as suas próprias figuras para as suasaplicações específicas. Foi neste sistema que se introduziu o sistema Peabody, que define simultaneamentea estrutura de representação interna dos objectos geométricos, e também a linguagem externa utilizadapara os descrever e armazenar. [32] [33] propõem o sistema TRACK, que fornece ferramentas interactivas,capazes de visualizar, editar e manipular sequências com múltiplas camadas, entre elas cinemática inversae restrições de posicionamento. [34] descrevem a arquitectura AGENTlib, que permite gerir a combinaçãode diferentes acções aplicadas simultaneamente a diferentes partes de um corpo, mantendo um fluxo suave.[35] apresentam a arquitectura VHA (Virtual Human Architecture), que permite desenvolver humanosvirtuais interactivos na norma H-Anim, implementando de forma separada e hierárquica as camadas deGeometria, Cinemática, Física e Comportamento. [36] apresenta Santos, um humano virtual desenvolvidopor um grupo ligado ao exército americano, que pretende vir a ser um humano virtual com 109 grausde liberdade, constituído tanto por modelos de anatomia e de biomecânica, mas também de psicologia einteligência. [37] propõem a arquitectura MKM, para animar humanos virtuais em ambientes de realidadevirtual. Esta arquitectura inclui funcionalidades de misturar, adaptar e sincronizar diversos canais demovimento em simultâneo. Em [38] é apresentado um método para corrigir a física de humanos quandosujeitos a adaptação de esqueletos. O problema surge quando uma animação de um esqueleto é adaptadaa outro esqueleto diferente, o que altera incorrectamente a aceleração do centro de massa e o momentoangular do esqueleto. A pesquisa segue até [39], que propõe uma arquitectura que permite sintetizaranimações a partir de dados de captura de movimento, tendo em conta tanto a adaptação a esqueletoscom diferentes morfologias, como correcções cinemática e físicas.

3.2.5 Técnicas Espácio-Temporais

Uma abordagem proposta por Witkin e Kass [40] pode ser utilizada em casos nos quais se saiba àpartida a trajectória completa de cada junta do esqueleto, como é o caso das sequências de animaçãoque foram gravadas a partir de captura de movimento. Em vez de aplicar as restrições sequencialmenteno tempo, o que esta técnica propõe, é construir, em primeiro lugar, um vector que contenha os valoresdiscretos das forças, velocidades e posições de cada grau de liberdade de cada junta do esqueleto, aolongo do tempo definido pela sequência de animação. Este vector é construído durante um processoiterativo de optimização, que no fundo, é resolvido por algum processo de optimização de um problema

Page 54: Tese 18,9 MB

32 CAPÍTULO 3. TRABALHO RELACIONADO

de satisfação de restrições (Constraint Satisfaction Problem). Durante esse processo, minimiza-se umafunção de custo que deverá representar o esforço e desconforto da pose do esqueleto, para as diversaspossibilidades de se colocar em cada pose. As duas grandes desvantagens desta técnica são o seu custo decomputação, e o facto de restrições não lineares levarem à possibilidade de o problema não ter solução.Uma inovação a este método foi proposta por [41], acrescentando o conceito de janelas de espaço-tempo(spacetime windows). Cada janela representa assim um subconjunto dos graus de liberdade do esqueleto,num determinado intervalo de tempo. Assim, a solução do problema aplicado apenas a esta janelarepresenta uma solução parcial da sequência completa. A utilização das janelas permite assim reduzira complexidade da computação a cada momento, e permite ainda fazer alguma edição interactiva desequências de animação. [42] desenvolveu uma técnica para adaptar movimento de um esqueleto paraoutro, com a mesma morfologia, mas dimensões diferentes nos seus segmentos, apesar de considerar que asua técnica é um dos passos, ao fazer a adaptação para um esqueleto com menos segmentos. Primeiro sãoidentificados alguns aspectos do movimento que são mais importantes e que devem ser mantidos, sendoentão assumidos como restrições. De seguida o problema é resolvido como um problema de satisfaçãode restrições em espaço-tempo. [43] criaram também uma técnica que permite adaptar uma animaçãoexistente de forma a satisfazer um conjunto de aspectos que são também especificados como restrições.No entanto eles seguem uma abordagem que combina ajuste de curvas hierárquico com um novo tipo decalculador de cinemática inversa, baseados em métodos analíticos em vez de numéricos, especificamentedesenhado para tornar a técnica globalmente mais eficiente.

3.2.6 Métodos Offline

Os métodos apresentados nesta secção não são executados em tempo real, pelo que representamabordagem que valorizam a componente de qualidade de precisão, em detrimento de eficiência. [44]descrevem uma técnica de deformação (warping) que permite editar movimento capturado, baseada emdeformação de curvas de parâmetros de movimento (motion parameters curves warping). [45] dão umpasso importante na direcção da criação de bibliotecas de movimento, criando uma representação demovimento independente de morfologia. Com este método, animações capturadas podem ser processadasnesse formato, de forma que possam ser reutilizadas por diferentes personagens, com diferentes morfo-logias. [46] reutilizou o conceito de Motion Graphs para implementar um método que permite animarpersonagens humanas a partir de composição de animações previamente capturadas.

3.2.7 Métodos Aplicados Sobre Marcas MOCAP

[47], [48] criaram o Anatomical Converter, que é uma ferramenta que permite converter medidas desensores de captura de movimento, em dados de rotação anatómica, em tempo real. [49] é um trabalhoque aborda o problema de adaptar marcas capturadas opticamente para um esqueleto, tendo em contaque as marcas não correspondem às articulações, mas a pontos sobre a pele. É primeiro proposta umatécnica local baseada nas trajectórias relativas das marcas, que depois é comparada a uma optimizaçãoglobal do esqueleto. [50] abordou o problema analisando os dados de captura de movimento como sinais, erecorrendo a técnicas apropriadas, extraiu daí as rotações de cada junta a cada instante. [51] apresentamuma arquitectura para captura de movimento que inclui a reconstrução da trajectória das marcas devidoem especial à oclusão das mesmas, a adaptação do movimento a um esqueleto específico com restriçõesque, por exemplo, mantenham os pés no chão, e ainda à mistura de diferentes acções e movimentos. [52]estudaram e desenvolveram uma técnica que adapta dados de captura óptica de movimento a esqueletosutilizando um modelo de física. As marcas são interactivamente associadas às juntas de um esqueleto,de forma que é simulado entre elas o efeito de uma mola. As poses são assim resolvidas através de umestado de equilíbrio do modelo. [53] explica diversas fases da captura de movimento por meios ópticos,incluindo o pós-processamento dos dados, dos quais se extrai a informação rotacional das juntas, e secompões uma sequência de animação em formato BVH.

Page 55: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 33

3.2.8 Modelos Dinâmicos

A dinâmica de corpos sólidos assenta nas leis básicas de cinética, que são as leis de Newton. A aplica-ção destas leis permite calcular o movimento gerado pela aplicação de determinadas forças, designando-se,essa movimentação, por dinâmica directa. Os métodos de dinâmica inversa, por seu lado, permitem cal-cular as forças que originaram determinado movimento. Este método pode ser utilizado para restringir omovimento de juntas em sistemas articulados. Ko e Badler [54] [55] propuseram um sistema (Figura 3.17)que, a cada instante, antes de aplicar uma rotação a uma junta através de animação externa ao sistema,faz uso de métodos de dinâmica indirecta, para calcular o momento de torção que terá provocado essarotação. O resultado é utilizado para verificar se o movimento é desconfortável, se provoca desequilíbrio,ou se quebra alguma restrição de movimento. Caso seja necessário, a rotação pode assim ser corrigidaantes de ser aplicada à junta.

Figura 3.17: Sistema de Locomoção de Ko e Badler.

3.2.9 Cinemática Inversa

A animação usual de uma estrutura articulada, designada por cinemática directa (forward kinema-tics), baseia-se em aplicar uma transformação a cada nó da estrutura, começando pelo nó pai, e seguindopelos filhos, sendo que a transformação de cada nó filho é aplicada já sobre a transformação do seu nópai. Assim, as transformações dos pais propagam-se para os filhos. Descrevendo um exemplo concreto,o braço humano possui este comportamento. Mantendo-se o braço rígido, a mão, cotovelo e ombro estãocada um num determinado ponto. Se o ombro se mexer, quer por rotação, quer por translação, essemovimento vai ser propagado para todo o braço, que mexe juntamente com ele. Da mesma forma, caso semovimente o cotovelo, o ombro ficará no seu lugar, pois a transformação do cotovelo é propagada apenaspara os filhos, neste caso a mão. Assim, a mão vai obrigatoriamente ser movimentada, sendo impossívelmexer apenas o cotovelo, deixando a mão para trás.A aplicação destas transformações, sobre cada nó, define uma pose chave da animação, e a transição entreposes é calculada através de alguma técnica de interpolação. Essa interpolação permite, assim, animarestruturas articuladas, definidas por um breve conjunto de poses chave. O problema desta técnica é que,por vezes, para efectuar movimentos que parecem ser simples, torna-se necessário definir a transformaçãode um elevado número de nós. Por exemplo, para animar um esqueleto humano a apanhar um objectodo chão, a ideia que surge é levar a mão até ao chão. No entanto, a mão é um nó-folha da estrutura,pelo que é necessário definir primeiro a transformação de todos os outros nós: das pernas e dos pés,da coluna vertebral, do ombro, do cotovelo; só depois se define a transformação sobre a mão. O que a

Page 56: Tese 18,9 MB

34 CAPÍTULO 3. TRABALHO RELACIONADO

cinemática inversa pretende fazer é resolver exactamente este problema. Em vez de os pais propagaremdirectamente a sua transformação para os filhos, são os filhos a definir uma transformação-objectivo quequerem atingir, transmitindo essa transformação para os pais, para que os pais se possam transformar deforma que o filho consiga atingir o objectivo. Assim, utilizando uma configuração adequada de cadeiasde cinemática inversa sobre o esqueleto humano, será possível definir apenas o objectivo da mão, que nocaso apresentado no parágrafo anterior será o objecto pousado no chão, e esse objectivo será propagadoa todo o esqueleto, que se posicionará de forma correcta para permitir que a mão atinja o objectivo.Numa ideia mais simples, é assim que controlamos os nossos próprios braços, ao invés do que foi descritono primeiro parágrafo, sobre cinemática directa: apenas definimos uma posição onde queremos colocara mão, e todo o braço e tronco se movimentarão nesse sentido, sem termos que pensar explicitamentenisso.A cinemática inversa é frequentemente usada para resolver problemas de restrições. No entanto, o seuâmbito é geralmente o de resolver restrições do esqueleto para com o mundo envolvente, quer seja porexemplo para manter os pés no chão, ou para manter o personagem agarrado a algo. Em [56],[57] e [58]são introduzidos alguns conceitos e explicados algumas das técnicas e algoritmos mais utilizados para aimplementação de cinemática inversa. A componente de posicionamento e de restrição de movimentoatravés de cinemática inversa, utilizado pelo supramencionado sistema Jack, é apresentado em [59] eposteriormente em [60], utilizando programação não linear para resolver o problema. [61] apresenta umestudo inicial sobre o movimento da coluna vertebral e do tronco, de forma a implementar correctamenteum sistema de cinemática inversa que proporcionasse uma simulação anatomicamente correcta. Em[62] [63] foi proposto um método de correcção de movimento particionado em duas partes. A metáforabaseia-se no conceito de formador-formando, no sentido em que a animação original é tida como sendo oformador, que “diz” como a animação deve ser executada. O esqueleto final é, no entanto, animado peloformador, que segue a instrução do formador, mas está sujeito a restrições em espaço cartesiano, que sãoaplicadas utilizando cinemática inversa. O objectivo desta técnica é poder ser utilizada mesmo quando acorrecção imposta é mais elevada, resultando numa animação final que é substancialmente diferente daoriginal. A ideia é conseguir uma combinação suave de cinemática inversa e directa. [64] começam porexplicar a o conceito e importância da cinemática inversa, descrevendo como o método é aplicado, comocalcular a matriz Jacobiana e a sua pseudo-inversa, evitar singularidades, limites de juntas e obstáculos,entre outras informações importantes no contexto. [65], [66] introduz o algoritmo Shake para resoluçãode cinemática inversa em tempo real. Tanto [56] e [67] exploram algumas técnicas de cinemática inversano sentido de conseguir uma solução que seja suficientemente eficiente para ser utilizada em estruturascomplexas, em tempo-real. Assim, em vez de recorrerem a métodos numéricos, que acarretam uma maiorcomplexidade computacional, baseiam-se em métodos analíticos, que, embora possam ser menos precisos,produzem resultados aceitáveis para simulações gráficas virtuais. [67] elaboram uma solução híbrida entremétodos analíticos e numéricos para a resolução de cinemática inversa uma cadeia do tipo braço humano(Human-Arm-Link ou HAL) com 7 DOF. Em [68], por sua, vez, é proposto um novo método, tambémanalítico, de resolução de sistemas com cinemática inversa. O método pode ser aplicado sobre estruturascom 12 graus de liberdade, com múltiplas restrições, e ainda testam o resultado, sobre sequências decaptura de movimento. A técnica que eles apresentam é uma abordagem mais directa ao problema, nãoresolvendo um sistema de cinemática inversa generalizado, mas sim, um sistema específico, como porexemplo, o braço humano. [69] focaram-se especificamente no ombro, e desenvolveram um modelo desimulação correcta do complexo do ombro, envolvendo as três principais articulações, utilizando cinemá-tica inversa. Em [70] o problema de transmitir captura de movimento para um esqueleto com tamanhoou proporções diferentes, em tempo real, segue uma abordagem baseada em importância. Sendo queo objectivo é conseguir um método que possa ser utilizado em marionetas computadorizadas (computerpuppetry), foi utilizado um filtro de Kalman adaptado para suavizar o movimento (removendo ruído),após o qual se identificam quais são as extremidades que representam maior importância para o movi-mento. É então que surge um novo calculador de cinemática inversa, que consegue resolver este problemade forma suficientemente eficiente para que seja utilizado em transmissões televisivas. [71] dirigiu-se aoproblema de eliminar o deslizamento de pés, designado por footskate, através de um algoritmo linear eeficiente baseado numa forma simplificada de cinemática inversa. O trabalho de [72] dirige-se à criaçãode animações através da aplicação directa de restrições. Eles exploram o conceito de “espetar-e-arrastar”(pin-and-drag), para que se possa interactivamente fixar alguns pontos da figura, e arrastar outros de-

Page 57: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 35

terminados pontos dela até uma pose desejada. Uma nova técnica de cinemática inversa ajusta todo ocorpo à nova pose, mantendo os pontos fixos, o que proporciona grande liberdade e flexibilidade a umanimador. [73], [74] e [75] exploram técnicas que se direccionam mais para a integração de cinemáticainversa com movimento capturado. A ideia que apresenta é a utilização de níveis de prioridades sobre asjuntas, de forma que, quando há algum conflito, entre restrições ou objectivos, a prioridade de cada umdefine qual prevalece. No exemplo que eles dão, garantir que o personagem simulado mantém os pés nochão é mais importante do que segurar um objecto, que, por sua vez, é mais importante do que manter oseu equilíbrio. Em [76] e [77] estudam os métodos de cinemática inversa que recorrem à matriz Jacobiana,e às técnicas para a calcular de forma eficiente, acabando por propor utiliza uma matriz meia-Jacobiana,o que torna o processo muito mais eficiente. Baseados na representação de movimento independente demorfologia de [45] apresentados acima, [78] e [79] propõem um novo método de cinemática inversa paraser utilizado no posicionamento de figuras humanas, com noção do seu centro de massa. Nesta solução,calculadores analíticos resolvem em separado diferentes segmentos do corpo, enquanto outro calculadorde mais alto nível resolve o resultado aplicado ao corpo completo. [80] elaboraram um modelo que sedirige especificamente à animação da coluna vertebral. Este modelo define a união do comportamentodas juntas da coluna vertebral de forma que a sua postura possa ser restringida e ajustada através decinemática inversa. [81] apresentam um método analítico iterativo para resolver cinemática inversa, cha-mado cinemática inversa sequencial (Sequencial Inverse Kinematics ou SIK ). Os dados inicias que estemétodo utiliza são mínimos, ou seja, é fornecido apenas a posição da cabeça, dos punhos, dos tornozelose da pélvis, tornando o método possível de ser utilizado com sistemas de captura de baixo custo queapenas consigam capturar esses seis pontos. Este trabalho aborda ainda o problema de resolver a ani-mação indirecta da coluna vertebral e do complexo do ombro, oferecendo ainda um modelo para limitaro movimento na articulação do ombro (com 3 DOF), e para evitar a interpenetração dos cotovelos notronco.

3.2.10 Adaptação de Esqueletos

No sentido de possibilitar uma utilização mais homogénea de bibliotecas de animações, importa que onosso esqueleto seja capaz de adaptar e utilizar essas animações, mesmo que não tenham sido directamenteconcebidas para a morfologia do nosso esqueleto. Em [82] a abordagem para adaptar movimento de umesqueleto para outro, com morfologia diferente, em tempo real, segue a ideia de separar o posicionamentodas juntas, das suas rotações. Assim, as rotações das juntas são induzidas a partir da velocidade dasextremidades do esqueleto original, e essas rotações são depois utilizadas para animar o outro esqueleto.[83] segue uma ideia parecida, no entanto, não a aplica à adaptação de esqueletos, mas unicamente àanimação a partir de captura de movimento. Eles utilizam apenas os dados de orientação entre marcaspara animar cada junta, fazendo uso apenas da posição da raiz do esqueleto (pélvis) para movimentar afigura no espaço. [84] propõem utilizar um esqueleto intermédio para adaptar correctamente a animaçãode um esqueleto para outro com morfologia diferente. Nesta abordagem, o esqueleto intermédio possui amorfologia do esqueleto final, no entanto, é criado de forma que a sua postura inicial corresponda à posturainicial do esqueleto original que contém a animação. Desta forma, esse esqueleto intermédio é animadodirectamente utilizando todos os dados que compõem a animação, sendo que a posterior adaptação parao esqueleto final é realizada apenas transmitindo os valores das orientações de cada junta.

3.2.11 Restrições Locais com Cinemática Directa

Uma abordagem que tem vindo a surgir nos últimos anos é a incorporação de limites de movimentonas próprias juntas, sendo que é também nesse contexto que incluímos o nosso trabalho. Assim, umajunta é primeiro orientada pela animação, e de seguida é verificado se essa orientação viola ou não arestrição de movimento da junta. Caso viole, a pose da junta é corrigida de forma que seja colocadanuma orientação válida. Nesta secção apresentamos os trabalhos que considerámos mais relevantes parao nosso problema, alguns dos quais aprofundamos adiante de forma a utilizar alguns dos conceitos quetransmitem.

Page 58: Tese 18,9 MB

36 CAPÍTULO 3. TRABALHO RELACIONADO

[85] proporciona informação e técnicas para a representação de orientação de juntas utilizando qua-terniões e ângulos Euler, e sobre utilizar matrizes para limitar rotações de juntas. [86] apresentam ummétodo que decompõe o movimento de uma junta com 3 eixos (que simula uma articulação esférica), emdois movimentos: swing e twist. Por swing entende-se o movimento que direcciona o braço, e por twist,o movimento de rotação do braço sobre si próprio. Assim conseguem limitar primeiro apenas o swing,utilizando um método de projecção ortogonal de um ponto sobre uma elipse em 2D. De seguida o twistpode ser simplesmente limitado entre um valor mínimo e máximo, os quais, por sua vez, poderão serdependentes do swing. Este tipo de restrição é em especial direccionada a simular a forma como o ombroou a anca funcionam.

Em [87] é apresentado um conjunto de tipos de juntas para simular as articulações do esqueletohumano de forma anatomicamente correcta, em tempo real. Cada articulação é assim composta porum ou mais graus de liberdade, e a cada grau de liberdade de cada junta está associado um tipo demovimento (dos tipos de movimento definidos em 2.1), um eixo de rotação, e uma gama de valoresangulares possíveis. Esses graus de liberdade estão indexados na junta através dos tipos de movimento,de forma a criar uma abstracção, e assim, aplicam-se rotações a cada tipo de movimento, sobre a junta.A simulação é, finalmente, aplicada sobre os graus de liberdade das juntas, e não às juntas propriamenteditas. O modelo apresentado permite ainda relações entre graus de liberdade, para que determinadosgraus de liberdade de uma junta tenham os limites da sua amplitude angular dependentes do estado dosgraus de liberdade de outras juntas. Após um breve estudo das articulações humanas, semelhante aoapresentado no ponto 2.1 deste documento, foi concluído ser necessário implementar quatro tipos básicosde juntas:

(a) Junta Uniaxial, que simula as articulações em roldana e cilíndrica, possuindo um grau de liber-dade;

(b) Junta Biaxial, que simula as articulações em sela e elípticas, possuindo dois graus de liberdade;

(c) Junta Poliaxial, que simula a articulação esférica, com três graus de liberdade;

(d) Junta Plana, que simula a articulação plana, que permite rotação e translação, totalizando seisgraus de liberdade.

Embora as juntas das alíneas a), b) e c) pareçam pouco complicadas de implementar, o caso da alínea d)surge de forma aparentemente mais complexo, pois é necessário aliar translação e rotação. [88] exploramdiversos tipos de restrições entre dois segmentos, utilizando quaterniões. Entre elas, existe a restriçãoangular, que limita o movimento de um segmento em relação a outro, entre duas orientações definidas porquaterniões. Este tipo de restrição permite assim simular e limitar uma junta que rode unicamente sobreum eixo arbitrário. [23] fez um estudo bastante alargado acerca da animação de um esqueleto humanóidea partir de análise de vídeo. O estudo inclui não apenas as técnicas de captura de movimento, como aindaalguns modelos de anatomia que podem ser utilizados em algumas partes do corpo, e em especial algumastécnicas para restringir o movimento em juntas. O projecto surge, no entanto, como expansão de umprojecto já existente, pelo que não pretende criar uma arquitectura de restrição de movimento capturado,mas apenas aprofundar a utilização das restrições num contexto já existente. [89] desenvolveram ummodelo geral de juntas capaz de exibir comportamento complexo em figuras articuladas. Este modelopermite eixos de rotação não ortogonais, e modificação de centro de rotação das juntas, algo que é habitualem articulações reais. Além disso permite acoplar parâmetros entre juntas, e criar dependências. Emespecial, oferece suporte para relações do tipo um-para-muitos no que toca a parâmetros de controlo. Comapenas um parâmetro é possível controlar de forma sincronizada diversas juntas, o que facilita a utilizaçãopor animadores. [90] mostram de forma simples como utilizar dados de um ficheiro de animação BVHpara animar um esqueleto em OpenGL, na norma H-Anim, utilizando quaterniões, servindo assim comouma boa referência para começar um trabalho do género. [91] tinha já realizado outro estudo comparativoentre a utilização de quaterniões ou ângulos Euler para animar um esqueleto na norma H-Anim. Em [92]é apresentado um novo tipo de juntas, chamadas juntas spline40, que modelam de forma mais biológica

40Um spline é uma curva definida matematicamente por dois ou mais pontos de controlo.

Page 59: Tese 18,9 MB

3.2. ANIMAÇÃO E CONTROLO DE ESQUELETOS 37

as juntas de um esqueleto. Nestas juntas, um segmento não gira apenas em torno de um eixo de rotação,mas sim, segue uma trajectória definida por uma spline, como se mostra na Figura 3.18. Uma ideia inicial

Figura 3.18: Junta spline proposta por Lee.

deste tipo de juntas tinha já sido apresentada por [93], utilizando uma elipse e um segmento de recta,para modelar a articulação do joelho, ilustrada na Figura 3.19. Desta forma, a rotação do segmento filhosobre o segmento pai faz-se de forma que a linha e a elipse mantenham um ponto de contacto, dentro dagama de valores angulares possíveis. Este ponto de contacto desliza sobre o segmento de recta, conformeo ângulo da junta.

Figura 3.19: Simulação do movimento do joelho com uma elipse e um segmento de recta, proposto porDelp [93].

3.2.12 Trabalhos Auxiliares

3.2.12.1 Matemática e Computação Gráfica

Durante a pesquisa, encontrámos algumas referências de aspectos e métodos matemáticos que estãodirectamente ligados com a animação de estruturas articuladas. [94] é um livro sobre mecânica e controloem robótica, que apesar se não ser especificamente direccionado à animação virtual de esqueletos, possuidiversas bases, representações e fundamentos matemáticos que são partilhadas entre ambas as áreas. [95]é um livro de bolso que contém uma infinidade de fórmulas e tabelas matemáticas úteis a qualquer pessoaque lide com matemática, física ou engenharia. [96] [97] [98] [99] [100] é uma série de cinco livros quese focam em técnicas e tarefas comuns no âmbito da computação gráfica. Cada livro é dividido portemas, sendo cada tema dividido em técnicas. Cada técnica possui uma introdução teórica, e algumas

Page 60: Tese 18,9 MB

38 CAPÍTULO 3. TRABALHO RELACIONADO

são acompanhadas de código em C para que qualquer pessoa possa o reutilizar quando precisa. [24] é umlivro bastante popular na literatura, que contém muita informação relativamente a animação, em especial,de estruturas articuladas. [101] descreve, explica e compara métodos de cálculo de matrizes de rotação apartir de quaterniões, ângulos Euler, ou representação eixo-ângulo. [25] introduz os conceitos matemáticosutilizados em computação gráfica, em especial, de forma a serem utilizados em ambiente OpenGL. [102]e [103] são dois livros tidos como referência essencial para quem precise de aprender ou desenvolveraplicações utilizando OpenGL. O primeiro é uma referência completa da interface, enquanto o segundoexplica diversas técnicas e métodos frequentemente utilizados com OpenGL, incluindo funcionalidades dabiblioteca OpenGL Utility. [17] descreve o método de Jakobsen e como o aplicar a uma simulação físicade forma a simular um boneco-de-trapos (ragdoll) com restrições.

3.2.12.2 Antropometria

[104] recolheu dados antropométricos para um ser humano masculino de estatura médio. Os dadossão bastante extensos e a consulta dos mesmos não é simples ou fluida, no entanto, é uma referência combastante informação. Em [105] e [106] é apresentado o SASS (Spreadsheet Anthropometry Scaling System)que contém dados antropométricos utilizados no sistema Jack, e ainda alguns modelos de juntas, limitesque podem ser utilizados por juntas, massa e centro de massa de segmentos, formas de escalonamentoantropométrico, entre outros. [107] estudou o ombro e em especial os limites de rotação interna que estaarticulação permite, de forma que os dados possam ser utilizados na área da simulação por computador.Em [108] estuda a forma como a orientação da mão e os limites impostos às juntas do braço influenciama postura e movimento do mesmo. [109] estudou do ponto de vista anatómico algumas das principaisarticulações do corpo, de forma a propor um modelo de juntas mais anatomicamente correcto, que possair ao encontro do comportamento real do corpo humano.

3.2.12.3 Pesquisas (Surveys)

[110] devêm algumas técnicas para aplicar restrições e limites a juntas, utilizando cinemática inversa.[111] apresenta uma série de estruturas tridimensionais que podem ser utilizadas em animação. [112]explora alguns métodos cinemáticos e dinâmicos para utilizar, em conjunto com cinemática inversa, naimposição de limites em juntas, e na satisfação de restrições. [113], [114] comparou alguns sistemas queexistiam até à data, no contexto da síntese de movimento, entre eles os projectos MOCA, ESPIRIT,HUMANOID, HUMANOID-2 e TRACK, e ainda as diversas fases da conversão de dados de captura demovimento em dados de animação de um esqueleto. [115] analisa a evolução das personagens sintéticaspara serem utilizadas em contexto de animação quadro-a-quadro em tempo real, classificando os tiposde personagens sintéticas existentes. [116] explora diversos formatos de ficheiros para armazenamento dedados de captura de movimento. [117] elaborou uma ontologia e categorização de tipos de personagenssintéticos e sistemas de animação, listando ainda uma série de entidades de pesquisa e desenvolvimentode produtos na área. [118] comparou diversos métodos de edição de movimento com base em restrições,incluindo técnicas que podem ser utilizadas quadro-a-quadro. [118] faz uma extensa revisão à literaturaacerca de animação de personagens 3D por computador. [21] e [22] apresentam pesquisas recentes queenglobam diversas técnicas e métodos de animação de estruturas humanas, e de outros aspectos ligadosà animação, como por exemplo controlo, naturalidade ou conforto.

Page 61: Tese 18,9 MB

4Arquitectura

4.1 Definição dos Sub-Problemas

Para resolver o problema proposto, planeámos começar por resolver os seguintes sub-problemas:

(a) Definir um modelo global do esqueleto, representado por segmentos de recta, capaz de suportardiversos tipos de juntas de forma abstracta, e relações de propriedades entre juntas;

(b) Definir um modelo dos diferentes tipos de juntas necessários para implementar um esqueleto queequilibre qualidades, anatómicas, computacionais, e de complexidade;

(c) Definir quais serão as articulações do esqueleto real que serão mobilizadas por juntas, e qual o tipode junta associado a cada articulação;

(d) Estabelecer as relações e propriedades anatómicas para os diversos componentes do esqueleto. Aquiincluem-se os graus de liberdade de cada junta, os seus limites angulares de rotação;

(e) Criar um protótipo, capaz de simular e testar o esqueleto construído com base nos modelos, relaçõese propriedades, definidos em b), c), d) e e), a partir de sequências de captura de movimento;

4.2 Considerações da Abordagem

Inicialmente considerámos a hipótese de utilizar o módulo Simbody da biblioteca SimTK, descritosanteriormente, para criar a representação lógica do nosso esqueleto, e sobre ela poder calcular o resultadode aplicar restrições biomecânicas às suas juntas.

Em termos de arquitectura, cada junta no Simbody é, como foi previamente descrito, uma composiçãode diversos graus de liberdade, aos quais podem ser atribuídos restrições de movimento. O sistema possuio seu próprio ciclo de execução, que efectua todos os cálculos correspondentes à estrutura hierárquica dejuntas que definimos, e às restrições que lhe aplicamos. No entanto, este procedimento acontece como uma“caixa negra”, ou seja, nós apenas fornecemos os dados, e eles apenas nos fornecem o resultado. Mesmosabendo que estes cálculos seriam bastante precisos, devido à equipa de especialistas que já trabalha háanos na sua concepção, foi considerado que a carga extraordinária incutida pela utilização desta bibliotecaseria desnecessária. Sendo uma biblioteca que permite simular modelos estáticos e dinâmicos, de formabastante geral, é, obviamente, mais pesada em termos computacionais, do que uma solução desenhadaespecificamente para o caso presente, em que queremos apenas aplicar restrições de movimento a umesqueleto humano, e ainda, tendo em conta que vamos trabalhar com um modelo que contém 89 juntas.Além disso, seria necessário distribuir a biblioteca juntamente com a solução implementada, ao invés dedistribuir apenas o código do esqueleto. Optámos então por não utilizar o Simbody, por todas as razoessupramencionadas.

Pretendemos com este trabalho estudar também um esqueleto independente do ambiente em que éexecutado, em especial, independente da linguagem em que é programado e executado. No entanto, paratestar a abordagem, foi necessário optar por uma linguagem, e pela rapidez de prototipagem, decidimos

Page 62: Tese 18,9 MB

40 CAPÍTULO 4. ARQUITECTURA

implementar o esqueleto em ambienteWindows1/C#, utilizando oMicrosoft Visual Studio 2008 2. Algunsdos métodos matemáticos utilizados no nosso trabalho foram retirados da colectânea Graphics Gems [96][97] [98] [99] [100], que é gratuitamente disponibilizada online, com implementação de diversos algoritmosem C, os quais foram adaptados para C#.

Alguns comportamentos encontrados no esqueleto real (i.e. translação do eixo de rotação de umajunta) não serão considerados na abordagem, em especial porque o nosso trabalho não tem como objectivoproduzir especificamente um esqueleto virtual que replique o comportamento do esqueleto real, mas sim,estudar formas de o realizar, testando diversas técnicas. Assim, certos comportamentos sobre os quaisa informação anatómica disponível não é muito coerente são desconsiderados, ou assumidos por palpiteselaborados com base em experimentação, desde que a solução dessa situação seja análoga a outra quetenhamos considerado. É de notar que ao longo deste documento, para simplificar a compreensão evisualização, os ângulos das rotações das juntas são descritos em graus (ao invés de radianos).

4.3 Medidas Antropométricas

Em relação à manutenção das medidas antropométricas, a norma H-Anim é já definida a partir de[119], que contém uma base de dados de medidas antropométricas do ser humano. As medidas médiassão apresentadas pela própria norma, através da definição da pose inicial do esqueleto, sendo essa poseapresentada em Anexo, na Tabela D.1. Para o presente trabalho considerou-se que esta pose inicial doH-Anim seria tomada como pose base do esqueleto, e definiria, assim as medidas utilizadas pelo mesmo,sendo que da sequência de animação se retirariam apenas as componentes de rotação de cada articulação.Desta forma, ao contrário de outras soluções descritas, o nosso sistema permite síntese e composição deanimações, sem requer ao utilizador (i.e.: animador, modelador) que proceda a cálculos morosos pararedimensionar membros ou porções do esqueleto.

4.4 Dados Para Teste

Para testar o esqueleto à medida que era desenvolvido, foi necessário encontrar um conjunto desequências de animação com diferentes origens, morfologias e modos de gravação, de forma que nos cer-tificássemos de não estar a desenvolver uma solução que funcionasse numa situação, e não em outras.Inicialmente considerámos a importação de animações em formato C3D3, visto ser um formato ampla-mente utilizado no âmbito de simulação e análise biomecânica. No entanto, após analisar os dados queo formato guarda, e a forma como são apresentados, concluímos não ser o formato mais apropriado paratestarmos com facilidade a nossa solução. Em especial, o formato é binário, o que dificulta a criação desequências iniciais para testar estruturas com apenas 2 ou 3 segmentos. Além disso, os ficheiros guardamtambém uma enorme informação de dados direccionados à utilização clínica, como dados sobre o pacientee a sua condição.

Tornou-se útil então, encontrar um formato definido em ficheiros de texto, de fácil leitura, edição ecompreensão, e que não fosse direccionado especificamente a nenhuma área de aplicação. Para isso foramconsultados repositórios online de sequências de captura de movimento gratuitas, dos quais destacamosas oferecidas pela CMU 4 (Carnegie-Mellon University), e pelo website MocapData5. O primeiro oferececentenas de sequências que podem ser utilizadas sem qualquer licença, sendo que o segundo oferece menossequências, com licença Creative Commons6. Actualmente os pacotes de animação mais utilizados são os

1http: // www. microsoft. com2http://www.microsoft.com/visualstudio/en-us/3http://www.c3d.org/4http://mocap.cs.cmu.edu/5http://mocapdata.com6http://creativecommons.org/

Page 63: Tese 18,9 MB

4.5. MODELO LÓGICO DO ESQUELETO 41

da Autodesk7 (MotionBuilder8, 3ds max9, Maya10, etc.), que utilizam maioritariamente o formato FBX11

para armazenar tanto a estrutura e configuração lógica do esqueleto, como os modelos visuais utilizados(ossos, personagens, acessórios), e ainda as sequências de animação. No entanto, apesar de termosacesso a licenças académicas ao software enunciado, e de ambos os repositórios supracitados forneceremanimações no formato FBX, ele é um formato proprietário, para além de ser demasiado abrangente parao que queremos.

Acabámos por escolher o formato BVH 12, e de utilizar maioritariamente as sequências doMocapData,pois para além de também fornecer o nosso formato de escolha, fornecia vídeos de cada animação, deforma que se tornou mais fácil escolher algumas. O formato BVH foi escolhido por se apresentar simplesde ler e de manipular tanto pela aplicação, como directamente por humanos, para além de ser um formatobastante comum para representar dados de animação de esqueletos. A estrutura deste ficheiro encontra-sedescrita em Anexo.

4.5 Modelo Lógico do Esqueleto

4.5.1 Modelo Geral

Começamos por definir o modelo geral do esqueleto, em termos de estrutura lógica. O nosso esqueletosegue a ideia estrutural da norma H-Anim, portanto consiste num conjunto de juntas (que correspondema articulações), sendo que cada junta pode manifestar alguma restrição. Essa restrição resulta, por suavez, de restrições individuais a um ou mais graus de liberdade [86; 87]

A norma H-Anim define que a cada junta está associado um segmento. Este segmento corresponde àrepresentação visual da porção do esqueleto movimentada pela junta a que está associado. Na realidade,em várias situações, um segmento corresponde a um osso. Por exemplo, associado à junta da anca, temos osegmento da coxa. Porém, noutros casos, um segmento corresponde a mais do que um osso, como aconteceno antebraço, na pélvis, ou os ossos do carpo (na mão). A Figura 4.1 ilustra o nosso modelo. O esqueletoserá animado a partir de dados de animação, sendo que estes dados não representam obrigatoriamentetodas as juntas. Uma vez que pretendemos um esqueleto que possa ser animado a partir de sequênciasde captura de movimento, foi necessário criar uma forma de fazer corresponder as marcas de animaçãoutilizadas na gravação da sequência, com as juntas do esqueleto. Assim, e facilitando a identificaçãoinequívoca de cada junta, considerou-se um conjunto de identificadores numéricos únicos para cada juntadefinida pela norma H-Anim. Os identificadores são um número inteiro, a começar em 0, aplicado àjunta raiz do esqueleto (HumanoidRoot). À medida que se desce na hierarquia, estes identificadores sãoincrementados, sendo que em juntas que ligam mais do que um segmento, se considerou a ordem definidana documentação da própria norma. Os identificadores atribuídos a cada junta da norma podem serencontrados em Anexo, na Tabela D.1, onde se define a posição inicial de cada uma delas.

Finalmente, designamos na nossa estrutura o objecto Osso como sendo o objecto que visualmenterepresenta a porção do esqueleto (um ou mais ossos) movida por cada junta.

4.5.2 Modelo de Execução

Dadas as diferentes áreas de aplicação em que o esqueleto pode vir a ser utilizado, é de extremaimportância considerar um modelo de execução que se adeqúe à maioria delas. Partindo do facto de

7http://www.autodesk.com/8http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=135818559http://usa.autodesk.com/adsk/servlet/pc/index?id=13567410&siteID=123112

10http://usa.autodesk.com/adsk/servlet/pc/index?id=13577897&siteID=12311211http://usa.autodesk.com/adsk/servlet/pc/index?id=6837478&siteID=12311212http://www.character-studio.net/bvh_file_specification.htm

Page 64: Tese 18,9 MB

42 CAPÍTULO 4. ARQUITECTURA

Figura 4.1: Modelo geral proposto para o esqueleto.

estarmos a criar um esqueleto em OpenGL, faz sentido pensar nos paradigmas utilizados neste tipo deprogramas.

Um componente largamente utilizado com OpenGL é a GLUT13. Esta biblioteca inclui um con-junto de funcionalidades que são regularmente utilizadas com OpenGL, e assim, a maioria das aplicaçõesbaseiam-se nela. A GLUT contém um ciclo de execução bem definido para um programa OpenGL, ondesão executadas um conjunto de funções comuns de serem encontradas em aplicações gráficas.

Esse ciclo de execução da GLUT segue, de uma forma geral, um formato em três passos: iniciali-zação, actualização, e desenho. Então, de modo a manter o nosso esqueleto num formato que suportedirectamente a sua utilização em programas baseados na GLUT, conceptualizámo-lo também seguindoeste formato. Assim, temos uma única classe que consiste principalmente em três funções: uma queinicializa o esqueleto, uma que o actualiza a cada quadro, e outra que o desenha a cada quadro. Ociclo comum de uma aplicação baseada na GLUT é apresentado na Figura 4.2, sendo que as funçõesfuncaoInicialização(), funçãoActualização() e funçãoDesenho() são definidas pela própria aplicação.

Figura 4.2: Ciclo de execução da GLUT.

4.5.3 Adaptação da Morfologia do Esqueleto

Para endereçar o problema de adaptar uma animação para que possa ser aplicada a um esqueleto demorfologia diferente, decidimos seguir o método proposto por [84]. Como descrito, este método consisteem utilizar um esqueleto intermédio para adaptar a animação.

Este esqueleto intermédio possui a mesma morfologia do esqueleto final ao qual vai ser aplicada, noentanto, a orientação de cada junta corresponde à orientação inicial do esqueleto que contém a animação.Na Figura 4.3 vemos um exemplo, em que o esqueleto da animação, designado de Performer, possui maisarticulações do que o esqueleto final, designado por End User.

A Figura 4.3 ilustra a criação do esqueleto intermédio de forma a ter a topologia do esqueleto doEnd User, mantendo, no entanto, uma pose correspondente ao esqueleto inicial, o Performer. Algumas

13http://www.opengl.org/resources/libraries/glut/

Page 65: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 43

Figura 4.3: Adaptação da morfologia do esqueleto pelo método de Monzani [84].

juntas podem ser ignoradas, se não estão contidas no esqueleto final, criando-se assim um chamado ossovirtual que corresponde ao conjunto dos segmentos que não existem nesse esqueleto. Este método possuiem especial um problema, pois não tem em conta a torção das juntas aquando da adaptação das mesmas.

No entanto, é um aspecto que pode ser abordado posteriormente à adaptação, pelo que decidimostestar a técnica, visto que nos pareceu apropriada tanto para a situação em que o esqueleto da sequênciade animação tem mais juntas do que o esqueleto final, como para a situação em que possui menos. Alémdisso, este método não é baseado em formulações matemáticas complexas que possam inserir uma cargacomputacional elevada durante a execução. A Figura 4.4 demonstra como determinar o ângulo entreos dois vectores, v1 e v2. O processo de adaptação de cada junta consistirá, primeiro, em animar o

Figura 4.4: Processo de adaptação de cada junta pelo método de Monzani [84].

esqueleto intermédio directamente com os dados de animação, visto que este já tem em conta a posturainicial utilizada na animação. De seguida, é necessário calcular a rotação que transforma o vector v2 doesqueleto End User em v1, do esqueleto intermédio. Para isso basta calcular o ângulo entre estes doisvectores, e o eixo ortogonal a eles, para depois calcular a matriz de rotação correspondente. Esta matrizé então aplicada directamente ao esqueleto final.

4.6 Modelo das Juntas

4.6.1 Estrutura

Quando referimos o modelo lógico das juntas, estamos na realidade, a descrever o modelo lógicodas restrições, pois são as estas que definem e distinguem o comportamento de cada junta. Assim, na

Page 66: Tese 18,9 MB

44 CAPÍTULO 4. ARQUITECTURA

realidade, tirando as restrições, as juntas funcionam todas da mesma forma: são um ponto de articulaçãono esqueleto, dirigido por dados directos ou indirectos provenientes de uma sequência de animação.Esclarecemos aqui que quando, ao longo do documento, nos referimos a diferentes tipos de juntas, estamo-nos a referir ao tipo de restrição que é utilizado por esse tipo de junta.

As juntas que considerámos seguem em termos lógicos, uma estrutura hierárquica. Existem trêstipos de juntas elementares, um para simular juntas com apenas um eixo de rotação, outro para simularvários eixos de rotação, e ainda um tipo que não permite movimento, para simular juntas estáticas. Todosos outros tipos de juntas subentendidos, em especial, a partir das juntas Uniaxial e Poliaxial, como serepresenta na Figura 4.5.

Figura 4.5: Hierarquia das juntas utilizada pelo nosso esqueleto.

Assim, as restrições foram então essencialmente implementadas ao nível das juntas elementares, edepois as juntas estendidas apenas fazem uso das rotinas e resultados das primeiras. Segue-se uma brevedescrição textual dos objectos não abstractos desta hierarquia, cujo funcionamento será melhor descritono ponto seguinte Cada junta será descrita de forma mais detalhada mais adiante.

• Estática – Não permite qualquer movimento (0 DOF);

• Uniaxial – Permite rotação uniaxial em torno de um eixo arbitrário (1 DOF);

• Cotovelo – Especialização da Uniaxial, para utilizar na articulação do cotovelo (1 DOF);

• Joelho – Especialização da Uniaxial, para utilizar na articulação do joelho (1 DOF);

• Poliaxial – Permite rotação triaxial em torno dos eixos X, Y e Z (3 DOF);

• Biaxial – Estendida da Poliaxial. Permite rotação em apenas dois eixos, removendo a componentede torção da junta poliaxial (2 DOF);

• EsternoClavicular – Especialização da Biaxial, para utilizar na articulação esterno-clavicular (2 DOF);

• Plana - Estendida da Poliaxial, adicionando componente de translação também nos eixos X, Y e Z(6 DOF);

• Vertebra – Especialização da Plana, para utilizar nas articulações inter-vertebrais (6DOF)

• VCervical – Especialização da Vertebra, apenas para saber que corresponde à secção cervical;

• VToracica – Especialização da Vertebra, apenas para saber que corresponde à secção torácica;

• VLombar – Especialização da Vertebra, apenas para saber que corresponde à secção lombar;

• Tornozelo - Especialização da Poliaxial, para utilizar na articulação do tornozelo (3DOF);

Page 67: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 45

• Ombro - Especialização da Poliaxial, para utilizar na articulação do ombro (3DOF);

• Punho - Especialização da Poliaxial, para utilizar na articulação do punho (3DOF);

Todas as transformações permitidas são limitadas numericamente, de forma independente, em cadaum dos seus graus de liberdade. No caso da rotação, existe um alcance angular definido pelo ângulomínimo e máximo para cada eixo, e no caso da translação, um valor de deslocamento mínimo e máximopara cada eixo.

É importante referir que na implementação, terá de ser necessário que uma junta possa depender doscálculos efectuados no filho, como acontece no caso da junta esterno-clavicular e da junta gleno-umeral(ombro), como explicaremos na secção correspondente à primeira. Em relação à rotação, foi necessárioconsiderar qual seria o referencial em que se mediria o ângulo permitido em cada eixo, designando omesmo por referencial zero da junta.

Com o objectivo centrado num modelo de restrições eficiente e especificamente desenhado parao esqueleto humano, na sua representação H-Anim, decidimos que é definido em cada junta se o seureferencial zero (pose considerada como zero graus de rotação) é a pose inicial do esqueleto, ou então seesse referencial corresponde à continuidade do referencial da junta pai.

Distinguimos melhor estes dois casos na Figura 4.6. Assumindo que esta figura representa a poseinicial do esqueleto, a variável α representa uma rotação de 0 graus caso se tome como referencial zero apose inicial, ou então 90 graus, caso se tome o referencial da junta pai. Nesse caso, 0 graus corresponderiama ter o cotovelo completamente estendido.

Figura 4.6: Representação do referencial zero de uma junta (onde α representa o ângulo referido).

Definimos finalmente o referencial que será utilizado pelas nossas juntas. Como é ilustrado naFigura 4.7, o segmento que corresponde ao osso está alinhado com o eixo Y , sendo que o X correspondeà direcção “lateral” em relação ao próprio esqueleto, ou seja, é perpendicular ao plano sagital, estandoo sentido positivo apontado para a esquerda do esqueleto. O eixo Z corresponde à direcção frontal, ouseja, é perpendicular ao plano frontal. Quando descrevemos movimento de torção, estamo-nos a referir amovimento de rotação realizado sobre o eixo Y, ou seja, à rotação de um segmento sobre si próprio.

Qualquer uma das juntas possuirá uma rotina herdada por todos, que designamos aqui por Aplica,que recebe a matriz de rotação que terá sido aplicada à junta, e devolve a matriz resultante da aplicação derestrições, conforme o tipo de junta que seja. Assim, a grande diferença entre cada junta é a funcionalidadeexecutada por esta rotina.

Page 68: Tese 18,9 MB

46 CAPÍTULO 4. ARQUITECTURA

Figura 4.7: Referencial utilizado pelas juntas do esqueleto.

4.6.2 Juntas Elementares

4.6.2.1 Junta Estática

A utilização de juntas estáticas dirige-se a locais específicos do esqueleto, que não devem sofrer qual-quer movimento, mesmo que a animação o tente fazer. Esta junta não representa qualquer computação,pelo contrário: a animação que lhe seja atribuída é simplesmente ignorada e não processada. Assim,o que a sua rotina Aplica faz é apenas devolver a matriz identidade, independentemente da matriz querotação que lhe seja dada como parâmetro.

4.6.2.2 Junta Uniaxial

Para as juntas Uniaxial queremos um método que permita que sejam utilizados eixos de rotaçãoarbitrários, e ainda, tendo em conta o dito no final da secção 2.1, ou seja, o facto de que os eixos derotação raramente são fixos, foi necessário encontrar uma técnica que conseguisse conciliar ambos.

A técnica escolhida foi a da restrição angular de [88]. Nesta técnica, restringe-se o movimento de umsegmento face a outro, a um espaço definido entre dois quaterniões, ou seja, o segmento filho pode rodarface ao pai, segundo o eixo definido pela transformação de um quaternião para o outro, entre os ângulosdefinidos pelos dois quaterniões. O conceito foi ligeiramente modificado, pois esta técnica foi desenvolvidapara ser utilizada em simulação física de corpos rígidos, pelo que consistia originalmente em dois passos.Primeiro era calculado o excedente de rotação que estava a ser aplicado; de seguida esse excedente eradividido de forma que a ser compensado pelos dois segmentos, tendo em conta a sua massa inercial. Nanossa versão, apenas fazemos uso da parte inicial, de forma que apenas o segmento filho é afectado pelarestrição, como ilustrado na Figura 4.8. Nesta figura, onde assumimos o referencial zero como sendo oreferencial do segmento pai, temos as orientações máxima e mínima representadas, respectivamente, porqmax e qmin, o segmento pai representado por spai, e o filho, violando a restrição, colocado em sf ilho.scorrigido representa então o resultado final corrigido. Cada um dos quaterniões de orientação máximae mínima são definidos em espaço de rotação local, ou seja, referem-se a orientação relativamente aoreferencial do segmento pai, e não ao referencial global. Esta técnica para a restrição de movimento ébastante simples e eficiente, pois limita-se a truncar os valores X, Y e Z do quaternião, de forma queesteja compreendido entre os valores máximos e mínimos. De seguida é calculado o valor da componenteW do quaternião, com base nos valores X, Y e Z resultantes. Finalmente o quaternião é normalizado.Ao longo das próximas secções, será utilizada uma rotina para limitar determinado valor entre um valormáximo e um valor mínimo, à qual chamamos CLAMP. Essa rotina é definida em Algoritmo 2, de formaque possa ser reutilizada, para facilitar a compreensão do restante pseudocódigo.

Page 69: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 47

Figura 4.8: Correcção da junta Uniaxial.

Algorithm 1 Pseudocódigo da rotina CLAMP.

Função CLAMP(v,l,h)Se v < l Devolve lSenão, Se v > h Devolve hSenão Devolve v

O Algoritmo 2 apresenta o algoritmo correspondente à técnica apresentada, em pseudocódigo. Asvariáveis utilizadas são as seguintes:

• qMax – O quaternião que representa a orientação máxima;• qMin – O quaternião que representa a orientação mínima;• qInicial – O quaternião que foi inicialmente aplicado à junta;• qFinal – O quaternião final, limitado entre as orientações máxima e mínima.

Algorithm 2 Cálculo das restrições na junta Uniaxial.

Cria-Vector ComponentesXYZComponentesXYZ.X = CLAMP(qInicial.X, qMin.X, qMax.X)ComponentesXYZ.Y = CLAMP(qInicial.Y, qMin.Y, qMax.Y)ComponentesXYZ.Z = CLAMP(qInicial.Z, qMin.Z, qMax.Z)qFinal.W = RaizQuadrada(1 - ComponentesXYZ.Norma^2)qFinal.X = ComponentesXYZ.XqFinal.Y = ComponentesXYZ.YqFinal.Z = ComponentesXYZ.ZqFinal.Normaliza

Em termos gerais, a junta Uniaxial contém ainda um conjunto de rotinas na sua sequência deexecução, que podem ser substituídas nas juntas que estendam desta, de forma a proporcionar maisfuncionalidades. Essa sequência de execução é apresentada em Algoritmo 3. É esta a sequência queefectivamente recebe a rotação aplicada a uma junta, e a processa, resultando na rotação final, resultadode restrição, que é depois realmente utilizada pela junta. As variáveis e rotinas utilizadas são as seguintes:

• matrizInicial – Matriz inicial que é passada à junta;• quatRotacao – Quaternião auxiliar, construído a partir da matriz Inicial;• matrizFinal – Matriz final que é devolvida à junta;• PreProcessaMatriz – Permite que juntas estendidas destas pré-processem ou pré-analisem a matriz

antes de efectuar o cálculo das restrições;• MatrizParaQuaterniao – Converte uma matriz para a sua representação em forma de quaternião;

Page 70: Tese 18,9 MB

48 CAPÍTULO 4. ARQUITECTURA

• AplicaRestricoes – Aplica restrições ao quaternião utilizando o método adaptado de Baltman eRadeztsky como foi descrito acima;

• QuaterniaoParaMatriz – Converte o quaternião para a sua representação matricial;• PosProcessaMatriz – Permite que juntas estendidas destas pós-processem ou pós-analisem a matriz

após efectuar o cálculo das restrições;

Algorithm 3 Sequência de execução (rotina Aplica) na junta Uniaxial.

Rotina Aplica(matrizInicial)matrizInicial = PreProcessaMatriz(matrizInicial)quatRotacao = MatrizParaQuaterniao(matrizInicial)quatRotacao = AplicaRestricoes(quatRotacao)matrizFinal = QuaterniaoParaMatriz(quatRotacao)matrizFinal = PosProcessaMatriz(matrizFinal)

Inicialmente as rotinas de pré e pós processamento da matriz não fazem nada a não ser devolver amatriz que é dada, pelo que apenas juntas que substituam estes métodos realizarão cálculos adicionaisnestes pontos, proporcionando assim pontos de entrada e saída do algoritmo.

4.6.2.3 Junta Poliaxial

Para implementar restrições numa junta que suporte três graus de liberdade de rotação, decidimosseguir o método proposto por [86], que foi já descrito na secção 3.2.11. A ideia aqui é separar o movimentoem duas componentes: balanço e torção, ou em inglês swing e twist. No nosso referencial, o balançocorresponde à rotação sobre um eixo localizado no plano XZ, que apenas orienta, ou aponta o segmentoem determinada direcção, sendo a torção a rotação do segmento sobre si próprio, no eixo Y , como foi járeferido acima. Esta decomposição pode ser melhor observada na Figura 4.9.

Figura 4.9: Componentes swing e twist de uma rotação.

A grande vantagem deste método é que, separando as componentes, podemos limitá-las em separado.A limitação da torção será simples, visto que basta manter o valor entre um ângulo máximo e mínimo.Para limitar a componente de balanço, utilizamos o método proposto no mesmo trabalho, que consisteem definir a região de balanço válida através de um polígono esférico, como representamos na Figura 4.10.A ideia é imaginar que se coloca um invólucro sólido na junta, apenas com uma abertura, de forma que osegmento apenas pode balançar no espaço permitido por essa abertura. Nesta figura temos um exemplo,em que a pose considerada de balanço zero do braço está no centro, com cor mais carregada, e outros trêsbraços ligeiramente transparentes exemplificam algumas poses válidas, que, no entanto, se encontram jáno limite de movimento, como se estivessem a colidir com a fronteira marcada a vermelho. Em [86] osautores fornecem os algoritmos, tanto para a decomposição de uma orientação nas suas componentes debalanço e torção, como também para um método de projecção ortogonal de um ponto numa elipse emduas dimensões. Este método é utilizado para verificar se determinado balanço está ou não na regiãoválida, o que, em caso negativo, permite encontrar o ponto válido mais próximo.

Page 71: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 49

Figura 4.10: Polígono esférico utilizado para restringir a rotação na junta Poliaxial.

Na Figura 4.11 podemos observar a projecção ortogonal do braço exemplificado anteriormente, es-tando visível apenas os três braços que se encontravam no limite de movimento permitido. A componentede balanço que é calculada é um vector bidimensional, que indica a direcção do segmento neste plano XZque está representado na imagem. No entanto, para indicar uma direcção, a magnitude de um vector nãoé importante. Por isso a magnitude deste vector é utilizada para representar o ângulo que o segmentofaz em relação à sua pose referencia. Pode-se pensar que o vector indica uma direcção a partir do centroda elipse, e a sua magnitude indica um raio. Se o raio for menor do que o da elipse, na direcção indicadapelo vector, então ele não viola a restrição. Caso contrário, podemos apenas calcular o raio da elipsenessa direcção, e devolvê-la.

Figura 4.11: Projecção ortogonal do polígono esférico utilizado para restringir a rotação na junta Poliaxial.

Na realidade, o que é proposto por Baerlocher e Boulic é que o vector seja tratado como um pontoneste plano XZ, e caso se verifique que o ponto está localizado fora da elipse, calcula-se o ponto quepertence à elipse que possui a menor distância euclidiana até esse ponto indicado pelo vector. O métodoé baseado em [120], que relembra que para verificar se, num plano bidimensional XZ, um ponto está forade uma elipse, basta testar a equação: (raiox

x

)2+(raioz

z

)2> 1 (4.6.1)

A elipse que define a restrição angular é construída a partir de limites angulares máximo e mínimo,para ambos os eixos do swing, X e Z, portanto temos como parâmetros iniciais:

• SwingMaxX – Ângulo de rotação máximo sobre o eixo X;• SwingMinX – Ângulo de rotação mínimo sobre o eixo X;• SwingMaxZ – Ângulo de rotação máximo sobre o eixo Z;• SwingMinZ – Ângulo de rotação mínimo sobre o eixo Z.

No entanto, podemos reparar que para que a elipse se mantenha centrada na origem, SwingMaxX eSwingMinX teriam de ter o mesmo valor absoluto, com sinal oposto, acontecendo o mesmo para o eixo Z.Para podermos usar valores que não mantenham e elipse centrada na origem, teremos de calcular o valor

Page 72: Tese 18,9 MB

50 CAPÍTULO 4. ARQUITECTURA

do seu deslocamento, que designamos por OffsetEllipse, para posteriormente o podermos considerar noscálculos. Os valores efectivos para os raios da elipse são definidos em raiox e raioy, sendo estes três valores(raios e deslocamento) todos calculados directamente através dos limites angulares descritos previamente,de forma a fornecer uma parametrização simples de perceber:

raiox = SwingMaxX − SwingMinX

2 (4.6.2)

raioz = SwingMaxZ − SwingMinZ

2 (4.6.3)

OffsetEllipse = (SwingMaxX − raiox, SwingMaxZ − raioz) (4.6.4)

A Figura 4.12 mostra, no lado esquerdo, uma elipse que representa a restrição ao swing, construída apartir dos quatro parâmetros. Nesta mesma figura temos também a representação do vector OffsetEllipse,que representa o deslocamento que a elipse adquire, face à origem. À direita vemos como estes parâmetrosse relacionam depois com os raios raiox e raioz, após centrar a elipse na origem. Estes elementos serãoposteriormente utilizados para detectar e corrigir o movimento de swing.

Figura 4.12: Elipse de restrição ao movimento de swing.

O algoritmo proposto por [86] e que utilizamos para decompor um quaternião nas suas componentesde balanço e torção está apresentado no Algoritmo 4. As variáveis e rotinas utilizadas são as seguintes:

• quatRotacao – Quaternião que representa a orientação a ser decomposta;• Atan2(y, x) – Uma variação da função arco-tangente, incluída geralmente nas bibliotecas de funções

usuais, que devolve o ângulo entre o eixo X positivo e o ponto (X,Y ) indicado como parâmetro,no intervalo [−π, π], ou seja, −π < Atan2(y, x) ≤ π;

• Sinc(x) – Esta função devolve Sin(x)x se x for diferente de zero, e 1 caso contrário;

• SwingTwist – Vector tridimensional que representa a decomposição final em balanço e torção, orga-nizado como (balançoX, balançoZ, torção);

• ReferencialDoPai – Valor booleano que indica se a junta deve se processada no referencial do pai,ou se deve calcular as restrições a partir da sua própria pose inicial;

• RotacaoAoPai – Quaternião que representa a rotação do referencial da junta actual, face ao referen-cial do seu pai.

Agora que temos a rotação representada no formato swing-twist, podemos utilizar a fórmula da elipsepara verificar se o swing está fora da elipse que representa a restrição angular:

( raioxSwingTwistX

)2+( raiozSwingTwistZ

)2> 1 (4.6.5)

Page 73: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 51

Algorithm 4 Algoritmo para decompor um quaternião em componentes de balanço e torção, baseadoem Baerlocher e Boulic [86].

Se ReferencialDoPaiquatRotacao = RotacaoAoPai^(-1) * quatRotacao

Se quatRotacao.Y = 0 e quatRotacao.W = 0//temos uma singularidadetwist = 0

Senaotwist = 2*Atan2(quatRotacao.X, quatRotacao.W)

beta = Atan2(sqrt(quatRotacao.X^2+quatRotacao.Z^2), sqrt(quatRotacao.Y^2+quatRotacao.W^2))gamma = twist/2swing.X = 2/Sinc(beta) * (Cos(gamma)*quatRotacao.X + Sin(gamma)*quatRotacao.Z)swing.Z = 2/Sinc(beta) * (-Sin(gamma)*quatRotacao.X + Cos(gamma)*quatRotacao.Z)SwingTwist = (swing.X, swing.Z, twist)

Caso esteja, utilizamos o swing como um ponto bidimensional que projectamos sobre uma elipse,como Baerlocher e Boulic [86] propõe:Dada uma elipse centrada na origem do plany XZ, com raios raio_x e raio_z, o ponto da elipse que possuia menor distancia euclidiana até a um ponto (Px, Pz) é dado por:

Qi = (raiox1− λ2

i

1 + λ2i

, raioy2λi

1 + λ2i

) (4.6.6)

onde i corresponde ao Qi que possui a menor distancia até P , ou seja, para o qual

Di =√

(Px −Qix)2 + (Py −Qiy )2 (4.6.7)

seja menor.Cada λi corresponde a uma solução do polinómio de quarto grau:

Pyλ4 + (f − e)λ3 + (f + e)λ− Py = 0 (4.6.8)

e = 2(raioy −raio2

x

raioy) (4.6.9)

f = 2Pxraioxraioy

(4.6.10)

Para resolver esta equação, utilizámos as rotinas de cálculo de raízes cúbicas e quádricas, desenvol-vidas por Schwarze14, e disponibilizadas no Graphics Gems [96]. Depois de termos aplicado a restriçãoà componente de balanço, falta apenas restringir a componente de torção. Para isso bastará utilizar arotina CLAMP anteriormente definida, com os parâmetros TwistMin e TwistMax que representam, respec-tivamente, o ângulo mínimo e máximo de torção que a junta pode executar:

SwingTwistt = CLAMP (SwingTwistt, TwistMin, TwistMax) (4.6.11)

Tal como a junta Uniaxial, também a junta Poliaxial contém um conjunto de sub-rotinas que podemser substituídas, de forma a permitir a extensão da sua funcionalidade. Estas rotinas são executadas pelarotina geral Aplica, descrita no Algoritmo 5. As variáveis e sub-rotinas utilizadas são as seguintes:

14Schwarze, Jochen, Cubic and Quartic Roots, Graphics Gems, p. 404-407, code: p. 738-786

Page 74: Tese 18,9 MB

52 CAPÍTULO 4. ARQUITECTURA

• matrizInicial – Matriz inicial que é passada à junta;• matrizRotacao – Matriz auxiliar, construído a partir da matriz Inicial;• PreProcessaMatriz – Permite que juntas estendidas destas pré-processem ou pré-analisem a matriz

antes de a decompor em swing-twist;• DecompoeSwingTwist – Decompõe uma matriz nos seus componentes swing-twist, pelo método de

Baerlocher e Boulic;• PreProcessaSwingTwist – Permite pós-analisar ou processar a matriz e as componentes swing-twist,

e efectuar modificações às mesmas, antes de efectuar correcções;• CorrigeSwingTwist – Corrige as componentes swing-twist, conforme os limites angulares de balanço

definidos para a junta, pelo método de Baerlocher e Boulic;• PosProcessaSwingTwist – Permite analisar ou processar as componentes de swing-twist, após ter sido

efectuada a correcção;• SwingTwistParaMatriz – Converte as componentes swing-twist na sua representação matricial;• ReferencialDoPai – Valor booleano que indica se a junta deve se processada no referencial do pai,

ou se deve calcular as restrições a partir da sua própria pose inicial;• RotacaoAoPai – Quaternião que representa a rotação do referencial da junta actual, face ao referen-

cial do seu pai;• PosProcessaMatriz – Permite que juntas estendidas destas pós-processem ou pós-analisem a matriz

após efectuar o cálculo das restrições;• matrizFinal – Matriz final que é devolvida à junta;

Algorithm 5 Sequência de execução (rotina Aplica) na junta Poliaxial.

Rotina Aplica(matrizInicial)matrizRotacao = PreProcessaMatriz(matrizInicial)swingTwist = DecompoeSwingTwist(matrizRotacao)

swingTwist = PreProcessaSwingTwist(matrizRotacao, swingTwist)swingTwist = CorrigeSwingTwist(swingTwist)swingTwist = PosProcessaSwingTwist(swingTwist)

matrizFinal = SwingTwistParaMatriz(swingTwist)Se ReferencialDoPaimatrizFinal = MatRotacaoAoPai * matrizFinal

matrizFinal = PosProcessaMatriz(matrizFinal)

4.6.3 Juntas Estendidas

Foi necessário considerar alguns tipos de juntas estendidas. Algumas destas juntas modificam ocomportamento de uma junta elementar, mantendo, no entanto, o seu conceito de funcionamento, outrasimplementam comportamento que visa resolver alguns problemas com que nos deparámos em determi-nados pontos do esqueleto, e ainda outras são versões mais especificamente concebidas para suportarmovimento passivo em algumas articulações. O movimento passivo acontece quando um determinadomovimento de uma junta dirige outro, e ambos não podem ser executados em separado. Assim, emborase verifiquem visual e comportamentalmente dois movimentos, considera-se que é apenas um movimento,pois são parametrizados pelo mesmo valor, ou seja pelo mesmo grau de liberdade. Resumindo este grupode juntas, as juntas Biaxial e Plana são versões modificadas da junta Poliaxial. A junta Biaxial removeo componente de torção, enquanto a junta Plana adiciona componentes de translação nos três eixos. Ajunta do cotovelo tem o objectivo de transmitir a torção que lhe é aplicada ao punho, já que o cotovelonão manterá essa componente. Os casos que implementam movimento passivo são o joelho, que, duranteo movimento de flexão e extensão, efectua também uma rotação interna (torção), do tornozelo, pois omovimento de pronação e supinação estão também ligados ao movimento de rotação, e ao par ombro

Page 75: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 53

e junta esterno-clavicular, de forma a implementar ritmo umero-escapular. Na realidade, a articulaçãocarpo-metacarpo do polegar também possui comportamento passivo. No entanto, no nosso trabalho, si-mulámos esta junta sem essa rotação. Sendo que o procedimento seria análogo ao que é feito no tornozelo[9].

4.6.3.1 Cotovelo (Uniaxial)

Inicialmente, para a articulação do cotovelo, utilizámos uma junta uniaxial elementar, pois o movi-mento nesta articulação é efectuado apenas em um grau de liberdade de rotação. No entanto, surgiramproblemas relacionados com o facto de esta junta vir a seguir ao complexo do ombro, que adiciona bas-tante complexidade e alguns problemas. Em diversas situações, foi constatado que a orientação do ombrofazia variar enormemente a forma como o cotovelo era orientado. O que concluímos foi que, apesar deo movimento do cotovelo e do joelho ter sido gravado ou sequenciado de forma que a sua rotação apa-rentasse ser aplicada num plano fixo, na realidade esse “plano fixo” era constantemente orientado com ajunta pai. Daí termos percebido que, essa junta pai, possuindo liberdade de rotação em 3 graus, acabapor transmitir um comportamento algo inconstante, independentemente de o movimento ter originadoem captura de movimento, ou em movimento sequenciado. O problema é magnificado ainda pelo factoda junta pai do ombro ser, por sua vez, também uma junta com 3 graus de liberdade de rotação, o quefaz com que este problema seja verificado no cotovelo, mas não, por exemplo, no joelho. Isto aconteceporque os sistemas que calculam e geram as animações muitas vezes não têm em conta a orientação dossegmentos, mas apenas a posição de cada junta. O problema transmite-se para a junta do cotovelo e dojoelho, quando o sistema de captura ou de síntese de movimento não tem em conta também que estasjuntas não podem rodar sobre o teu próprio eixo (como numa articulação cilíndrica), portanto a juntado cotovelo adquire uma componente de rotação em Y .

Assim, como se ilustra na Figura 4.13, duas poses aparentemente similares, com as juntas na mesmaposição, podem possuir orientações completamente diferentes em relação aos seus segmentos, sendo queessas situações podem mesmo coexistir na mesma sequência de animação. Podemos ver nesta figura,um caso considerado correcto na transformação da pose a) na pose c). A transformação de b) para d)aparenta ser igual, no entanto, pelas cores, percebe-se que o cotovelo rodou sobre o seu eixo, tendo depoiso punho rodado de forma inversa para manter a pose.

Nós queremos um esqueleto que funcione com animações oriundas de diferentes métodos e aplicações,portanto encontrámos aqui um ponto que era necessário aprofundar: ao contrário da maioria das arti-culações uniaxiais, a articulação do cotovelo teria de ser animada de forma mais específica. Precisámosde descobrir qual o ângulo que a junta está a fazer, independentemente do eixo sobre o qual roda, paraque esse ângulo possa ser utilizado numa rotação directamente aplicado ao eixo sobre o qual que ela deverodar. Esta ideia explica-se melhor na Figura 4.14. Utilizando o cotovelo como exemplo, a sequênciade animação pode-nos dar um ângulo α numa situação idêntica à da Figura 4.14a. Porém, podemos verque o cotovelo dessa figura apresenta uma rotação inadequada, que o corpo humano não executa. Assim,em vez de aplicar essa rotação ao cotovelo, o que fazemos é calcular apenas esse ângulo α, e aplicamo-lodirectamente ao eixo de rotação do cotovelo do nosso esqueleto (e não ao eixo de rotação utilizado nasequência de animação).

Estando garantido que o cotovelo irá girar apenas sobre o eixo correcto, falta só garantir que eleadquire apenas valores de rotação anatomicamente correctos. Para isso apenas temos de limitar o valorde forma que se encontra compreendido entre o valor de rotação mínimo e máximo. Esta abordagemcoloca de lado a utilização do método de [88] que permitia utilizar eixos arbitrários, porque estamosa tratar especificamente a articulação do cotovelo, e desta forma conseguimos manter melhor a suaestabilidade, ao mesmo tempo que acabamos por simplificar a computação necessária neste ponto. Aaplicação das restrições neste tipo de junta passou a ser desprovida da utilização de quaterniões, pelo queo seu algoritmo geral passou a ser o descrito no Algoritmo 6.

A variável matrizInicial é uma matriz que corresponde à rotação aplicada à junta, pela sequência deanimação, e a variável matrizFinal é a matriz que corresponde à rotação corrigida e que será aplicada à

Page 76: Tese 18,9 MB

54 CAPÍTULO 4. ARQUITECTURA

Figura 4.13: Indeterminismo da orientação do cotovelo a partir da pose do braço.

Figura 4.14: Aplicação correcta de rotação no cotovelo.

junta. A rotina AplicaRestricoes definida no Algoritmo 7 agora retira a direcção do segmento directamenteda segunda coluna da matriz de rotação, e utiliza essa direcção para calcular o produto interno com o eixovertical Y . Desse produto é retirado o ângulo que o segmento está a fazer com o referencial do pai, sendoesse ângulo, de seguida, utilizado para rodar a junta directamente no seu eixo. A variável anguloInicialterá sido pré-calculada, e corresponde ao ângulo que o cotovelo faz na pose inicial do esqueleto, que deveser considerado, visto que no cotovelo queremos medir o ângulo que o antebraço faz para com o braço:

O cotovelo possui ainda outra funcionalidade que é de transmitir ao punho o valor de torção quea animação lhe aplica. Isto é necessário, pois para simular o movimento de torção do antebraço com anorma H-Anim, temos de torcer ou a junta do cotovelo, ou a do punho. Optámos por torcer a do punho,adicionando-lhe assim mais um grau de liberdade. No entanto, nas animações, essa torção poderá tersido aplicada ao cotovelo. A resolução é simples, apenas temos de calcular a torção que é aplicada aocotovelo, e enviá-la para o punho, para que o punho a possa depois considerar. Para isso, substituímosa rotina PreProcessaMatriz pelo definido no Algoritmo 8

A rotina CalculaTorcao segue o método de [86], utilizado na junta Poliaxial, no entanto, contémapenas a parte que calcula a componente de torção da matriz de rotação.

Page 77: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 55

Algorithm 6 Sequência de execução (rotina Aplica) na junta Cotovelo.

Rotina Aplica(matrizInicial)matrizInicial = PreProcessaMatriz(matrizInicial)matrizFinal = AplicaRestricoes(matrizInicial)matrizFinal = PosProcessaMatriz(matrizFinal)

Algorithm 7 Sequência de execução (rotina AplicaRestricoes) na junta Cotovelo.

segmento = matrizInicialcoluna2angulo = Cos(segmento.(0,1,0))^(-1) + anguloInicialangulo = CLAMP(angulo, MinAngulo, MaxAngulo)angulo = angulo – anguloInicialmatrizFinal = MatrizDeRotacaoEmX(angulo)

4.6.3.2 Joelho (Uniaxial)

Para simular o movimento passivo de rotação no joelho, ilustrado na Figura 2.1 da secção 2.1.1,tivemos de criar uma versão estendida da junta Uniaxial. Após o cálculo do ângulo final, esta versãoestendida vai utilizar esse ângulo como parâmetro para a rotação do joelho. O movimento de deslizereferido anteriormente não será considerado neste trabalho. A ideia de utilizar um grau de liberdade paramovimentar outros é uma das ideias apresentadas no modelo de juntas de [89], que abordam diversosaspectos relativos à dependência e acoplamento de movimento entre graus de liberdade da mesma juntaou de juntas diferentes. O Algoritmo 9 apresenta o cálculo que é efectuado nesta junta, que substitui arotina PosProcessaMatriz. As variáveis utilizadas, e que ainda não descrita, são as seguintes:

• RotacaoInternaJoelho - representa o valor de rotação interna do joelho quando este se encontra emHiperextensão;

• RotacaoExternaJoelho - representa o valor de rotação interna do joelho quando este se encontra emFlexão;

• AnguloMin – Representa o ângulo de rotação mínimo, associado ao movimento de Hiperextensão;• AnguloMax – Representa o ângulo de rotação máximo, associado ao movimento de Flexão;• CalculaFlexao – Esta rotina calcula a flexão que a matriz de rotação aplica, ou seja, verifica qual o

ângulo que a matriz faz em relação ao referencial pai. O procedimento é análogo ao que foi feito nocálculo do ângulo do cotovelo.

À semelhança do que aconteceu com o cotovelo, também é frequente que o joelho adquira torção deforma a simular a torção que a perna real executa sobre a perna. No Algoritmo 10 transmitimos essatorção ao tornozelo, da mesma forma que fizemos para o punho.

4.6.3.3 Biaxial (Poliaxial)

A junta Biaxial é uma junta que possui apenas componente de swing, ou seja, não permite torção.Dessa forma, podemos estender a junta Poliaxial, e simplesmente remover a componente de swing, comoé definido no Algoritmo 11.

Algorithm 8 Rotina PreProcessaMatriz da junta Cotovelo.

Rotina PreProcessaMatriz(matrizInicial):Punho.TorcaoDoCotovelo = CalculaTorcao(matrizInicial)

Page 78: Tese 18,9 MB

56 CAPÍTULO 4. ARQUITECTURA

Algorithm 9 Rotina PosProcessaMatriz da junta Joelho.

Rotina PosProcessaMatriz(matrizFinal):flexao = CalculaFlexao(matrizFinal)Se flexao > 0 //estamos em flexãorotacao = RotacaoExternaJoelho*flexao/AnguloMax

Senãorotacao = -RotacaoInternaJoelho*flexao/AnguloMin

Devolve MatrizDeRotacaoEmY(rotacao) * matrizFinal

Algorithm 10 Rotina PreProcessaMatriz da junta Joelho.

Rotina PreProcessaMatriz(matrizInicial):Tornozelo.TorcaoDoJoelho = CalculaTorcao(matrizInicial)

4.6.3.4 Planas (Poliaxial)

As juntas planares são utilizadas para simular articulações planares, que permitem movimento em6 graus de liberdade. Estas juntas permitem geralmente pouco movimento, tanto de rotação como detranslação, e no caso das juntas utilizadas na norma H-Anim, correspondem às articulações intervertebrais(entre cada vértebra ), e às articulações acromio-claviculares (uma das três articulações do ombro). Assequências de animação originadas por captação de movimento ou por síntese não contemplam geralmentetranslação entre juntas, pelo que não aprofundámos esse assunto no nosso estudo. No entanto, propomosque o problema se possa resolver de forma simples. A questão de simular uma articulação com 3 graus derotação é resolvida com a articulação poliaxial que apresentámos anteriormente. Limitar a translação é,por si, um procedimento bastante simples também. A única coisa que necessitamos fazer é verificar, paracada eixo, qual o valor de translação que foi aplicado, e limitá-lo a uma gama de valores, definido por umintervalo com valor máximo e mínimo, de forma análoga ao que fazemos para limitar as rotações nas juntaselementares, usando a rotina CLAMP, desta vez aplicado às componentes do vector de deslocamento.

4.6.3.5 Ombro (Poliaxial)

Há um comportamento bastante importante que está associado ao ombro, que é o ritmo umero-escapular, já descrito na secção 2.1.3. Para simular este ritmo, decidimos seguir a abordagem de [29],que a descreve bem. Esta abordagem utiliza apenas a articulação do ombro, e a esterno-clavicular, pois aarticulação acromio-clavicular serve mais para permitir a flexibilidade que é exigida entre as outras duas,garantindo o correcto movimento dos diversos ossos que constituem o complexo do ombro. Para podermosutilizar este método, temos de decompor a rotação do ombro em componentes de elevação e abdução,pois é sobre esses componentes que [29] trabalha. Estes componentes são bem compreensivos na Figura4.15. A elevação corresponde assim ao ângulo que o braço faz para com o eixo vertical, representada naimagem a amarelo, e a abdução, pensando em alto nível, dirá em que direcção o braço está virado, o queé calculado pelo ângulo que a projecção do seu segmento sobre o plano XZ faz para com o eixo X, e quepode ser observado a azul.

Algorithm 11 Rotina PreProcessaSwingTwist da junta Biaxial.

Rotina PreProcessaSwingTwist(SwingTwist):SwingTwisttwist = 0Devolve SwingTwist

Page 79: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 57

Figura 4.15: Decomposição da rotação do ombro em componentes de elevação e abdução, segundo Badler.

Começamos por apresentar no Algoritmo 12 a rotina que converte a matriz de rotação nas suascomponentes elevação e abdução.

Algorithm 12 Rotina que decompõe uma matriz de rotação em componentes de elevação e abduçãopelo método de Badler.

Rotina MatrizParaElevacaoAbducao(matriz):elevacao = Cos(Matrixcoluna2.(0,1,0))^(-1)projeccaoXZ = (Matrixcoluna2.X,0,Matrixcoluna2.Z)projeccaoXZ.Normaliza()abducao = Cos(projeccaoXZ.(1,0,0))^(-1)Se projeccaoXZZ > 0abducao = -abducao

Devolve (elevacao, abducao)

[29] apresenta o algoritmo que, dados os parâmetros de elevação e de abdução que se pretende aplicarao ombro, os distribui pela junta do ombro e pela junta esterno-clavicular de forma adequada para quese simule o ritmo umero-escapular. Esta técnica, apresentada no Algoritmo 13, foi directamente aplicadono nosso trabalho, após termos decomposto a matriz nas componentes de elevação e abdução.

Finalmente, o Algoritmo 14 especifica que estes cálculos são efectuados no pontoPreProcessaSwingTwist.

4.6.3.6 Punho (Poliaxial)

O punho é uma junta Poliaxial normal, no entanto, recebe alguma torção por parte do cotovelo,como explicámos na secção devida. Assim, como se define no Algoritmo 15, esta junta apenas substituia rotina de PreProcessSwingTwist, de forma a adicionar o twist que veio do cotovelo.

4.6.3.7 Tornozelo (Poliaxial)

A junta do tornozelo segue a mesma ideia de [89] que utilizámos na junta do joelho, no sentido emque possui movimento passivo. Porém, os tipos de movimento são diferentes, para além do facto da juntado tornozelo ser uma versão modificada da junta Biaxial. No caso da nossa junta especificamente, arotação em X corresponde aos movimentos de flexão, a rotação em Y à abdução/adução, e a rotação em

Page 80: Tese 18,9 MB

58 CAPÍTULO 4. ARQUITECTURA

Algorithm 13 Método de Badler para distribuir os componentes de elevação e abdução do ombro pelajunta esterno-clavicular e gleno-umeral.

Rotina DistribuiRitmoUmeroEscapular(elevacao, abducao):Se elevacao > 131.4beta1 = -0.035 x elevacao + 128.7

Senãobeta1 = 0.2514 x elevacao + 91.076

Se elevacao > 130beta2 = 120

Senãobeta2 = 0.21066 x elevacao + 92.348

elevacao_clavicula = beta1 * cos(abducao)+ beta2 * (1-cos(abducao) )- 90abducao_clavicula = 0.2 x abducaoelevacao_ombro = elevacao - elevacao_claviculaabducao_ombro = abducao - abducao_clavicula

Algorithm 14 Rotina PreProcessaSwingTwist da junta Ombro.

Rotina PreProcessaSwingTwist(matrizInicial, SwingTwist):elevacaoAbducao = MatrizParaElevacaoAbducao(matrizInicial)(elevAbd_ombro, elevAbd_clavicula) = DistribuiRitmoUmeroEscapular(elevacaoAbducao)Clavicula.ElevacaoAbducaoOmbro = elevAbd_claviculaSwingTwist = (elevAbd_ombro, SwingTwisttwist)Devolve SwingTwist

Algorithm 15 Rotina PreProcessaSwingTwist da junta Punho.

Rotina PreProcessaSwingTwist(SwingTwist):SwingTwist_twist = SwingTwist_twist + TorcaoDoCotoveloDevolve SwingTwist

Page 81: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 59

Z à supinação/pronação. Antes de tratar disso, temos de adicionar à componente de torção aquela queé transmitida pelo joelho, tal como foi feito no punho, e como se pode ler no Algoritmo 16.

Algorithm 16 Rotina PreProcessaSwingTwist da junta Tornozelo.

Rotina PreProcessaSwingTwist(SwingTwist):SwingTwist_twist = SwingTwist_twist + TorcaoDoJoelhoDevolve SwingTwist

No tornozelo, no entanto, a abdução acontece em conjunto com a supinação, e a adução acontece emconjunto com a pronação. Temos de considerar que a sequência de animação pode movimentar ambos, eque além disso, o tornozelo recebe abdução/adução a partir da torção do joelho. Dessa forma, decidimoscalcular tanto a rotação em Y que é dirigida pela rotação aplicada em Z, como a rotação em Z que édirigida pela rotação total aplicada em Y . No final, em cada um dos eixos calcula-se a rotação média,entre a rotação que foi aplicada directamente, e a que foi calculada como movimento passivo devido aooutro eixo. Este processo está definido no Algoritmo 17.

Algorithm 17 Rotina PosProcessaSwingTwist da junta Tornozelo.

Rotina PosProcessaSwingTwist(SwingTwist):amplitudeY = MaxAnguloY – MinAnguloYamplitudeZ = MaxAnguloZ – MinAnguloZyPassivo = MinAnguloY + amplitudeY * (SwingTwist_swingZ - MinAnguloZ)/amplitudeZzPassivo = MinAnguloZ + amplitudeZ * (SwingTwist_twist - MinAnguloY)/amplitudeYSwingTwist_swingZ = (SwingTwist_swingZ + zPassivo)/2SwingTwist_twist = (SwingTwist_twist + yPassivo)/2)Devolve SwingTwist

4.6.3.8 EsternoClavicular (Biaxial)

Esta junta adiciona um requisito à implementação do nosso modelo, pois hierarquicamente esta juntaé calculada antes da do ombro, no entanto, é na do ombro que se calcula o ritmo umero-escapular. Assim,esta junta terá de dar indicação de que deve ser reprocessada após o processamento da junta do ombro,o que resulta que tanto estas duas, como a junta intermédia (acromio-clavicular) sejam calculadas duasvezes. Isto é necessário, pois da primeira vez as juntas são colocadas na posição indicada pela animação,sendo aqui distribuídas pelo ombro e pela clavícula as respectivas componentes do ritmo umero-escapular.Da segunda vez que estas juntas são processadas, são actualizadas de forma a implementarem esse ritmo.Todo este processo não tem a ver especificamente com esta junta, mas com a forma como as juntas sãoprocessadas, pelo que passamos a explicar o processamento que é executado especificamente nesta junta.Como dissemos já, esta junta recebe do ombro, uma componente que indica qual deverá ser a sua pose,de forma a manter entre elas o ritmo umero-escapular. No entanto, ao contrário do que foi feito notornozelo, em que a animação passiva era composta com a animação directa utilizando os seus valoresmédios, aqui interessa-nos utilizar apenas o maior.

Esta conclusão, que também é apresentada em [89], tira-se por simples observação física do movi-mento do ombro. Se o braço é elevado, a clavícula será forçada a elevar-se também. No entanto, podemoselevar a clavícula sem elevar o braço, o que nos indica que estes movimentos não estão intrinsecamenteligados. Assim, nesta junta decompomos a sua rotação nas componentes de elevação e abdução resultan-tes da animação directa, sendo que para cada uma dessas componentes, será mantida a que tiver valormáximo, entre as que resultaram da animação directa e da indirecta. Esta ideia está bem explícita noAlgoritmo 18.

Page 82: Tese 18,9 MB

60 CAPÍTULO 4. ARQUITECTURA

Algorithm 18 Rotina PreProcessaMatriz da junta EsternoClavicular.

Rotina PreProcessaMatriz(matrizInicial):(elevacao, abducao) = MatrizParaElevacaoAbducao(matrizInicial)elevacao = Max(elevacao, ElevacaoAbducaoOmbro_elevacao)abducao = Max(abducao, ElevacaoAbducaoOmbro_abducao)ElevacaoAbducaoOmbro = (0, 0)Devolve ElevacaoAbducaoParaMatriz(elevacao, abducao)

A rotina que transforma as componentes de elevação e abdução de volta à representação matricialnão tinha sido ainda utilizada, pelo que a apresentamos de seguida. Esta rotina foi também retiradade [29]. Como a componente de twist não é considerada na parametrização de elevação e abdução, elapoderá ser omitida, sendo-lhe atribuída o valor zero, como se pode ver no Algoritmo 19.

Algorithm 19 Método de Badler para converter as componentes de elevação e abdução de uma rotaçãode novo em matriz de rotação.

Rotina ElevacaoAbducaoParaMatriz(elevacao, abducao, twist = 0):theta = abducao * (2*elevacao)/PIMatriz1 = MatrizDeRotacaoEmY(theta+twist-abducao)Matriz2 = MatrizDeRotacaoEmZ(elevacao)Matriz3 = MatrizDeRotacaoEmY(abducao)Devolve Matriz1 x Matriz2 x Matriz3

4.6.3.9 Vertebra (Plana)

Surgiu necessidade, a certo ponto, de pensar em propagação de movimento ao longo de vértebrasadjacentes na coluna vertebral. Acontece que as sequências de animação consideram geralmente entre1 a 4 juntas para simular o movimento da coluna. Nós temos 24 juntas a simular as vértebras, e amaioria delas não recebe informação directamente da sequência de animação. O problema foi fácil decompreender. Uma marca utilizada em captura de movimento, por exemplo, colocada em alguma zonada coluna vertebral, acabará por reter informação de movimento não apenas da vértebra exacta ondeestá colocada, mas sim, de várias vértebras, mais especificamente, de todas as que se encontram entre sie a próxima marca. Diversos autores abordaram já este problema, centrando-se, no entanto, numa formade animar procedimentalmente a coluna vertebral [61] ou utilizando uma Spline para movimentar todasas vértebras utilizando cinemática inversa [80]. No entanto, seguimos o método proposto em [89], quereferimos já na secção 3.2.11. Eles propõem uma forma simples de ligar conjuntos de juntas para quese movimentem de forma acoplada. A ideia é que dado um parâmetro de entrada (correspondente a umgrau de liberdade) se animem vários graus de liberdade, de juntas diferentes, em simultâneo. No fundo,estabelece-se uma relação de um-para-muitos, como é representado na Figura 4.16.

Podemos observar como um conjunto limitado de parâmetros de entrada (GC1,GC2,GC3 ) dá origema diversas rotações que correspondem aos diversos graus de liberdade de cada junta. Os nós M são osnós um-para-muitos que referimos anteriormente, sendo os nós R correspondentes à rotação de cada graude liberdade de cada junta, e os nós * (asterisco) são a aglomeração dos graus de liberdade de uma juntade forma a produzir a sua matriz final.

A solução de [89] resolve ainda o facto de não sabermos a priori quais são as juntas que vão receberanimação directa. O que eles propõem é que em vez de animar directamente vértebras, se anime cadauma das secções (cervical, torácica e lombar). Cada secção tem definido para cada um dos três graus deliberdade, qual o ângulo máximo e mínimo que pode tomar, sendo que dentro de cada uma delas, cadavértebra define ainda, dentro dessa secção, qual a sua própria amplitude para cada grau de liberdade.

Page 83: Tese 18,9 MB

4.6. MODELO DAS JUNTAS 61

Figura 4.16: Método de Shao e Hing para o acoplamento de graus de liberdade numa relação de um-para-muitos [89].

Assim, a coluna vertebral é tratada como se tivesse apenas três juntas. Quando uma vértebra recebeanimação directa, ela transmite essa animação à secção toda, de forma que todas sejam animadas emconjunto. O que acabamos por fazer é estar neste caso a criar uma relação de muitos-para-um, ou seja,várias vértebras animam uma secção. Depois, numa relação de um-para-muitos, cada secção distribui deforma correcta a animação para várias vértebras.

Com isto, a aplicação de restrições angulares pode ser realizada ao nível da secção. Caso algumasecção exceda a flexibilidade que permite, o excedente é propagado para a secção seguinte, ou ignorado,caso tenhamos chegado ao crânio. Foi então necessário resolver em especial dois pontos:

• É necessário que cada secção limite o seu movimento tendo em conta os seus limites como um todo,e propagando para a secção seguinte caso necessário;

• A rotação de uma junta vem na forma de matriz. É necessário decompô-la em graus de liberdade,para posteriormente fazer a correspondência de um-para-muitos;

• É necessário que a decomposição dos graus de liberdade permita que se faça uma divisão pesadada mesma, ou seja, distribuindo-a por cada vértebra em fracções correspondentes ao peso que essavértebra tem nesse grau de liberdade.

Começando pelo primeiro, cada vértebra apenas transmite a sua matriz de rotação à “meta-junta” da suasecção (uma junta que existe conceptualmente, representando o “um” nas relações de muitos-para-um e deum-para-muitos). O esqueleto terá de possuir uma meta-junta para cada uma das três secções, que, apesarde terem toda a funcionalidade de uma junta normal, não pertencem realmente ao esqueleto, servindoapenas como abstracção, para podermos tratar cada secção como uma junta. Esta meta-junta acumularáas matrizes de rotação de cada vértebra correspondente. É sobre esta matriz de rotação acumuladaque aplicamos restrições, sendo que a meta-junta é tratada como uma junta Plana, de forma a possuirtrês graus de liberdade de rotação. Já que estamos a trabalhar com um tipo de junta que efectua umadecomposição em componentes de swing-twist, decidimos reutilizar esses componentes, após a correcçãode movimento, como sendo os graus de liberdade a que a rotação corresponde. Esta representação éideal, pois corresponde aos movimentos anatómicos de cada vértebra, ou seja, o swing em X correspondeà flexão/extensão, swing em Z à rotação lateral, e a torção à rotação axial. Resolve ainda o problemade podermos fazer uma decomposição pesada de cada um deles, pois cada um é representado apenas porum número real, e não por exemplo, por uma matriz de rotação, cuja decomposição pesada seria maistrabalhosa.

Ainda, para podermos perceber se há rotação excedente que deve ser propagada para a próximasecção, guardamos a matriz cumulativa inicial (antes da aplicação de restrições), e no final calculamosa matriz de transformação entre essa e a corrigida. No caso de não ter havido rotação excedente, amatriz não sofreu alterações, pelo que a transformação corresponderá à matriz identidade. Dessa forma,podemos multiplicar o traço da matriz de transformação, e se o resultado for 1 (ou muito próximo), nãohouve rotação excedente. Caso contrário, a matriz de transformação corresponde à rotação excedente,sendo que esta é então transmitida directamente à secção seguinte, que a acumula juntamente com asmatrizes correspondentes a cada uma das suas vértebras.

Page 84: Tese 18,9 MB

62 CAPÍTULO 4. ARQUITECTURA

Finalmente, relativamente à distribuição de forma pesada dos graus de liberdade de cada secçãopor cada uma das vértebras, o processo é simples. Para cada uma das vértebras, o valor de cada graué multiplicado pelo peso correspondente, da Tabela 2.2 na Secção 2.1.4, sendo composta uma matrizde rotação que é aplicada directamente a cada vértebra. Isto significa que o comportamento de cadavértebra não incluirá qualquer tipo de cálculos, mas sim, apenas a transmissão da sua matriz de rotaçãoà meta-junta correspondente à sua secção. Assim, na realidade o tipo de junta Vértebra não se comportaindividualmente como uma junta Plana. Esse comportamento é, sim, utilizado pelas meta-juntas dassecções, pois são elas que possuem efectivamente a funcionalidade de juntas planas, e são a razão deapresentarmos a junta Vértebra como sendo uma junta Plana. A implementação da junta Vértebra passaa consistir apenas na rotina que recebe a matriz de rotação, e a transmite à meta-junta correspondente,identificada pela propriedade Seccao no Algoritmo 20.

Algorithm 20 Rotina Aplica da junta Vertebra.

Rotina Aplica(matrizInicial)Esqueleto.Seccao.RotacaoVertebra(matrizInicial)

No Algoritmo 21 descrevemos as rotinas que compõe a funcionalidade já explicada, das meta-juntas que estendem da junta Plana, e representam o conjunto de vértebras de cada secção. A variávelMatrizSeccao é mantida entre execuções consecutivas, de forma a acumular a rotação de cada vértebra,e a variável RotacaoPropagada é também mantida, onde é guardada a rotação propagada pela secçãoanterior, caso tenha existido.

Algorithm 21 Rotina RotacaoVertebra da meta-junta que representa uma secção de vértebras.

Rotina RotacaoVertebra(matrizVertebra)MatrizSeccao = MatrizSeccao * MatrizVertebramatrizInicial = matrizSeccao * RotacaoPropagadamatrizFinal = Aplica(matrizInicial)Para Cada Vertebra Pertencente à Secção:SwingTwistVertebra = DistribuicaoPesada(SwingTwistSeccao, PesosDaVertebra)Vertebra.MatrizRotacao = SwingTwistParaMatriz(SwingTwistVertebra)

rotacaoExcedente = matrizInicial * matrizFinal^(-1)Se rotacaoExcedente[0,0] * rotacaoExcedente[1,1] * rotacaoExcedente[2,2] > 0.001Esqueleto.ProximaSeccao.PropagaRotacao(rotacaoExcedente)

Foram aqui utilizadas algumas rotinas auxiliares que descrevemos nos Algoritmos 22, 23, 24 e 25,incluindo uma rotina que tem de ser executada a cada instante, antes de actualizar o esqueleto, deforma a repor algumas das variáveis. Terminamos com a rotina que nos dá a possibilidade de guardaros parâmetros swing-twist resultantes da aplicação de restrições. Não descrevemos as juntas extendidasVCervical, VToracica nem VLombar, pois elas herdam toda a funcionalidade da junta Vertebra, servindoaquelas três apenas para identificar a que secção pertencem.

Algorithm 22 Rotina auxiliar DistribuicaoPesada da meta-junta que representa uma secção de vértebras.

Rotina DistribuicaoPesada (swingTwist, pesos)swingX = swingTwist.SwingX * pesosXswingZ = swingTwist.SwingZ * pesosZtwist = swingTwist.Twist * pesosYDevolve (swingX, swingZ, twist)

Page 85: Tese 18,9 MB

4.7. MODELO DAS RESTRIÇÕES 63

Algorithm 23 Rotina auxiliar PropagaRotacao da meta-junta que representa uma secção de vértebras.

Rotina PropagaRotacao (rotacaoExcedente)RotacaoPropagada = rotacaoExcedente

Algorithm 24 Rotina auxiliar ReinicializaSeccao da meta-junta que representa uma secção de vértebras.

Rotina ReinicializaSeccaoRotacaoPropagada = MatrizIdentidadeMatrizSeccao = MatrizIdentidade

4.7 Modelo das Restrições

À medida que íamos criando os diversos tipos de juntas, tivemos de definir como elas eram utilizadasno esqueleto. Isso ficou definido pelo nosso modelo de restrições, onde definimos qual o tipo de restriçãoaplicado a cada junta, e quais as suas configurações. Para além das configurações óbvias (valores mínimose máximos de cada grau de liberdade), foi ainda necessário especificar se a junta deveria tomar comoreferencia zero a pose inicial do esqueleto, ou se deveria contabilizar as suas rotações face ao referencial dajunta pai. Apresentamos então a Tabela 4.1 que contém a configuração utilizada. Nesta tabela indicamosqual o tipo de restrição utilizado para simular cada junta, qual o seu referencial zero, quantos graus deliberdade possui, e quantas vezes é utilizada uma junta similar no esqueleto. Quando se representam váriasjuntas numa mesma entrada da tabela, utiliza-se o asterisco como curinga15, carácter de substituição nonome da junta. Caso haja casos específicos diferenciáveis e que sejam representados por essa curinga,esses casos são apresentados antes. Os valores utilizados para a definição dos limites máximos e mínimosdos diversos graus de liberdade são apresentados em Anexo, nas Tabelas C.2, C.3, C.4 e C.5.

15Em inglês wildcard.

Page 86: Tese 18,9 MB

64 CAPÍTULO 4. ARQUITECTURA

Algorithm 25 Rotina PosProcessaSwingTwist da meta-junta que representa uma secção de vértebras.

Rotina PosProcessaSwingTwist(swingTwist)SwingTwistSeccao = swingTwist

Junta Tipo Referencial DOFs Ocorrências DOFs Totaissacroiliac Estática PoseInicial 0 1 0*_hip Poliaxial PoseInicial 3 2 6*_knee Joelho Pai 2 2*_ankle Tornozelo PoseInicial 2 2 4*_subtalar,*_midtarsal,*_metatarsal

Uniaxial PoseInicial 1 6 6

vc* VCervical Pai 6 7 42vt* VToracica Pai 6 12 72vl* VLombar Pai 6 5 30Skullbase VCervical Pai 6 1 1*_sternoclavicular EsternoClavicular PoseInicial 2 2 2*_acromioclavicular Plana PoseInicial 6 2 12*_shoulder Ombro PoseInicial 3 2 6*_elbow Cotovelo Pai 1 2 2*_wrist Punho PoseInicial 3 2 6*_index0, *_mid-dle0,*_ring0, *_pinky0

Estática PoseInicial 0 8 0

*_thumb1, *_in-dex1,*_middle1,*_ring1,*_pinky1

Biaxial PoseInicial 2 10 20

*_thumb*, *_in-dex*,*_middle*,*_ring*,*_pinky*

Uniaxial PoseInicial 1 20 20

Total: 86 231

Tabela 4.1: Definição das restrições utilizadas no nosso esqueleto.

Page 87: Tese 18,9 MB

5Implementação

5.1 Introdução

Para implementar e testar a nossa solução, tivemos de analisar as nossas necessidades, para considerarum ambiente que pudéssemos utilizar. As principais necessidades que tínhamos eram: permitir escalonaro problema para situações de teste menos complexas; suportar dados para teste oriundos de diversasorigens e formatos; e em especial, precisámos de ferramentas visuais para depuração do resultado. Destaforma, decidimos desenvolver um protótipo especifico e dirigido àquilo que precisávamos.Este protótipo, ilustrado na Figura 5.1, foi escrito em C#, sendo a componente gráfica realizada utilizandoa biblioteca gratuita OpenTK1, que nos fornece acesso a OpenGL, e a uma biblioteca de matemática, emambiente .Net/C#.

Figura 5.1: Protótipo de teste da nossa solução.

O investimento de tempo que fizemos no desenvolvimento deste protótipo revelou-se extremamenteprodutivo, pois sendo um protótipo modular e bem estruturado, facilitou-nos o teste de hipóteses, e aimplementação de soluções. Em especial, devido à forte presença de componente visual no protótipo, foium grande auxílio à visualização e análise dos resultados produzidos.

5.2 Funcionalidades

Desde o início do trabalho, foram sendo implementadas diversas funcionalidades que se consideraramcontribuir para termos flexibilidade em testar alternativas. Algumas dessas funcionalidades consideraram-se, também, por permitirem levar o projecto mais longe ainda, no futuro. No entanto, nem todas as fun-cionalidades permitem holisticamente fazer tudo o que é aqui referido. De entre os diversos componentes

1http://www.opentk.com/

Page 88: Tese 18,9 MB

66 CAPÍTULO 5. IMPLEMENTAÇÃO

de uma determinada funcionalidade, por vezes completámos apenas os necessários ao nosso trabalho, dei-xando a referência da possibilidade de extensão futura. As funcionalidades mais importantes e relevantesdo protótipo são:

Criação de esqueleto a partir de uma estrutura hierárquica definida em ficheiro: Esta funci-onalidade foi tida como base, para que não restringíssemos o nosso trabalho a uma única estruturade esqueleto. Assim, pudemos ir testando as funcionalidades com os diversos níveis de articula-ção da norma H-Anim, deixando ainda a possibilidade de utilizar outras estruturas completamentediferentes, e até não antropomórficas. A estrutura do ficheiro é apresentada em Anexo;

Importação de uma pose inicial para o esqueleto definida em ficheiro: A norma H-Anim de-fine em separado a estrutura do esqueleto e a pose inicial, por isso seguimos essa ideia, de forma adeixar em aberto a utilização de poses iniciais alternativas, ou a actualização para futuras versõesda norma H-Anim. A estrutura do ficheiro é apresentada em Anexo;

Importação de ficheiros de animação em formato BVH: Como já referimos, BVH foi o nosso for-mato de escolha para sequências de animação. Podemos importar diversas animações que depoispodem ser acedidas através de uma lista, para serem reproduzidas no esqueleto. Para facilitar,suportamos um ficheiro de carregamento automático que é lido no início da execução do programa,e que automaticamente carrega todos os ficheiros de animação lá indicados;

Utilização de ficheiros de correspondência de marcas MNM: Os ficheiros MNM são utilizadosem conjunto com alguns formatos de ficheiros de animação, nomeadamente o BVH, para estabe-lecer a relação entre os nomes das juntas de dois modelos de esqueleto diferentes. O objectivo ésimplesmente mapear cada junta definida num ficheiro de animação para alguma junta do formatoque utilizamos na aplicação, e assim, permite que utilizemos ficheiros com origens diferentes, queutilizam nomes diferentes para as juntas, sem termos de proceder a conversão ou tratamento extra.A importância desta funcionalidade foi criar essa abstração, de forma que pudemos utilizar ficheirosBVH livremente sem nos preocuparmos se ele estaria estruturado no formato que nós utilizamos.A estrutura deste ficheiro é apresentada em Anexo;

Controlo de reprodução de animações (Play, Pause, Rewind, Trackbar): Esta funcionalidadeé obrigatória se quisermos testar as animações sobre a nossa solução, com alguma flexibilidade.Não incluímos apenas as funções de iniciar, pausar ou terminar a reprodução, mas também a possi-bilidade de saltar directamente para algum ponto da sequência apenas com um clique, algo que severificou extremamente útil nos momentos em que um movimento específico resultava em problema,e assim pudemos analisá-lo repetidamente, ou pausar, e navegar manualmente para a frente a paratrás;

Navegação Arcball: Como o protótipo se baseia em visualização 3D para analisar a nossa solução,precisámos de implementar um sistema de navegação 3D apropriado, por isso escolhemos o sistemaArcball[121], que nos permite navegar utilizando um rato de 3 botões, para panning, zoom e rotaçãoda câmara;

Informações individuais de cada junta em tempo real: Ao longo do desenvolvimento das restri-ções para cada junta, tivemos necessidade de as inspeccionar individualmente, pelo que esta funcio-nalidade foi também indispensável, até para perceber em que referencial cada junta estava a actuar,e em especial, devido ao ponto seguinte;

Inserção directa de valores de rotação em juntas para testar resultados: Além de precisarmosde inspeccionar cada junta ao longo das animações, tornou-se extremamente importante podertestar valores directamente nas juntas, para observar o seu comportamento. Esta funcionalidadefoi essencial para perceber por exemplo, para que lado se orientavam ângulos positivos e negativos,e em que direcção estava a ser alinhado cada um dos eixos de rotação, para além de verificardirectamente pontos críticos, ou comportamentos em ângulos específicos;

Configurações dos tipos e valores das restrições em tempo real: Após recolhermos os dadosanatómicos correspondentes aos limites de rotação das diversas articulações, o trabalho de os ma-pear às juntas facilitou-se bastante com a possibilidade de os introduzir em tempo real, para verificarque as juntas e os seus limites estavam correctamente orientados, e que o resultado individual emcada um delas era o esperado;

Representação visual dos limites das restrições: Num trabalho destes, torna-se essencial poder ter

Page 89: Tese 18,9 MB

5.3. UTILIZAÇÃO 67

uma representação visual dos valores que estávamos a utilizar como limite em cada grau de liberdade,associado ao valor que lhe era aplicado a cada momento. No caso das juntas Uniaxial, utilizámosduas linhas que marcam o limite máximo (a branco) e mínimo (a preto) da rotação. Para asPoliaxial; replicámos visualmente o conceito que implementámos, de forma que é desenhada sobrea junta uma elipse que representa os limites de swing, sobre a qual é desenhada uma linha brancaque mostra o swing a cada instante; para ilustrar o twist, a elipse é desenhada a verde no intervalode amplitude válido, e a vermelho no intervalo inválido, sendo desenhada outra linha, a preto, quemostra o twist a cada momento. Esta representação está ilustrada na Figura 5.2.

Figura 5.2: Representação visual das restrições.

Possibilidade de visualizar em simultâneo a animação original: Como as restrições modificam aanimação, importante podermos ver ao mesmo tempo, a animação original, de forma a vermos oefeito que a restrição está a produzir, para avaliar o que está a acontecer mal, e tentarmos corrigir;

Diversos modos de visualização do esqueleto (juntas, segmentos, ossos, eixos): Esta funcio-nalidade é comum neste tipo de aplicações, e ajuda essencialmente a seleccionar a informaçãoque queremos visualizar;

Seguimento de uma determinada junta ao longo do movimento: Quando as animações deslo-cam o esqueleto pelo mundo virtual (por exemplo, ao andar ou correr), esta funcionalidade torna-seútil, pois permite fixar a câmara numa junta, de forma que a siga, mantendo-a centrada no ecrã,para que possamos observar melhor o seu comportamento. Ao mesmo tempo, podemos fazer uso dozoom e da rotação do controlo Arcball enunciado na alínea 6) para podermos aproximar e orbitarem volta dessa junta;

Importação de objectos em formato OBJ (Anexo): Esta funcionalidade acabou por não ter uti-lização prática neste trabalho, porém, foi inicialmente desenvolvida para suportar a importaçãode modelos de ossos para o esqueleto. Referimo-la aqui pois foi uma funcionalidade que ficoucompletamente funcional, e que poderá vir a ser útil num possível desenvolvimento futuro;

5.3 Utilização

O protótipo foi construído de forma a oferecer uma forma de utilização o mais directamente possíveldirigida às necessidades do nosso desenvolvimento. Assim, os passos básicos que um utilizador segue são:

1. Abrir um ficheiro de estrutura de esqueleto, ou aceder aos atalhos que permitem criar directamenteesqueletos da norma H-Anim, com nível de articulação 1, 2 e 3;

2. Introduzir as configurações do esqueleto na janela respectiva, ou utilizar as configurações por defeito(optimizadas para os nossos testes);

3. Caso se queira utilizar uma animação que não é automaticamente carregada pelo programa, bastaseleccionar o respectivo ficheiro;

4. Seleccionar uma animação a partir dar animações que estão carregadas;

Page 90: Tese 18,9 MB

68 CAPÍTULO 5. IMPLEMENTAÇÃO

5. Utilizar as ferramentas de navegação, diagnóstico e controlo de animação, para analisar a simulação.

Não é obrigatorio seguir esta sequência de trabalho. Durante a utilização do protótipo e simulação deuma animação, o utilizador pode fazer uso das diversas funcionalidades referidas no ponto 5.2.

5.4 Estrutura

O protótipo está estruturado em módulos responsáveis por gerir determinadas funcionalidades, aosquais designamos por Managers. Uma visão holística da estrutura do protótipo é apresentada na Figura5.3. Apresentamos abaixo uma breve descrição de cada uma dos objectos representados.

Vhoid A classe Vhoid é a classe principal e central da aplicação, que contém a interface e estabelece aligação entre a mesma e os restantes módulos.

OpenTK O pacote OpenTK foi já descrito no ponto 5.1, sendo a biblioteca gráfica que utilizámos nestaaplicação.

SingletonManager Esta classe abstracta é a super classe de todos os gestores, implementando nãoapenas o Singleton, como também algumas funcionalidades comuns, como depuração.

ObjectManager Este gestor é descrito mais adiante no ponto 5.4.1.RenderManager Este gestor é responsável pela visualização da cena, gerindo assim a apresentação dos

modelos, actualização do ecrã e transformação da câmara.InteractionManager O gestor de interacção é responsável por receber e tratar os eventos relacionados

com o rato e o teclado, reencaminhando-os para o módulo central (Vhoid), ou até para o módulo devisualização (RenderManager). Este é também o módulo responsável pela interacção ArcBall, quefaz uso do rato para navegar na cena em 3D.

SkeletonManager Este gestor é descrito mais adiante no ponto 5.4.2.AnimationManager Como o nome indica, é o gestor responsável pela animação do esqueleto na apli-

cação. Também será melhor descrito mais adiante, no ponto 5.4.3.HumanJointRangeOfMotion Esta classe contém os limites para todos os movimentos anatómicos que

considerámos. É utilizada pelo modelo de restrições para ir buscar os valores mínimos e máximospara a rotação e/ou translação de cada grau de liberdade de cada junta. Os valores foram mantidosnum módulo em separado para facilitar a sua independência do resto da solução.

Figura 5.3: Estrutura de classes do protótipo.

Page 91: Tese 18,9 MB

5.4. ESTRUTURA 69

5.4.1 Gestor de Objectos (ObjectManager)

O gestor de objectos é responsável por manter todos os modelos utilizados na cena. A sua estrutura éapresentada na Figura 5.4. Os objectos que ele gere são todos subclasses de Model, sendo que actualmenteexistem apenas três subclasses: Axis (representação visual de um eixo referencial), Plane (um plano, queé utilizado para representar o plano do chão), e Skeleton (um esqueleto). O principal objecto que a nossaaplicação utiliza é o esqueleto, que, no entanto, é gerido pelo seu gestor específico (SkeletonManager). Anossa aplicação suporta a simulação independente de vários esqueletos em simultâneo, daí que o esqueletoseja, a um certo nível de abstracção, tratado apenas como mais um modelo. O gestor de objectosencarrega-se ainda de dizer ao gestor de visualização (RenderManager) quais os modelos a desenhar.

Figura 5.4: Estrutura da classe ObjectManager.

5.4.2 Gestor de Esqueletos (SkeletonManager)

Como foi já indicado atrás, este gestor é responsável por toda a funcionalidade dos esqueletos. Asua estrutura é apresentada na Figura 5.5.

Figura 5.5: Estrutura da classe SkeletonManager.

Este gestor implementa muita da funcionalidade que está mais directamente ligada à elaboraçãoda nossa solução. O gestor em si possui dois módulos independentes, e que permitem modificar fácil edirectamente dados associados com a nossa solução. Esses módulos são:

• Uma implementação da super classe Convention, que especifica uma norma a utilizar com o esque-leto, nomeadamente os nomes das juntas a utilizar, e os identificadores únicos para cada uma dasjuntas, entre outros. No nosso caso temos apenas a implementação da norma H-anim, na classeHanimConvention;

• Um modelo de definição das restrições, definido na classe JointConstraintDefinition. Nesta classedefine-se qual o tipo de cada junta, e os seus respectivos parâmetros.

Page 92: Tese 18,9 MB

70 CAPÍTULO 5. IMPLEMENTAÇÃO

Ambos estes objectos encontram-se directamente codificados em código, no entanto, estão estruturados deforma que os seus dados possam vir a ser carregados a partir de um ficheiro, de modo a tornar a soluçãoextensível a outras situações. Além destes objectos que especificam a forma como a nossa solução érealizada, o gestor de esqueletos possui, obviamente, a classe Skeleton, que além das informações relativasao esqueleto em si, possui ainda uma junta definida como raiz da árvore. Cada junta então é definida porum conjunto de dados intrínsecos a si própria, de uma restrição, correspondente a uma das ilustradas naFigura 4.5 da secção 4.6.1, e de uma lista que contém os nós filhos na árvore que representa a estruturado esqueleto.

5.4.3 Gestor de Animação (AnimationManager)

Para gerir a forma como as animações são visualizadas no esqueleto, permitindo controlo sobre ofluxo dessas animações, foi criado o gestor de animações, cuja estrutura se apresenta na Figura 5.6.

Figura 5.6: Estrutura da classe AnimationManager.

Este gestor é responsável por carregar animações em diferentes formatos, através de implementa-ções da super classe AnimationLoader. No nosso caso, implementámos apenas a classe BVHLoader, quepermite carregar animações em formato BVH. As animações carregadas são guardadas num objectodo tipo AnimationSequence, que contém todos os dados relativos à animação. A classe BVHSequenceé uma versão específica da classe AnimationSequence, que contém, além dos dados de animação neces-sários à simulação no esqueleto, algumas informações extra, relativas ao seu formato de origem, BVH.O AnimationManager é assim também responsável por guardar as animações que estão carregadas. Noentanto, a dado momento, poderemos ter algumas das animações a serem reproduzidas em um ou maisesqueletos, pelo que este gestor guarda também as diversas instâncias de AnimationController que existam.Esta classe AnimationController mantém e controla a reprodução de uma determinada animação sobre umdeterminado esqueleto. Assim, as instâncias desta classe são criadas quando se inicia uma reprodução, edestruídas quando a reprodução é terminada. É esta classe que sabe em que ponto da sequência está aanimação, e que permite aceder de forma não linear a essa sequência, navegando até pontos específicos, eaté modificar a sua velocidade de execução. Durante a reprodução de uma animação sobre um esqueleto,é o gestor de animação que controla a actualização do esqueleto com os dados de animação, invocando ocontrolador de animação para aceder a esses dados. O processo de actualização é temporizado para serexecutado um determinado número de vezes por segundo, conforme definido pela própria sequência deanimação.

Page 93: Tese 18,9 MB

6Avaliação dos Resultados

A avaliação de um projecto deste género requer geralmente duas componentes: uma avaliação qua-litativa, e uma avaliação quantitativa. Para avaliar a nossa solução, há um conjunto de requisitos queconsiderámos, e que vamos tentar validar:

1. O movimento final produzido pelo esqueleto deverá ser suave, e perceptualmente correcto;2. O movimento produzido pelo esqueleto é anatomicamente correcto, no sentido em que as juntas

movimentam-se umas em relação às outras de forma mais realista possível;3. A solução é eficiente o suficiente parar ser utilizada em aplicações interactivas, de preferência pos-

sibilitando a simulação de diversos esqueletos em simultâneo.

O primeiro ponto requer em primeiro lugar, uma avaliação preliminar pela própria equipa de desenvolvi-mento, que estudou o assunto e que assim adquire competência para observar determinados aspectos quepoderão necessitar de correcção, antes de se proceder a uma avaliação mais alargada, com utilizadoresde teste que observem as animações produzidas pelo esqueleto, para as avaliarem por observação. Osegundo ponto pode ser avaliado por peritos em artrocinemática e cinesiologia, ou por comparação comoutras aplicações e instrumentos de simulação aceites pelos peritos e pelo mercado, devido à sua robusteze precisão anatómica. Finalmente, o terceiro teste é realizado pela execução exaustiva de simulações, comregisto do desempenho.

6.1 Avaliação Perceptual

Neste primeiro ponto de avaliação, a equipa de desenvolvimento observa o resultado da simulação,comparando-o com o resultado esperado, de forma a deliberar se a solução já está sólida o suficiente paraavaliar com utilizadores, ou se ainda precisa de refinamento. Por observação directa, compreendemos quehá diversos pontos que precisam de se corrigidos, antes de avançarmos com a avaliação por utilizadores.A razão para isso é que a simulação de um humanóide tem um grande problema intrínseco, no que tocaà sua avaliação perceptual: o ser humano reconhece bem o movimento de outro ser humano, o que fazcom que reconheça facilmente movimento que não corresponde ao de um ser humano [23]. Assim, bastaque a solução contenha algumas falhas para que os utilizadores percebam imediatamente que a animaçãofoi adulterada, e que contém erros, e que portanto a rejeitem como sendo uma animação correspondenteao ser humano real. No nosso caso, através da cuidadosa observação de animações geradas pelo sistema,identificamos um conjunto de problemas a serem posteriormente corrigidos:

1. Os pés deslizam no chão. Devido A pequenas correcções de orientação sobre as pernas, temos umfenómeno designado por footskate, ou seja, patinagem de pés. Isto acontece porque se alteramoso movimento das pernas, mas mantemos a translação do esqueleto, essa translação deixará decorresponder ao movimento das pernas. A forma mais comum de corrigir isto é utilizando umacamada de Cinemática Inversa, como a proposta por [71], que em certas situações, poderá tambémser utilizada na mesma situação, mas para as mãos, ou seja, para uma animação em que o actorestava agarrado a um objecto fixo, mas ao corrigir o movimento, a mão deixa de estar em contactocom esse objecto. O objectivo é que esta camada mantenha, a cada momento, as mãos ou os pésem contacto com o ponto onde se encontravam na animação original;

Page 94: Tese 18,9 MB

72 CAPÍTULO 6. AVALIAÇÃO DOS RESULTADOS

2. O cotovelo desorienta-se constantemente. Na realidade, o problema vem do complexo do ombro,pois é ele o responsável pela orientação do cotovelo. Visualmente, assistirmos a que o cotoveloconstantemente fique apontado numa direcção que não corresponde à direcção a que deveria estarapontado. A primeira razão para isso é o facto de o nosso método de adaptação de esqueletos, de[84], não ter em conta a torção dos segmentos, como eles próprios indicam. Assim, é necessárioestudar a forma de orientar o cotovelo correctamente ainda no complexo do ombro;

3. Há interpenetração do cotovelo. Este é um problema que já era bastante esperado num trabalhodeste âmbito. Apesar de a interpenetração não ser demasiado visível no nosso caso, onde utilizamosum esqueleto desenhado apenas por segmentos de recta, na realidade, se estivéssemos a simularum corpo humano mais completo, essa interpenetração seria bastante mais proeminente. Umaproposta recente para resolver este problema é o de [81], que utiliza esferas de colisão. O troncoé tratado como uma esfera, e cada cotovelo é depois tratado como outra esfera mais pequena. Acada momento verifica-se a distância entre ambas as esferas do cotovelo e do tronco, para verificarse alguma está a colidir; caso esteja, esse ponto do cotovelo é colocado no ponto da colisão;

4. Há movimentos abruptos. Com isto o que queremos dizer é que, por vezes, um segmento mudaabruptamente de orientação. Após analisarmos a situação, percebemos que o que isto acontecepor vezes quando o segmento está a ser orientado de uma forma que o obriga a corrigir-se. Setivermos uma junta, em que um dos graus de liberdade está limitado à rotação entre −90 deg e90 deg, por exemplo, e tentarmos aplicar uma rotação de 170 deg, a orientação manter-se-á nos90 deg. No entanto, se continuarmos a rodar até chegarmos aos 180 deg, e daí, seguirmos comângulos negativos, por exemplo, para os 190 deg, o ângulo da junta mudará abruptamente para os−90 deg. Isto porque na realidade, 190 deg corresponde a −170 deg, pelo que a orientação passapara o limite angular inferior.

Alguns destes problemas podem problemas podem ser observados na Figura 6.1, onde ilustramos cincomomentos diferentes da principal animação utilizada para testar o nosso modelo. Esta animação foi sin-tetizada usando o software de animação MotionBuilder, de forma que o esqueleto da animação contivesseem si as 231 juntas tal como nos propusemos implementar. Esta animação foi criada de forma a aparentarter sido gravada por um ser humano, e contendo algumas poses extremas, como apanhar um objecto dochão e dar um salto com cambalhota no ar para trás, que ajudam a testar melhor a validade das restrições.O final da animação é ainda um segmento em que o esqueleto é tratado como um boneco-de-trapos sobefeito de física, simulando que cai inanimado por força da gravidade. Esta animação permitiu-nos assimobservar a utilização do esqueleto em diversos tipos de cenários. Tendo em conta os aspectos enunciados,

Figura 6.1: Alguns momentos da principal animação utilizada para testar e validar a nossa solução

a simulação gerada pelo sistema não será perceptualmente correcta, sendo redundante a avaliação comutilizadores não-peritos neste estado do projecto, pois sabemos, a priori, que o resultado dessa avaliaçãoseria negativo. Executá-la seria assim um gasto desnecessário de recursos e de tempo.

Page 95: Tese 18,9 MB

6.2. AVALIAÇÃO ANATÓMICA 73

6.2 Avaliação Anatómica

Os problemas referidos na secção anterior são bastante relevantes também para a avaliação anatómicada solução. Em especial, sabemos de técnicas que melhor validariam a perfeição anatómica da solução, eque não considerámos. Uma dessas técnicas seria a utilização de juntas Spline, propostas por [92]. Estetipo de juntas é actualmente a solução mais correcta para simular a rotação de um osso sobre o outro,visto que na realidade, os ossos não rodam em torno de um eixo, mas sim, em torno das suas superfícies,de forma que as mesmas se mantenham em contacto. Embora não seja um factor importante para apercepção de um movimento correcto, esta técnica seria preciosa para garantir a perfeição anatómica dejuntas como a que simula a articulação do joelho.

Em relação a comparar a manutenção dos limites de rotação anatómicos, do software que testámos,apenas o MotionBuilder, da Autodesk incorpora algum tipo de limites no esqueleto, no entanto, as únicasjuntas que possuem limites são as Uniaxial, como o cotovelo, o joelho, ou os dedos, o que não nos forneceum caso adequado para comparação, visto que estas são as juntas em que mais facilmente validamosos limites. A coluna vertebral segue a nossa ideia, no sentido em que as vértebras de cada uma dastrês secções são movimentadas em simultâneo, no entanto, as secções não possuem limites, permitindocurvaturas exageradas e incorrectas. Dessa forma, a validação dos nossos limites contra outras soluçõestornou-se inviável. No entanto, visto que, para as juntas Poliaxial, nos baseamos na proposta de [86], eque a mesma constitui um método analítico, sabemos que o resultado da técnica produz um resultadomatematicamente correcto, e que, portanto, os limites são respeitados. Para o complexo do ombro,sabemos que não temos uma solução anatomicamente perfeita, pois baseámo-nos na abordagem de [29],que utiliza apenas duas juntas para o ritmo umero-escapular, quando o mais correcto seria utilizar três.Para melhorar a perfeição anatómica desta zona, outra hipótese seria seguir a proposta de [89], que utilizaum único grau de liberdade para controlar em simultâneo as três juntas do complexo do ombro.

Outro aspecto que não considerámos, e que contribuiria para a perfeição anatómica da nossa pro-posta, é o facto de que certas juntas Biaxial suportam alguma rotação sobre o seu próprio eixo, fazendocom que tenham um terceiro grau de liberdade. Um exemplo disso são as articulações metacarpo-falangeais, que ligam os dedos às mãos. Estas articulações são anatomicamente consideradas como sendoarticulações em sela, que portanto, permitem movimento em dois eixos, pois voluntariamente, apenasconseguimos movimentá-las em dois eixos. No entanto, se tentarmos forçar o dedo a rodar sobre si,vemos que existe alguma flexibilidade sobre o terceiro eixo, sendo que este tipo de articulação possui aíalguma liberdade.

6.3 Avaliação de Desempenho

O desempenho da nossa solução foi o aspecto que mais pudemos avaliar. Para isso testámos quatrocasos diferentes com a mesma animação da Figura 6.1:

(a) Com restrições e visualização do esqueleto;(b) Com restrições, sem visualização do esqueleto;(c) Sem restrições, com visualização do esqueleto;(d) Sem restrições, sem visualização do esqueleto.

Para cada um destes quatro casos, testámos com apenas um esqueleto, e com 16 esqueletos. Finalmente,testámos ainda a simulação com 100 esqueletos, mas apenas para os casos a) e b). É importante notarque o ciclo de desenho não é completamente independente da utilização de restrições. No ciclo de desenhosem restrições, as transformações executadas em cada junta são um glTranslate, e três glRotate. O ciclode desenho com restrições apenas executa um glMultMatrix para cada junta, pois aplica directamente amatriz de transformação que terá sido calculada na fase de actualização das juntas. [103] explica no seuapêndice G que utilizar glTranslate e glRotate é mais eficiente do que compor as nossas próprias matrizes,para utilizar com glMultMatrix, pelo que esse factor será poderá ser notório na avaliação de performance.

Page 96: Tese 18,9 MB

74 CAPÍTULO 6. AVALIAÇÃO DOS RESULTADOS

As seguintes métricas foram consideradas:

• O tempo médio demorado para efectuar a actualização de cada esqueleto;• A velocidade a que o protótipo foi capaz de efectivamente reproduzir a animação.

A medida de tempo é aqui apresentada apenas para o caso de um esqueleto, visto que seria redundanteapresentá-la para as simulações com múltiplos esqueletos. Sabendo que o protótipo não está optimizado,o objectivo da avaliação de desempenho foi de comparar o impacto que o nosso processo de cálculo derestrições tem, face à situação em que não se calculam restrições nenhumas. Verificámos também oimpacto do ciclo de desenho do esqueleto, pois também ele não está optimizado, de forma que possamosmelhor distinguir o impacto da nossa solução. A animação testada possui 481 quadros, executados a 30FPS1. Na Figura 6.2, do lado esquerdo, podemos observar o tempo em milissegundos (ms), dispendidoem cada quadro, para as quatro situações acima referidas, com apenas um esqueleto. Podemos perceberque o ciclo de desenho tem actualmente, em termos de computação, quase tanto impacto com o dacomputação das restrições. Considerando os casos sem ciclo de desenho, a média foi de 3.1 ms semcalcular restrições, e 3.25ms com desenho. A diferença é quase inexistente, sendo que se pode observar,na figura, que o gráfico laranja (com restrições) sobe mais frequentemente aos 4 ms do que o gráficoazul (sem restrições), mantendo-se, no entanto, sempre muito próximos. Nos casos com ciclo de desenho,observamos o mesmo fenómeno. Aqui, a média sem restrições é de 7 ms, enquanto a média com restriçõesé de 7.5 ms. Na figura, o gráfico verde (com restrições) está bastante presente nos 8 ms, enquanto overmelho (sem restrições) possui apenas alguns pontos neste valor.

Figura 6.2: Performance da simulação com 16 esqueletos: tempo por quadro em milissegundos (à es-querda); contagem de quadros-por-segundo (fps) (à direita).

A figura do lado direito mostra, como se esperaria, que a velocidade de execução se mantém para todosos casos. Apesar de a animação estar definida para uma frequência de 30 FPS, ela está a ser executada auma velocidade inferior, revelando uma implementação imprecisa do ciclo principal da aplicação. Quandoobservamos a velocidade de execução numa simulação com 100 esqueletos, cujos gráficos são apresentadosna Figura 6.3, voltamos a encontrar a diferença entre executar ou não o ciclo de desenho. No entanto,podemos ver que as velocidades sem desenho, com e sem restrições estão bastante sobrepostas, tornando-se quase indistinguíveis. A análise individual dos gráficos, na Figura 6.4, indica uma média de 14.24 FPSpara o caso com restrições (à esquerda), e 14.22 FPS para o caso sem restrições (à direita), mantendo-seuma diferença quase imperceptível entre os dois. O caso em que se executa o ciclo de desenho apresentaagora uma maior diferença entre calcular ou não restrições, com uma média de 7.1 FPS para o primeirocaso, e 7.7 FPS para o segundo. Tal facto está relacionado com a diferença de implementação do ciclode desenho para os dois casos, como foi introduzido anteriormente. Assim, à luz dos resultados dedesempenho, determinámos que o sistema é viável de ser utilizado em ambientes com multi-esqueletos eaplicações interactivas, dado ainda que é possível configurar o nível das restrições aplicadas.

1Número de quadros computados por segundo, do inglês Frames-Per-Second.

Page 97: Tese 18,9 MB

6.3. AVALIAÇÃO DE DESEMPENHO 75

Figura 6.3: Contagem de quadros-por-segundo (fps) numa simulação com 100 esqueletos.

Figura 6.4: Análise mais detalhada de performance sem desenho, na simulação com 16 esqueletos comrestrições (à esquerda) e sem restrições (à direita).

Page 98: Tese 18,9 MB

76 CAPÍTULO 6. AVALIAÇÃO DOS RESULTADOS

Page 99: Tese 18,9 MB

7Conclusão e TrabalhoFuturo

Para futuros trabalhos que incidam sobre esta temática, salientamos a importância de começar poridentificar correctamente o enquadramento a ser estudado, como fizemos na secção 3.2 e seguintes, paramelhor compreendermos quais são os trabalhos relacionados que podemos utilizar como apoio. O estudodesta ontologia revelou-se valioso no processo de compreender e definir o caminho a seguir para resolvero nosso problema. Este estudo revelou-nos também como esta é uma área já bastante estudada. Apesardisso, há lugar suficiente para diversos tipos de estudos diferentes, o que revela também como é uma áreaampla, deixando ainda espaço aberto para o nosso estudo.

Um dos maiores desafios que enfrentámos foi o de combinar técnicas diferentes, propostas por autoresdiferentes, sobre referenciais e parametrizações diferentes. Foi necessário encontrar uma base comum paratodas estas técnicas, de forma que pudéssemos proceder a conversões de parâmetros de forma transparentee eficiente. Essa base comum foi em grande parte construída com fundamentos de álgebra e matemática, eauxiliada por uma flexível formulação de engenharia informática capaz de suportar as estruturas e relaçõesde que necessitámos. Para um trabalho deste género, tornou-se extremamente útil termos desenvolvido anossa própria ferramenta de teste e de configuração do esqueleto, de forma a validarmos interactivamentea combinação das técnicas e métodos matemáticos utilizados, e podermos perceber mais facilmente quaisas implicações que cada técnica tinha, em especial em termos de referencial.

Um aspecto que seria importante implementar num sistema de simulação do esqueleto humano, seriacinemática inversa, que poderia até ser utilizada na resolução de alguns dos problemas enunciados nasecção anterior. Como propusemos um modelo computacionalmente leve, sobra espaço para criar umanova camada de computação por cima, que utilizaria cinemática inversa para tentar recolocar o esqueletoo mais próximo possível da pose original, mas mantendo uma pose anatomicamente correcta.

É também importante desenvolver um bom modelo de avaliação para uma solução deste género.Torna-se difícil perceber quando é que o movimento está correcto ou errado. Por vezes, visualmenteaparenta estar correcto quando não está, e vice-versa. Se pudéssemos verificar matematicamente comtoda a certeza que o modelo está errado, então também poderíamos corrigi-lo matematicamente. Noentanto, não é fácil estabelecer medidas para assegurar uma avaliação correcta das soluções para esteproblema, e cremos que resolver isso seria um grande benefício para trabalhos futuros. Um caso deavaliação multimodal que analisámos foi o de [87], que comparou a sua solução com uma aplicação desimulação biomédica, com um modelo anatómico à escala em plástico, e ainda através da assistência auma cirurgia, na qual recolheu imagens reais de componentes do esqueleto biológico.

O nosso protótipo deixa uma vasta possibilidade de extensão. O facto de termos implementadoum grande leque de funcionalidades, de forma modular e estruturada, permite que essas funcionalidadessejam utilizadas para outros fins do que aqueles deste trabalho. Uma dessas possibilidades é a simulaçãode esqueletos com estrutura diferente da norma H-Anim, e até estruturas não antropomórficas, de outrosanimais além do humano. O protótipo foi construído de modo a fazer uso de um conjunto bem definido deinformação para gerar e simular o esqueleto. Essa informação está dividida em quatro módulos diferentes,que podem ser facilmente trocados de forma independente, exponenciando assim as possibilidades da suaextensibilidade. Esses módulos são:

• Estrutura hierárquica do esqueleto (norma)• Pose inicial do esqueleto• Tipo e configuração das restrições a utilizar

Page 100: Tese 18,9 MB

78 CAPÍTULO 7. CONCLUSÃO E TRABALHO FUTURO

• Valores limite para os diversos movimentos anatómicos

Outra possibilidade que poderia ser explorada em extensão ao nosso trabalho, e mais uma vez,reutilizando e expandindo o protótipo, seria a animação de uma figura humana a partir do nosso esqueleto,deformando a figura para seguir correctamente o movimento do esqueleto. Assim, finalizamos com osentimento de que, embora muito tenha sido feito, mais ainda existe que se pode fazer. Não concluímoso trabalho com um produto perfeito e acabado, porém, o estudo que elaborámos e que documentámos, émerecedor de ser entregue à comunidade científica, para que outros possam dar mais alguns passos sobreeste desafio.

Continuamos a avançar em frente, abrindo novas portas e fazendo coisas novas, porque somoscuriosos, e a curiosidade leva-nos através de novos caminhos.

– Walt Disney

Page 101: Tese 18,9 MB

Referências[1] Aristóteles: (De motu animalium) 350 A.C.[2] Seeley, R.R., D.Stephens, T., Tate, P.: Anatomia e Fisiologia. 6a edn. Lusociência (2007) ISBN

972-8930-07-0.[3] di Borelli, G.A.: De motu animalium. (1680) Roma: A. Bernabo.[4] da Vinci, L.: A Treatise On Painting. George Bell & Sons, York Street, Covent Garden, London,

England (1651)[5] Ikemoto, L., Forsyth, D.A.: Enriching a motion collection by transplanting limbs. In: Proceedings

of the 2004 ACM SIGGRAPH/Eurographics symposium on Computer animation. SCA ’04,Aire-la-Ville, Switzerland, Switzerland, Eurographics Association (2004) 99–108

[6] Majkowska, A., Zordan, V.B., Faloutsos, P.: Automatic splicing for hand and body animationsabstract (2006)

[7] ÉridaM. D. Leite: Dicion’ario Digital de Termos Médicos. Hospital Universitário Onofre Lopes,Universidade Federal do Rio Grande do Norte, Natal, Brasil. (2007)

[8] Maciel, A.: Modelagem de articulações para humanos virtuais baseada em anatomia. (2001)[9] Lippert, L.S.: Clinical Kinesiology and Anatomy 4th Edition. Philadelphia: F. A. Davis Company

(2006) ISBN 0-8036-1243-5.[10] Kapandji, I.A.: The physiology of the joints. Volume 3. The trunk and the vertebral column. Second

edition. Edinburgh: Churchill Livingstone. (1974)[11] Gingins, P., Kalra, P., Beylot, P., Thalmann, N.M.: Using vhd to build a comprehensive human

model. (1996)[12] Dogdas, B., Stout, D., Chatziioannou, A.F., Leahy, R.M.: Digimouse: a 3d whole body mouse atlas

from ct and cryosection data. (2007)[13] Chao, E.Y.: Graphic-based musculoskeletal model for biomechanical analyses and animation. (2002)[14] Delp, S.L., Anderson, F.C., Arnold, A.S., Loan, P., Habib, A., John, C.T., Guendelman, E., Thelen,

D.G.: Opensim: Open-source software to create and analyze dynamic simulations of movement.IEEE Transactions on Biomedical Engineering. (2007)

[15] Thelen, D.G., Anderson, F.C.: Using computed muscle control to generate forward dynamic simu-lations of human walking from experimental data. J Biomech 39: 1107-15. (2006)

[16] Thelen, D.G., Anderson, F.C., Delp, S.L.: Generating dynamic simulations of movement usingcomputed muscle control. J Biomech 36: 321-328. (2003)

[17] Mulley, G., Bittatelli, M.: Ragdoll physics. (2007)[18] Glimberg, S., Engel, M.: Comparison of ragdoll methods - physics-based animation. (2007)[19] Baltman, R., Radeztsky, R.: Verlet integration and constraints in a six degree of freedom rigid

body physics simulation. (2004)[20] NaturalMotion: endorphine 2.6 specifications sheet. (2006)[21] Güdükbay, U., Özgüç, B., Memişoglu, A., Şahin Yeşi, M.: Modeling, animation, and rendering of

human figures. Bilkent University, 06800, Bilkent, Ankara, Turkey (2008)

79

Page 102: Tese 18,9 MB

80 CAPÍTULO 7. CONCLUSÃO E TRABALHO FUTURO

[22] van Welbergen, H., B.J.H.vanBasten, Egges, A., Ruttkay, Z.M., M.H.Overmars: Real time anima-tion of virtual humans - a trade-off between naturalness and control. COMPUTER GRAPHICSforum (2010)

[23] Herda, L.: Using biomechanical constraints to improve video-based motion capture. (2003)[24] Watt, A., Watt, M.: Advanced Animation and Rendering Techniques. (2002)[25] Buss, S.: 3D Computer Graphics - A Mathmatical Introduction with OpenGL. (2003)[26] Belongie, S.: Rodrigues’ rotation formula. (MathWorld–A Wolfram Web Resource) http://

mathworld.wolfram.com/RodriguesRotationFormula.html.[27] Philips, C.B., Badler: Jack - a toolkit for manipulating articulated figures. (1988)[28] Badler, N.I.: Human factors simulation research. (1990)[29] Badler, N., Phillips, C., Webber, B.: Simulating Humans, Computer Graphics Animation and

Control. Oxford University Press (1993)[30] Azuola, F., Badler, N.I., hwa Ho, P., Kakadiaris, I., Metaxas, D., jay Ting, B.: Building

anthropometry-based virtual human models. In: In Proc. IMAGE VII Conf. (1994)[31] Granieri, J., Badler, N.I.: Simulating humans in vr. In: The British Computer Society, Academic

Press (1994)[32] Boulic, R., Huang, Z., Thalmann, N.M., Thalmann, D.: Goal oriented design and correction of

articulated figure motion with the track system. Journal of Computer and Graphics 18 (1994)443–452

[33] Huang, Z.: Motion Control for Human Animation. PhD thesis (1996)[34] Boulic, R., Bécheiraz, P., Emering, L., Thalmann, D.: Integration of motion control techniques

for virtual human and avatar real-time animation. In: Proceedings of the ACM symposium onVirtual reality software and technology. VRST ’97, New York, NY, USA, ACM (1997) 111–118

[35] Ieronutti, L., Chittaro, L.: A virtual human architecture that integrates kinematic, physical andbehavioral aspects to control h-anim characters. In: Proceedings of the tenth internationalconference on 3D Web technology. Web3D ’05, New York, NY, USA, ACM (2005) 75–83

[36] Abdel-Malek, K., Yang, J., Kim, J.H., Marler, T., Beck, S., Swan, C., Frey-Law, L., Mathai,A., Murphy, C., Rahmatallah, S., Arora, J.: Development of the virtual-human santos. In:Proceedings of the 1st international conference on Digital human modeling. ICDHM’07, Berlin,Heidelberg, Springer-Verlag (2007) 490–499

[37] Multon, F., Kulpa, R., Bideau, B.: Mkm: A global framework for animating humans in virtualreality (2007)

[38] Multon, F., Hoyet, L.: (Dynamic motion adaptation for 3d acrobatic humanoids)[39] Multon, F., Kulpa, R., Hoyet, L., Komura, T.: Interactive animation of virtual humans based on

motion capture data. Comput. Animat. Virtual Worlds 20 (2009) 491–500[40] Witkin, A., Kass, M.: Spacetime constraints. in proceedings of acm siggraph, pages 159;168, atlanta,

georgia, addison wesley. (1988)[41] Cohen: Interactive spacetime control for animation, in proceedings of acm siggraph, pages 293-302.

addison wesley. (1992)[42] Gleicher, M.: Retargetting motion to new characters, in proc. of acm siggraph, pp. 33-42. (1998)[43] Lee, J., Shin, S.Y.: A hierarchical approach to interactive motion editing for human-like figures.

(1999)[44] Witkin, A., Popovic, Z.: Motion warping, computer graphics proceedings, annual conference series,

1995, pp105-108. (1995)[45] Kulpa, R., Multon, F., Arnaldi, B.: Morphology-independent representation of motions for interac-

tive human-like animation, computer graphics forum, eurographics 2005 special issue, vol. 24,no. 3, pp. 343-352, 2005. (2005)

Page 103: Tese 18,9 MB

81

[46] Chapman, A.: Animation of avatars using human motion capture data. (2008)[47] Molet, Boulic, Thalmann: A real time anatomical converter for human motion capture. (1996)[48] Molet, Huang, Boulic, Thalmann: An animation interface designed for motion capture. (1997)[49] Silaghi, Boulic, Thalmann: Local and global skeleton fitting techniques for optical motion capture.

(1998)[50] der Elst, H.V.: Coding of virtual human motion, phd thesis. (1999)[51] Ménardaise, Multon, Arnaldi: A global framework for motion capture. (2001)[52] Zordan, V.B., Horst, N.C.V.D.: Mapping optical motion capture data to skeletal motion using a

physical model. (2003)[53] Guerra-Filho, G.B.: Optical motion capture: Theory and implementation. (2005)[54] Ko, H., Badler, N.: Straight line walking animation based on kinematic generalization that preserves

the original characteristics, in graphics interface, pages 9-16, toronto, ontario, canada. (1993)[55] Ko, H., Badler, N.I.: Animating human locomotion in real-time using inverse dynamics,ieee com-

puter graphics & applications. (1996)[56] Tolani: An inverse kinematics toolkit for human modeling and simulation. (1998)[57] Park, D.: (Inverse kinematics)[58] Buss: Introduction to inverse kinematics with jacobian transpose, pseudoinverse and damped least

squares methods. (2004)[59] Philips, C.B., Zhao, J., Badler, N.I.: Interactive real-time articulated figure manipulation using

multiple kinematic constraints, computer graphics 24 (2), pp.245-250. (1990)[60] Zhao, Badler: Inverse kinematics positioning using nonlinear programming for highly articulated

figures. (1994)[61] Monheit, Badler: A kinematic model of the human spine and torso. (1990)[62] Boulic, Thalmann: Coach-trainee - a new methodology for the correction of predefined motions.

(1990)[63] Boulic, R., Thalmann, D.: Combined direct and inverse kinematic control for articulated figure

motion editing, computer graphics forum ,2(4), pp , october 1992, partly integrated in coursenotes n. 80, siggraph 93, anaheim, california, august 93. (1992)

[64] Boulic, R., Mas, R.: Hierarchical kinematic behaviors for complex articulated figures, in "advan-ced interactive animation", magnenat-thalmann & thalmann (eds.), prentice hall, to appear insummer 96. (1996)

[65] Tang, W., Cavazza, M., Mountain, D., Earnshaw, R.: Real-time inverse kinematics through cons-trained dynamics. (1998)

[66] Tang, W., Cavazza, M., Mountain, D., Earnshaw, R.: A constrained inverse kinematics techniquefor realtime motion capture animation. (1999)

[67] D. Tolani, A.G.e.N.I.B.: Real-time inverse kinematics techniques for anthropomorphic limbs,graphical models 62 (5) (2000), pp. 353-388. (2000)

[68] Wu, X., Ma, L., Chen, Z., Gao, Y.: A 12-dof analytic inverse kinematics solver for human motioncontrol, journal of information computational science 1 (1) (2004), pp. 137-141. (2004)

[69] Maurel, Thalmann: Human shoulder modeling including scapulo-thoracic constraint and joint sinuscones. (2000)

[70] Sin, Lee, Shin: Computer puppetry: An importance-based approach. (2001)[71] Kovar, L., Schreiner, M.G.J.: Footskate cleanup for motion capture editing. (2002)[72] Yamane, K., Nakamura, Y.: Natural motion animation through constraining and deconstraining

at will. (2003)

Page 104: Tese 18,9 MB

82 CAPÍTULO 7. CONCLUSÃO E TRABALHO FUTURO

[73] Baerlocher, Boulic: An inverse kinematic architecture enforcing an arbitrary number of strict pri-ority levels. (2003)

[74] Boulic, R., Callennec, B.L., Herren, M., Bay, H.: Experimenting prioritized ik for motion editing.(2003)

[75] Peinado, M., Herbelin, B., Wanderley, M., Callennec, B.L., Boulic, R., Thalmann, D., Méziat, D.:Towards configurable motion capture with prioritized inverse kinematics, in: Proceedings of thethird international workshop on virtual rehabilitation (ivwr04), lausanne, switzerland. (2004)

[76] Meredith, Maddock: Using a half-jacobian for real-time inverse kinematics. (2004)[77] Meredith, Maddock: Real-time inverse kinematics - the return of the jacobian. (2004)[78] Kulpa, Multon: Fast inverse kinematics and kinetics solver for human-like figures. (2005)[79] Franck Multon, Richard Kulpa, L.H.T.K.: From motion capture to real-time character animation.

(2008)[80] Raunhardt, Boulic: Real-time joint coupling of the spine for inverse kinematics. (2008)[81] Unzueta, L., Peinado, M., Boulic, R., Ángel Suescun: Full-body performance animation with se-

quential inverse kinematics. (2008)[82] Choi, K.J., Ko, H.S.: On-line motion retargetting, computer graphics and applications, 1999.

proceedings. seventh pacific conference on , vol., no., pp.32-42, 1999. (1999)[83] Molet, T., Boulic, R., Thalmann, D.: Human motion capture driven by orientation measurements,

presence,vol.8,no.2,pp.187-203. (1999)[84] Monzani, J.S., Baerlocher, P., Boulic, R., Thalmann, D.: Using an intermediate skeleton and inverse

kinematics for motion retargeting. (2000)[85] Bachmann, E.R.: Inertial and magnetic angle tracking of limb segments for inserting humans into

synthetic environments. (2000)[86] Baerlocher, Boulic: Parametrization and range of motion of the ball-and-socket joint. (2000)[87] Maciel, A.: Modelagem de articulações para humanos virtuais baseada em anatomia. Master’s

thesis, Universidade Federal do Rio Grande do Sul, Porto Alegre, RS, Brasil (2001)[88] Baltman, R., Radeztsky, R.: Verlet integration and constraints in a six degree of freedom rigid

body physics simulation. (2004)[89] Shao, W., Ng-Thow-Hing, V.: A general joint component framework for realistic articulation in

human characters. (2003)[90] Beinaravicius, A., Mazrimas, G.: Animating human model in opengl using data from motion capture

system. (2008)[91] Sinav, A.: Analysis and modeling of the virtual human interface for the marg body tracking system

using quaternions. (2000)[92] Lee, S.H., Terzopoulos, D.: Spline joints for multibody dynamics. ACM Trans. Graph. 27, 3, Article

22, 8 pages (2008)[93] Delp, S.L., Loan, J.P., Ho, M.G., Zajac, F.E., Topp, E.L., Rosen, J.M.: An interactive graphics-

based model of the lower extremity to study orthopaedic surgical procedures, ieee transactionson biomedical engineering 37, 8 (aug.), 757-767. (1990)

[94] Craig, J.J.: Introduction to robotics mechanic and control 2nd ed. (1989)[95] Abramowitz, M., Stegun, I.A.: Handbook of mathematical functions with formulas, graphs, and

mathematical tables. (1964)[96] (editor), A.G., ed.: Graphics Gems. Academic Press, ISBN: 0122861663 (1990)[97] (editor), J.A., ed.: Graphics Gems II. Academic Press, ISBN: 0120644819 (1991)[98] (editor), D.K., ed.: Graphics Gems III. Academic Press, ISBN: 0124096735 (1992)[99] (editor), P.H., ed.: Graphics Gems IV. Academic Press, ISBN: 0123361559 (1994)

Page 105: Tese 18,9 MB

83

[100] (editor), A.P., ed.: Graphics Gems V. Academic Press, ISBN: 0125434553 (1995)[101] Usta, U.Y.: Comparison of quaternion and euler angle methods for joint angle animation of human

figure models. (1999)[102] OpenGL Architecture Review Board, e.a.: OpenGL Reference Manual: The Official Reference

Document to OpenGL, Version 1.4. Addison-Wesley, ISBN 0-321-17383-X (2004)[103] Opengl, Shreiner, D., Woo, M., Neider, J., Davis, T.: OpenGL(R) Programming Guide : The

Official Guide to Learning OpenGL(R), Version 2 (5th Edition). Addison-Wesley Professional(2005)

[104] Robbins, D.H.: Anthropometric specifications for mid-sized male dummy. (1983)[105] Grosso, M.R., Quachy, R.D., Otani, E., Zhao, J., Wei, S., Hozz, P.H., Lux, J., Badler, N.I.:

Anthropometry for computer graphics human figures. (1989)[106] Azuola, F., Wei, S., Hoonz, T.K., Badler, N.I.: Sass v2.1 - anthropometric spreadsheet and database

for the iris. (1993)[107] Wang, X., Maurin, M., Mazet, F., Maia, N.D.C., Voinot, K., Verriest, J.P., Fayet, M.: Three-

dimensional modelling of the motion range of axial rotation of the upper arm. (1998)[108] Wang, X.: Three-dimensional kinematic analysis of influence of hand orientation and joint limits

on the control of arm postures and movements. (1999)[109] Alexander, S., Jan, S.V.S., Clapworthy, G.: A biomechanics-based model for the animation of

human locomotion. (1999)[110] Zhao, Badler: Real time inverse kinematics with joint limits and spatial constraints. (1989)[111] Boulic, Renault: 3d hierarchies for animation. (1991)[112] Whelman, C.: Inverse kinematics and geometric constraints for articulated figure manipulation.

(1993)[113] Boulic, Huang, Thalmann: A comparison of design strategies for 3d human motions. (1995)[114] Boulic, R., Fua, P., Herda, L., Silaghi, M., Monzani, J.S., Nedel, L., Thalmann, D.: An anatomic

human body for motion capture. (1998)[115] Thalmann, D.: A new generation of synthetic actors - the real-time and interactive perceptive

actors. (1996)[116] Meredith, Maddock: Motion capture file formats explained. (2000)[117] Pina, A., Cerezo, E., Seron, F.J.: Computer animation - from avatars to unrestricted autonomous

actors (a survey on replication and modelling mechanisms). (2000)[118] Gleicher, M.: Comparing constraint-based motion editing methods. (2001)[119] CAESAR: Digitally defining the human body. SAE International (2003)[120] Grassia, F.S.: Practical parameterization of rotations using the exponential map. Journal of

Graphics Tools 3 (1998) 29–48[121] Shoemaker, K.: Arcball: A user interface for specifying three-dimensional orientation using a mouse.

Proceedings of Graphics Interface ’92, pages 151 - 156, Vancouver, Canada (1992)[122] Beers, M.H., Berkow, R.: The Merck Manual of Diagnosis and Therapy 17 Edition. Volume Physical

Therapy. Whitehouse Station, NJ: Merck Research Laboratories. (1999)[123] Kurz, T.: Stretching Scientifically - a guide To Flexibility Training. Vermont:Stadion Publishing

Company, Inc., Island Pond, Vermont (1994) ISBN 0-9401-4930-3.[124] Reese, N.B., Bandy, W.D.: Joint Range of Motion and Muscle Length Testing. Philadelphia, PA:

WB Saunders (2002)

Page 106: Tese 18,9 MB

84 CAPÍTULO 7. CONCLUSÃO E TRABALHO FUTURO

Page 107: Tese 18,9 MB

AGlossárioBVH Um formato texto utilizado para armazenamento de animações de esqueleto em ficheiro.

DOF Graus de Liberdade, do inglês Degrees of Freedom.

Escápula Omoplata.

GLUT The OpenGL Utility Toolkit.

MNM Marker Name Mapping. É um ficheiro utilizado para mapear nomes de juntas de um ficheiro deanimação para um esqueleto que utilize nomes diferentes nas suas juntas.

OBJ Formato aberto e amplamente utilizado para armazenar objectos 3D.

OpenTK Open Toolkit Library.

Panning Deslocar a imagem em direcção perpendicular à da camera (para cima, para baixo, para oslados, etc.).

TAC Tomografia Assistida por Computador.

Page 108: Tese 18,9 MB

86 APÊNDICE A. GLOSSÁRIO

Page 109: Tese 18,9 MB

BFiguras Anatómicas

Page 110: Tese 18,9 MB

88 APÊNDICE B. FIGURAS ANATÓMICAS

Figura B.1: O Esqueleto Humano Completo [2].

Page 111: Tese 18,9 MB

89

Figura B.2: Ossos da Coluna Vertebral [2].

Page 112: Tese 18,9 MB

90 APÊNDICE B. FIGURAS ANATÓMICAS

Figura B.3: Ossos da Caixa Torácica [2].

(a) Cintura Escapular e Membro SuperiorDireito

(b) Cintura Pélvica e MembroInferior Direito

Figura B.4: Ossos da: (a) Cintura Escapular e do Membro Superior Direito; (b) Cintura Pélvica e doMembro Inferior Direito. [2]

Page 113: Tese 18,9 MB

91

Figura B.5: Ossos das mãos [2].

(a) Vista superior (b) Vista lateral

Figura B.6: Ossos do pé [2]

Page 114: Tese 18,9 MB

92 APÊNDICE B. FIGURAS ANATÓMICAS

Figura B.7: Planos de Corte do Corpo [2].

Page 115: Tese 18,9 MB

93

(a) Plana (b) Sela (c) Roldana

(d) Cilíndrica (e) Elíptica (f) Esférica

Figura B.8: Tipos de articulações [2]

Page 116: Tese 18,9 MB

94 APÊNDICE B. FIGURAS ANATÓMICAS

(a) Coluna Vertebral Lombar (b) Cotovelo (c) Joelho

(d) Ombro (e) Pescoço (f) Tornozelo

Figura B.9: Flexão e Extensão do corpo humano [2]

Page 117: Tese 18,9 MB

95

Figura B.10: Abdução e Adução do Ombro [2].

Page 118: Tese 18,9 MB

96 APÊNDICE B. FIGURAS ANATÓMICAS

Figura B.11: Abdução e Adução dos Dedos da Mão [2].

Figura B.12: Rotação Interna e Externa do Ombro [2].

Figura B.13: Pronação e Supinação do braço [2].

Page 119: Tese 18,9 MB

CTabelas de LimitesAnatómicos

Articulação Tipo Movimento Alcance(º)Anca Esférica Flexão-Extensão

HiperExtensãoAbdução-AduçãoRotação ExternaRotação Interna

0 a 1250 a 20-35 a 450 a 450 a 45

Joelho Roldana Flexão-ExtensãoHiperExtensãoRotação Interior

0 a 1300 a 150 a 10

Tornozelo Múltiplo:RoldanaCilíndrica

Flexão-ExtensãoHiperExtensãoSupinaçãoPronação

0 a 200 a 500 a 350 a 25

Juntas Metatarsofalangeais (nósdos pés)

Elíptica Flexão-ExtensãoHiperExtensão

0 a 300 a 80

Juntas Interfalangeais dos pés(dedos dos pés)

Roldana Flexão-ExtensãoHiperExtensão

0 a 500 a 50

Tabela C.2: Tipologia e Restrições das articulações dos membros inferiores [122] [123] [9] [124]

Page 120: Tese 18,9 MB

98 APÊNDICE C. TABELAS DE LIMITES ANATÓMICOS

Articulação Tipo Movimento Alcance(º)Ombro Esférica Flexão-Extensão

HiperExtensãoAbdução-AduçãoRotação ExternaRotação InternaAbdução HorizontalAdução Horizontal

0 a 1800 a 450 a 1800 a 900 a 900 a 300 a 120

Cotovelo Roldana Flexão-ExtensãoPronaçãoSupination

0 a 1600 a 900 a 90

Punho Elíptica Flexão-Extensão Hi-perExtensão AbduçãoAdução

0 a 90 0 a 700 a 25 0 a 65

Tabela C.3: Tipologia e Restrições das articulações dos membros superiores, excepto das mãos [122] [123][9] [124]

Articulação Tipo Movimento Alcance(º)Juntas Metacarpofalangeais (nósdas mãos)

Elíptica AbduçãoAduçãoFlexão-ExtensãoHiperExtensão

0 a 250 a 200 a 900 a 30

Juntas Interfalangeais Próximas(dos dedos)

Roldana Flexão-Extensão 0 a 120

Juntas Interfalangeais Distais(dos dedos)

Roldana Flexão-Extensão 0 a 80

1ª Junta CarpoMetacárpica (dopolegar)

Sela Flexão-ExtensãoHiperExtensãoAbdução-Adução

0 a 150 a 200 a 70

Junta Metacarpofalangeal do Po-legar

Roldana Flexão-Extensão 0 a 50

Junta Interfalangeal do Polegar Roldana Flexão-Extensão 0 a 90

Tabela C.4: Tipologia e Restrições das articulações das mãos [122] [123] [9] [124]

Articulação Tipo Movimento Alcance(º)Pescoço Elíptica Flexão-Extensão

HiperExtensãoAbdução-AduçãoRotação

0 a 900 a 55-35 a -35-70 a 70

Coluna Vertebral Lombar Elíptica Flexão-ExtensãoHiperExtensaoRotação

0 a 75-35 a -35-70 a 70

Tabela C.5: Tipologia e Restrições das articulações da coluna vertebral [122] [123] [9] [124]

Page 121: Tese 18,9 MB

DDados da norma H-Anim200x

Articulação Posição InicialHumanoidRoot 0.0000 0.8240 0.0277

sacroiliac 0.0000 0.9149 0.0016l_hip 0.0961 0.9124 -0.0001l_knee 0.1040 0.4867 0.0308l_ankle 0.1101 0.0656 -0.0736

l_subtalar 0.1086 0.0001 -0.0368l_midtarsal 0.1086 0.0001 0.0368l_metatarsal 0.1086 0.0000 0.0762

r_hip -0.0950 0.9171 0.0029r_knee -0.0867 0.4913 0.0318r_ankle -0.0801 0.0712 -0.0766

r_subtalar -0.0801 0.0000 -0.0368r_midtarsal -0.0801 0.0000 0.0368r_metatarsal -0.0801 0.0039 0.0732

vl5 0.0028 1.0568 -0.0776vl4 0.0035 1.0925 -0.0787vl3 0.0041 1.1276 -0.0796vl2 0.0045 1.1546 -0.0800vl1 0.0048 1.1912 -0.0805vt12 0.0051 1.2278 -0.0808vt11 0.0053 1.2679 -0.0810vt10 0.0056 1.2848 -0.0822vt9 0.0057 1.3126 -0.0838vt8 0.0057 1.3382 -0.0845vt7 0.0058 1.3625 -0.0833vt6 0.0059 1.3866 -0.0800vt5 0.0060 1.4102 -0.0745vt4 0.0061 1.4320 -0.0675vt3 0.0062 1.4583 -0.0570vt2 0.0063 1.4761 -0.0484vt1 0.0065 1.4951 -0.0387vc7 0.0066 1.5132 -0.0301vc6 0.0066 1.5357 -0.0143vc5 0.0066 1.5520 -0.0082vc4 0.0066 1.5662 -0.0084vc3 0.0066 1.5800 -0.0103vc2 0.0066 1.5928 -0.0103vc1 0.0066 1.6144 -0.0034

skullbase 0.0044 1.6209 0.0236l_eyeball_joint 0.0336 1.6332 0.0502r_eyeball_joint -0.0236 1.6331 0.0510

l_sternoclavicular 0.0820 1.4488 -0.0353l_acromioclavicular 0.0962 1.4269 -0.0424

l_shoulder 0.2029 1.4376 -0.0387

Articulação Posição Iniciall_elbow 0.2014 1.1357 -0.0682l_wrist 0.1984 0.8663 -0.0583

l_thumb1 0.1924 0.8472 -0.0534l_thumb2 0.1951 0.8226 0.0246l_thumb3 0.1955 0.8159 0.0464l_index0 0.1983 0.8024 -0.0280l_index1 0.1983 0.7815 -0.0280l_index2 0.2017 0.7363 -0.0248l_index3 0.2028 0.7139 -0.0236l_middle0 0.1987 0.8029 -0.0530l_middle1 0.1987 0.7818 -0.0530l_middle2 0.2013 0.7273 -0.0503l_middle3 0.2026 0.7011 -0.0494l_ring0 0.1956 0.8019 -0.0794l_ring1 0.1956 0.7815 -0.0794l_ring2 0.1973 0.7287 -0.0777l_ring3 0.1983 0.7045 -0.0767l_pinky0 0.1925 0.8066 -0.1036l_pinky1 0.1925 0.7866 -0.1036l_pinky2 0.1938 0.7452 -0.1024l_pinky3 0.1948 0.7277 -0.1017

r_sternoclavicular -0.0694 1.4600 -0.0330r_acromioclavicular -0.0836 1.4281 -0.0401

r_shoulder -0.1907 1.4407 -0.0325r_elbow -0.1949 1.1388 -0.0620r_wrist -0.1959 0.8694 -0.0521

r_thumb1 -0.1899 0.8502 -0.0473r_thumb2 -0.1874 0.8256 0.0306r_thumb3 -0.1864 0.8190 0.0506r_index0 -0.1961 0.8055 -0.0218r_index1 -0.1961 0.7846 -0.0218r_index2 -0.1954 0.7393 -0.0185r_index3 -0.1945 0.7169 -0.0173r_middle0 -0.1972 0.8060 -0.0468r_middle1 -0.1972 0.7849 -0.0468r_middle2 -0.1950 0.7304 -0.0441r_middle3 -0.1939 0.7042 -0.0432r_ring0 -0.1951 0.8049 -0.0732r_ring1 -0.1951 0.7845 -0.0732r_ring2 -0.1920 0.7318 -0.0716r_ring3 -0.1908 0.7077 -0.0706r_pinky0 -0.1926 0.8096 -0.0975r_pinky1 -0.1926 0.7896 -0.0975r_pinky2 -0.1902 0.7483 -0.0963r_pinky3 -0.1908 0.7540 -0.0960

Tabela D.1: Posição inicial das juntas da norma ISO H-Anim 200x http://www.h-anim.org/

Page 122: Tese 18,9 MB

100 APÊNDICE D. DADOS DA NORMA H-ANIM 200X

Page 123: Tese 18,9 MB

EEstrutura Interna deFicheiros

E.0.1 Ficheiro de Animação BVH

Os ficheiros BVH encontram-se organizados em duas secções. Na primeira define-se a hierarquia de juntas utilizadapela animação. Na segunda define-se a animação em si. A definição da estrutura hierárquica começa com uma linhacontendo a palavra-chave HIERARCHY, e segue depois no seguinte formato:

ROOT nome_da_junta_raiz{

OFFSET deslocamento_x deslocamento_y deslocamento_zCHANNELS 6 canal1 canal2 canal3 canal4 canal5 canal6JOINT junta_filho_1{OFFSET deslocamento_x deslocamento_y deslocamento_zCHANNELS 3 canal1 canal2 canal3

(pode conter mais juntas filho aqui)(se não contiver mais filhos, terá o seguinte nó:)End Site{

OFFSET deslocamento_x deslocamento_y deslocamento_z}

}JOINT junta_filho_2{

OFFSET deslocamento_x deslocamento_y deslocamento_zCHANNELS 3 canal1 canal2 canal3

(pode conter mais juntas filho aqui)(se não contiver mais filhos, terá o seguinte nó:)End Site{

OFFSET deslocamento_x deslocamento_y deslocamento_z}

}}

Cada junta pode definira, a seguir aos seus canais, mais juntas filho, de forma a criar a estrutura hierárquica. Para oscanais utilizam-se as palavra-chave Xposition, Yposition, Zposition, Xrotation, Yrotation e Zrotation, conforme os dadosque existam para essa junta. O objectivo principal desta linha é definir em que ordem os dados são lidos, e por sua vez,a ordem com que as rotações deverão ser aplicadas. É frequente que a definição de canais de uma junta seja algo comoCHANNELS 3 Zrotation Xrotation Yrotation, o que faz com que esta junta deva ser rodada primeiro no eixo Z, depois noeixo X, e finalmente em Y. Os nós End Site definem um deslocamento que corresponde à dimensão dos segmentos-folha, ouseja, que não possuem filhos.A secção seguinte inicia-se com uma linha contendo a palavra-chave MOTION. As duas linhas seguintes definem o númerode quadros que a animação contém, e qual a velocidade a que deve ser executada:

Frames: numero_de_quadros_da_animacaoFrame Time: duracao_de_cada_quadro_em_segundos

Finalmente, o resto do ficheiro é uma sequência de linhas, contendo cada uma delas uma lista de valores reais, que corres-pondem a coordenadas de posição e de rotação. O número de valores em cada linha é igual ao somatório do número decanais definidos em cada uma das juntas, e cada valor será mapeado para cada um dos canais, conforme a ordem com queesses canais foram definidos.Apresentamos como exemplo, um ficheiro que define uma estrutura simples com quatro juntas, cuja animação contém quatroquadros a 2 quadros-por-segundo:

Page 124: Tese 18,9 MB

102 APÊNDICE E. ESTRUTURA INTERNA DE FICHEIROS

HIERARCHYROOT HumanoidRoot{

OFFSET 0.00 0.00 0.00CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation YrotationJOINT jointOne{

OFFSET 0.0 15.0 0.0CHANNELS 3 Xrotation Zrotation YrotationJOINT jointOneA{

OFFSET 10.0 0.0 0.0CHANNELS 3 Xrotation Zrotation YrotationEnd Site{

OFFSET 0 0 0}

}JOINT jointOneAA{

OFFSET 0.0 -10.0 0.0CHANNELS 3 Xrotation Zrotation YrotationEnd Site{

OFFSET 0 0 0}

}}

}MOTIONFrames: 4Frame Time: 0.50 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 45 0 0 0 0 00 0 0 0 0 0 0 0 0 0 45 0 0 0 00 0 0 0 0 0 0 0 0 45 45 0 0 0 0

E.0.2 Ficheiro de Estrutura de Esqueleto

Nestes ficheiros definimos estruturas hierárquicas que podem ser utilizadas como esqueleto. A extensão de ficheiroutilizada é .hanimstruct. A estrutura que utilizamos define-se como uma listagem de linhas no formato

[nível_hierárquico] nome_da_junta : nome_do_segmento

O nível hierárquico é definido com sequências do caracter travessão (-), sendo que o número de vezes que esse caracter éinserido define qual o nível desta junta. A primeira junta possui nível zero, pelo que não contém este elemento. Comoexemplo, apresentamos o ficheiro loa one.hanimstruct, que corresponde ao esqueleto com nível de articulação 1 da normaH-Anim 200x:

HumanoidRoot : sacrum- sacroiliac : pelvis-- l_hip : l_thigh--- l_knee : l_calf---- l_ankle : l_hindfoot----- l_midtarsal : l_forefoot-- r_hip : r_thigh--- r_knee : r_calf---- r_ankle : r_hindfoot----- r_midtarsal : r_forefoot- vl5 : spine-- skullbase : skull-- l_shoulder : l_upperarm--- l_elbow : l_forearm---- l_wrist : l_hand-- r_shoulder : r_upperarm--- r_elbow : r_forearm---- r_wrist : r_hand

Page 125: Tese 18,9 MB

103

E.0.3 Ficheiro de Pose Inicial de Esqueleto

Nestes ficheiros definimos poses inicias a serem utilizadas em conjunto com os ficheiros de estrutura de esqueleto,apresentados na secção anterior. A extensão de ficheiro utilizada é .hanimpose. A estrutura que definimos define-se comouma listagem de linhas no formato

ome_da_junta posicao_x posicao_y posicao_z

Os campos nome_da_junta correspondem a juntas definidas no ficheiro de estrutura respectivo. Como exemplo, apresenta-mos o ficheiro loa one.hanimpose, que corresponde à pose inicial do esqueleto com nível de articulação 1 da norma H-Anim200x:

HumanoidRoot 0.0000 0.8240 0.0277sacroiliac 0.0000 0.9149 0.0016l_hip 0.0961 0.9124 -0.0001l_knee 0.1040 0.4867 0.0308l_ankle 0.1101 0.0656 -0.0736l_midtarsal 0.1086 0.0001 0.0368r_hip -0.0961 0.9124 0.0001r_knee -0.0867 0.4913 0.0318r_ankle -0.0801 0.0712 -0.0766r_midtarsal -0.0801 0.0000 0.0368vl5 0.0028 1.0568 -0.0776skullbase 0.0044 1.6209 0.0236l_shoulder 0.2029 1.4376 -0.0387l_elbow 0.2014 1.1357 -0.0682l_wrist 0.1984 0.8663 -0.0583r_shoulder -0.1907 1.4407 -0.0325r_elbow -0.1949 1.1388 -0.0620r_wrist -0.1959 0.8694 -0.0521

E.0.4 Ficheiros de correspondência de marcas MNM

Estes ficheiros permitem fazer corresponder a hierarquia definida em ficheiros BVH a esqueletos definidos através donosso formato H-Anim. Em cada linha define-se um par de nomes, cujo primeiro indica o nome da junta como está definidano ficheiro hanimstruct, que no nosso caso, segue sempre a convenção de nomes definidos pela norma H-Anim, e o segundoindica o nome da junta como está definida no ficheiro BVH. Apresentamos como exemplo, um ficheiro MNM que fariacorresponder um ficheiro BVH que não segue a norma H-Anim, às nossas juntas que a seguem:

HumanoidRoot Hipsl_hip LeftUpLegl_knee LeftLowLegl_ankle LeftFootr_hip RightUpLegr_knee RightLowLegr_ankle RightFootvl5 Chestl_sternoclavicular LeftCollarl_shoulder LeftUpArml_elbow LeftLowArml_wrist LeftHandr_sternoclavicular RightCollarr_shoulder RightUpArmr_elbow RightLowArmr_wrist RightHandvc7 Neckskullbase Head