A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Skeleton and Skinning Pablo Carneiro Elias 30 de maio de 2006.

Apresentações semelhantes


Apresentação em tema: "Skeleton and Skinning Pablo Carneiro Elias 30 de maio de 2006."— Transcrição da apresentação:

1 Skeleton and Skinning Pablo Carneiro Elias 30 de maio de 2006

2 Visão Geral Arquivo de Skeleton (csf) Interpretando os dados Transformações Os sistemas de coordenadas envolvidos Transformações por eixos Locais Transformando o Skeleton Transformando a Malha Arquivo de Malha (cmf) Codificação (vide fontes) Desenhando o Skeleton Desenhando a Malha Ajustando Normais

3 Arquivo de Skeleton (csf) Transformações para cada um dos ossos: translation x relative translation to parent bone translation y translation z rotation x relative rotation to parent bone rotation y stored as a quaternion rotation z rotation w local translation x translation to bring a vertex from local translation y model space into bone space local translation z local rotation x rotation to bring a vertex from local rotation y model space into bone space local rotation z local rotation w

4 Arquivo de Skeleton Ordem das transformações? Intuitivamente se deduz que as transformações relativas ao pai estão organizadas hieraquicamente (eixos locais)...

5 Primeira Interpretação dos dados Primeiramente imaginei que: Matriz das transformações que ocorrem localmente  Eixos locais ‘presos’ a cada bone

6 Primeira Interpretação dos dados Usando eixos locais nos primeiros testes os resultados foram longe do esperado Transformações estranhas Esqueleto desfigurado Matriz das transformações que ocorrem localmente  Imaginei então que não se tratava de eixos locais... ?

7 Segunda Interpretação dos dados Após muito tentar entender o que estava errado Tentei olhar no código do Cal3D O Cal3D é independente de ‘renderizador’ O viewer do cal3d usava vertex program completamente ilegível para desenhar a malha Só entendi como ele desenhava os bones e então tentei usar o mesmo procedimento para a malha...

8 Segunda Interpretação dos dados Como o viewer do cal3d desenha os bones: Cada bone tem um vetor de translação t e rotação R, mas R só influenciava os filhos, ao passo que t era transformado pela rotação acumulada dos antecessores e somado com t do pai: R.t Tp R.t + Tp

9 Segunda Interpretação dos dados Usei o mesmo processo para levar um vértice da origem para o espaço global: Para levar do global para origem usei a inversa Funcionava para deixar a malha junto com o osso em repouso Quando movia uma junta, nada mais funcionava  Abordagem errada por que não trabalhava com os espaços locais dos bones e sim com a origem sempre!

10 Terceira Interpretação dos dados Após algum tempo analisando... Testes com transformações simples na origem e tentativas de transformações com eixos locais me mostraram que as rotações estavam todas invertidas... Conclusão: O cal3d fornece quatérnios inversos aos que a minha classe de quaternio representava Minha classe usa rotações em conformidade com o OpenGL

11 Terceira Interpretação dos dados Quaternio inverso? Um quaternio que representa uma rotação é unitário Para quatérnios unitários, o inverso é o conjugado pois:

12 Terceira Interpretação dos dados Quaternio inverso? Logo, para um quatérnio que representa uma rotação, seu inverso é obtido apenas negativando o eixo de rotação Os eixos dos quaternios que o Cal3d eram inversos, ou seja, uma rotação de theta graus em Y segundo o cal3d significa uma rotação de -theta graus em Y (ou de theta graus em –Y) segundo a minha classe de quaternios Conclusão: Voltei a primeira interpretação de tranformações por eixos locais, que estava correta, embora os quaternios estivessem invertidos...

13 Transformações Os sistemas de coordenadas envolvidos: Sistema global (do modelo) Sistema local de cada bone

14 Transformações Transformações por eixos locais Matriz das transformações que ocorrem localmente  Não estou usando a matriz G2L que é dada no arquivo.csf - Incialmente calculo as inversas das L2G e guardo

15 Transformações Transformando o Skeleton Usa-se a matrix L2G para mover o sistema de eixos do bone i para o espaço global Desenha uma linha da origem do sistema do bone i-1 para o bone i

16 Transformações Transformando a Malha 2 Opções: 1a ) Guardar 2 malhas: Uma orignal e outra dinâmica Guardar as inversas das transformações que desenham o esqueleto em repouso Sempre levar o vértice da malha original para o espaço local de um bone de influência no espaço de repouso orignal Transformar denovo para o espaço global usando a nova cadeia de transformações (que gera uma nova matriz L2G)

17 Transformações Transformando a Malha 2a ) Usar apenas uma malha e atualizar as inversas das matrizes L2G, como se a nova posição de repouso do esqueleto fosse atualizada Transforma o vértice para o espaço local do bone de influência com a inversa da L2G (da pose anterior) Transforma para o espaço global com a L2G Atualiza inversa da L2G como sendo a inversa da nova L2G

18 Arquivo de Malha (cmf) Dentre muitas outras coisas tem Vértices x,y,z Influências normal... Vértices são dados no espaço global

19 Codificação Vide Fontes...

20 Referências http://graphics.ucsd.edu/courses/cse169_w06/ - CSE 169: Computer Animation Course http://graphics.ucsd.edu/courses/cse169_w06/ GATTASS, Marcelo. Transformações Geométricas. Material do Curso de Fundamentos da Computação Gráfica


Carregar ppt "Skeleton and Skinning Pablo Carneiro Elias 30 de maio de 2006."

Apresentações semelhantes


Anúncios Google