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

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

Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica Departamento de Computação UFC.

Apresentações semelhantes


Apresentação em tema: "Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica Departamento de Computação UFC."— Transcrição da apresentação:

1 Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica Departamento de Computação UFC

2 2 Sumário do Capítulo Interpolação 3.2 Controlando o movimento de um ponto sobre uma curva 3.3 Interpolação de orientações 3.4 Trabalhando com caminhos

3 3.1 Interpolação

4 4 Base da animação Não é trivial –Calcular o comprimento de arco (arc length) –Função adequada de interpolação –Parametrização da função com base na distância percorrida –Controlar a posição interpolada ao longo do tempo

5 5 3.1 Interpolação Geralmente guardam-se parâmetros associados a um keyframe Parâmetro a ser interpolado: –Coordenada de um objeto –Ângulo da articulação de um robô –Quaisquer outros parâmetros usados na manipulação e visualização de elementos gráficos

6 6 3.1 Interpolação Exemplo (-5, 0, 0) Frame 22 (5, 0, 0) Frame 67 (5, 10, 0) Frame 80

7 7 3.1 Interpolação A Função Apropriada –Escolher a técnica de interpolação mais adequada e como aplicar na animação –Questões a serem consideradas: Interpolação vs Aproximação Continuidade Controle global vs Controle local Complexidade

8 8 3.1 Interpolação A Função Apropriada –Interpolação vs Aproximação 1.Valores apresentados representam posições reais que a curva deve passar 2.Apenas controlam a forma da curva e não representam posições reais

9 9 3.1 Interpolação A Função Apropriada –Interpolação vs Aproximação Funções usadas para interpolação: –Formulação de Hermite »Requer a tangente das extremidade –Spline Catmull-Rom »Semelhante: Parabolic Blending »Apenas as posições que a curva deve passar Funções usadas para aproximação –Bezier –B-spline

10 Interpolação A Função Apropriada –Complexidade Influencia na eficiência computacional –Funções mais simples => calculo mais rápido Na pratica o mais usado é: Polinômio cúbico –Ordem baixa porém consegue-se suavidade necessária –Fácil de se satisfazer outras restrições »Posição inicial e final »Tangente

11 Interpolação A Função Apropriada –Continuidade Relativa a um ponto da curva Tipos –C0 : ordem zero ou continuidade posicional –C1 : primeira ordem ou continuidade tangencial –C2 : segunda ordem ou continuidade de curvatura

12 Interpolação

13 Interpolação A Função Apropriada –Continuidade Em geral basta continuidade de 1ª ordem –Exemplos de continuidade de 1ª ordem »Hermite »Catmull-Rom »Parabolic Blending »Curva de bezier –B-spline cubica é um exemplo de continuidade de 2ª ordem Normalmente curvas possuem vários segmentos

14 Interpolação A Função Apropriada –Controle Global vs Controle Local Global –Reposicionamento de um ponto redefine a curva toda Local –Reposicionamento de um ponto ajusta apenas uma parte da curva –Quase todas as curvas compostas fornecem o controle local –Em geral é o melhor

15 Interpolação

16 3.2 Controlando o movimento de um ponto sobre uma curva

17 Controlando o movimento de um ponto sobre uma curva É necessário conhecer a relação: –Mudança no parâmetro da função –Distância ao longo da curva Assim é fácil por velocidade de acordo com o desejado.

18 Controlando o movimento de um ponto sobre uma curva Definições –Assumi-se que uma técnica de interpolação foi escolhida –A função para a curva é escolhida Para cada valor é gerado um ponto no espaço Os valores dos ponto de keyframes são escolhidos pelo animador Os valores nos eixos são independentes

19 Controlando o movimento de um ponto sobre uma curva Observação –Variações constantes no tempo não geram variações de posição constantes

20 Controlando o movimento de um ponto sobre uma curva Para garantir que a velocidade seja constante: –A função de interpolação tem que ser parametrizada pelo comprimento de arco A maioria das aplicações é reparametrizada –Analiticamente Raramente pode ser usada –Métodos numéricos Cria tabelas estabelecendo relação entre o parâmetro e o comprimento de arco

21 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Problema prático Ao invés de especificar a posição/tempo, especifique-se: –Objeto parte do repouso em A –Acelera suavemente até frame 20 –Mantém velocidade constante até o frame 35 –Desacelera suavemente até o frame 60 parando ao final da curva Estas restrições podem ser obtidas com um sistema que computa a distância ao longo de qualquer parte da curva

22 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Assumindo que a posição do objeto será interpolada –Objetivo Definir uma função paramétrica que ache um ponto no espaço tridimensional

23 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Definições importantes “Curva espacial” –Refere-se ao espaço a percorrer –Dada pela função de interpolação “Função distância-tempo” –Refere-se a como o objeto desliza sobre a curva –Dependendo desta função, pode-se dar uma impressão diferente na animação Velocidade constante Velocidade nula no ponto mais alto

24 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Definições importantes A função que calcula o comprimento de arco –Quando se trata de um valor especifico –Se for em função do tempo –Uma função de comprimento de arco que calcula o valor paramétrico

25 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Estabelecendo a relação entre ‘distancia percorrida’ e o ‘valor paramétrico’ Parametrização pelo comprimento do arco Permite uma velocidade constante pela curva se for resolvido para tamanhos iguais de comprimento de arco Mais adiante será possível acelerar controlando o espaço percorrido em um dado intervalo

26 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –A função calcula a distância entre dois pontos, e, na curva –Problemas a serem resolvidos 1.Dados e achar 2.Dado o comprimento e o parâmetro, achar, tal que

27 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco –Se a função inversa de puder ser calculada, ou estimada, a curva pode ser parametrizada –Isto é, achar o ponto

28 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Analiticamente) –A distancia de a pode ser achada pela integral: onde:

29 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Analiticamente) –Para uma curva cúbica, temos: –Para a coordenada x: –Depois de elevar ao quadrado:

30 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Analiticamente) –Par um caso bidimensional, ficaria:

31 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Estimativa –São feitas amostras com vários valores paramétricos Sendo cada valor é um ponto na curva Serão utilizados para aproximar o arco por um seguimento de reta entre dois pontos É feito uma tabela com os valores: –Index –Valor paramétrico –Comprimento de arco »Do inicio da curva até o ponto

32 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Exemplo

33 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Exemplo Qual valor do arco do começo da curva até o ponto ? –Index do valor mais próximo onde d é a distancia entre os valores paramétricos e v é o valor paramétrico dado.:

34 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Exemplo Qual valor do arco do começo da curva até o ponto ? –É possível fazer uma interpolação dos valores para ser mais exato: »Index do menor valor mais próximo

35 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Exemplo Qual valor do arco do começo da curva até o ponto ? –É possível fazer uma interpolação dos valores para ser mais exato:

36 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Para achar a distância entre dois pontos (problema 1) Fazer o mesmo procedimento anterior para os dois pontos e subtrair as distâncias –Achar o valor paramétrico para um dado comprimento de arco Semelhante ao anterior

37 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Exemplo Qual valor paramétrico do ponto onde o comprimento de arco do começo da curva até ele é de ? –O comprimento mais próximo na tabela é de que corresponde ao valor paramétrico –Interpolando valores, temos:

38 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Para achar o ponto a uma dada distância de outro ponto dado (problema 2) A tabela pode ser usada para achar o comprimento de arco,, associada ao ponto dado Reformulando o problema: –Achar o ponto onde a distancia é:

39 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Forward Differencing) –Vantagens Intuitivo Fácil de implementar –Desvantagem Os cálculos adicionam erros –Erro global pode ser diminuído »Curva for super amostrada »Interpolação de grau maior

40 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –É uma adaptação do método anterior Menos erros –Investe mais cálculos nas partes da curva que causam mais erros

41 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –O método começa com o seguimento de curva completo –Cria uma tabela como no método anterior Cada elemento da tabela associa um valor paramétrico com seu comprimento de arco –Também pode ser guardado o ponto Estrutura apropriada: –Lista encadeada

42 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –Método em alto nível Faz uma estimativa do tamanho do seguimento Faz estimativa do tamanho das duas metades do seguimento Testa com uma certa tolerância –Faz (ou não) novamente o procedimento com as metades –Problema em estágios iniciais

43 Controlando o movimento de um ponto sobre uma curva

44 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –A tabela começa com o primeiro ponto da curva –A lista de elementos para serem testados começa com a curva inteira O procedimento acaba quando a lista de elementos a serem testados ficar vazia

45 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –Testa-se sempre o primeiro elemento da lista Se o elemento passar pela tolerância –É adicionado em as duas metades »Do início ao meio, onde o seu foi conseguido fazendo a soma do com a aproximação do ponto inicial ao ponto do meio »Meio ao final onde o seu foi conseguido semelhante ao caso anterior

46 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Método adaptativo) –Testa-se sempre o primeiro elemento da lista Se esse elemento não passar –As duas metades são adicionadas em –A cada nível da subdivisão a tolerância também é dividida ao meio

47 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Estimando numericamente a integral) –Muitas técnicas aproximam a integral Regra do trapézio e Simpson –Espaçamentos uniformes Quadratura de Gauss –Espaçamentos não uniformes »Tentando conseguir melhor exatidão »Diminui o número de vezes que a função é estimada

48 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Estimando numericamente a integral) –Quadratura de Gauss Normalmente definida

49 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Estimando numericamente a integral) –Quadratura de Gauss Mas pode alcançar qualquer limite definindo a função, onde Tendo também: onde

50 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Estimando numericamente a integral) –Quadratura de Gauss Fazendo substituição, temos:

51 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Estimando numericamente a integral) –Quadratura de Gauss Para calcular o comprimento de arco de uma curva cúbica: usando as equações mostradas no modo analítico.

52 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Quadratura de Gauss adaptada) –Curvas podem ter derivadas que variam Rapidamente –Subamostrado –Problema: Erros se acumulam Lentamente –Superamostrado –Problema: Cálculos desnecessários Solução: método adaptativo similar ao Forward Differencing Adaptativo

53 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Quadratura de Gauss adaptada) –Método em alto nível Faz uma estimativa do tamanho do seguimento usando Quadratura de Gauss Faz estimativa do tamanho das duas metades do seguimento usando Quadratura de Gauss Testa com uma certa tolerância –Faz (ou não) novamente o procedimento com as metades Nota: existe o código em C no livro.

54 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Achando dado ) –A solução da função resulta no valor de para um dado comprimento de arco começando de –O comprimento de arco é uma função de estritamente crescente A solução é única, devido ao comprimento de não ser igualmente zero em uma integral Newton-Raphson pode ser usado para achar a raiz

55 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Achando dado ) –Newton-Raphson onde é e é a função que calcula o valor paramétrico de um ponto em uma curva paramétrica (pode ser calculada usando as tabelas) e é

56 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Achando dado ) –Problemas Alguns dos podem não está na curva –Pode fazer com que todos os próximos elementos sejam indefinidos –A binary subdivision pode ser utilizada »Achado tal que »Procura-se na tabela de subdivisão os valores e tal que, assim »Usa-se Newton-Raphson nesse subintervalo

57 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Achando dado ) –Problemas pode ser zero ou próximo em alguns pontos da curva –Causaria uma divisão por zero –Causado quando dois ou mais pontos de controle são colocados no mesmo lugar –Pode ser detectado calculando a derivada de e usado a binary subdivision

58 Controlando o movimento de um ponto sobre uma curva Calculando o comprimento de arco (Achando dado ) –O chute inicial é feito interpolando entre os dois pontos extremos –Newton-Raphson necessita do calculo da integral do comprimento de arco em cada passo Quadratura de Gauss adaptativo fica desnecessária Aumenta a rapidez do algoritmo –Esses cálculos são independentes do tipo de curva

59 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –Definições da função de controle de velocidade Entrada: –valor paramétrico tempo Saída: –distância / comprimento de arco Pode ser feito depois da curva ser parametrizada pelo comprimento de arco –Onde o comprimento de arco é normalizado

60 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –A velocidade pode ser controlada com a variação do valor do comprimento de arco Exemplo: –A curva é linear –O parâmetro de comprimento de arco é controlado por uma função cúbica em função do tempo »Tendo »Sendo a curva parametrizada e normalizada pelo comprimento de arco »Ease-in/Ease-out é feito usando »Fazendo variar uniformemente

61 Controlando o movimento de um ponto sobre uma curva Controle de velocidade

62 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –Pode ser especificado de diferentes maneiras Desenhada pelo usuário Analiticamente Deixando o usuário especificar a curva de velocidade ou aceleração –Mas o resultado é uma função distância/tempo –Conclusão A curva diz “para onde ir” A função distância tempo diz “quando”

63 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –Juntando tudo aprendido Em um dado tempo indica a distância a ser percorrida na curva, desde o seu início até o tempo A tabela de comprimento de arco pode ser usada para achar o valor paramétrico Assim o ponto na curva pode ser calculado por

64 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –Juntando tudo aprendido O que nos leva

65 Controlando o movimento de um ponto sobre uma curva Controle de velocidade –Opções adicionais (restrições) Função distância/tempo... –deve que ser monotônica em –deve que ser continua –pode ser normalizada (facilita o reuso)

66 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Definição: Movimento que começa e termina parado Não existe ‘pulo’ na velocidade –Continuidade de primeira ordem Pode ou não ter velocidade constante no meio A função será referida como – varia uniformemente

67 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Interpolação do seno É uma maneira fácil de conseguir ease-in/ease-out Proporciona mudança suave na aceleração Usa a curva seno de a –Mapeia-se o domínio de a, entre e –Mapeia-se o alcance de a, entre e

68 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Interpolação do seno

69 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Usando pedaços de senoidal para acelerar e desacelerar Parte da função pode ser velocidade constante As velocidades na aceleração e desaceleração são construídas com uma parte da função seno –Tomar cuidado com as tangentes para ter continuidade de primeira ordem

70 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Usando pedaços de senoidal para acelerar e desacelerar Construção da função –O usuário entra com os tempos » : até onde haverá aceleração » : a partir de onde haverá desaceleração –Primeira parte »Parte da função seno: –Segunda parte »Uma reta inclinada com um ângulo de 45º –Terceira parte »Parte da função seno:

71 Controlando o movimento de um ponto sobre uma curva

72 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Usando pedaços de senoidal para acelerar e desacelerar Função normalizada

73 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Função polinomial cúbica Usado para aproximar de uma senoidal Evita o uso de funções transcendentais –Função que não pode ser expressa algebricamente As tangentes do começo e fim são zero Sem velocidade constante

74 Controlando o movimento de um ponto sobre uma curva

75 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Evita o uso de funções transcendentais Pode ter velocidade constante Método –É feita uma suposição da aceleração, assim estabelece uma forma básica da curva velocidade/tempo –O usuário entra com alguns parâmetros para especificar a curva velocidade/tempo –A função distância/tempo é resultado da integração dessa curva

76 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Exemplo 1 –Sem aceleração –Velocidade constante (normalizada)

77 Controlando o movimento de um ponto sobre uma curva

78 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Exemplo 2 –Aceleração constante no começo –Sem aceleração no meio –Desaceleração constante no final –Começa e termina parado »Velocidade zero no começo e fim »A área abaixo de tem que ser igual a área acima de »Os valores da aceleração e desaceleração não precisam ser iguais

79 Controlando o movimento de um ponto sobre uma curva

80 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Exemplo 2 –Três das quatro variáveis podem ser especificadas pelo usuário » –A função de velocidade é conseguida integrando a função de aceleração »A constante adicionada pela integração é zero » » » »

81 Controlando o movimento de um ponto sobre uma curva

82 Controlando o movimento de um ponto sobre uma curva Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Exemplo 2 –A velocidade constante depende da distancia total percorrida durante o tempo total –A velocidade tem que ser igual as áreas abaixo e acima de e –A distancia total tem que ser igual a área abaixo da curva de velocidade

83 Ease-in/Ease-out –Aceleração constante: Ease-in/Ease-out parabólico Exemplo 3 –Pode-se especificar somente a curva de velocidade/tempo –O usuário pode especificar duas das três variáveis » –Exemplo: caso o usuário especifique os tempos –A função da distância é conseguida integrando a função de aceleração »A constante adicionada pela integração é zero 3.2 Controlando o movimento de um ponto sobre uma curva » »

84 Controlando o movimento de um ponto sobre uma curva

85 Ease-in/Ease-out –Conclusão O método usando a função seno é mais simples As funções aceleração/tempo e velocidade/tempo têm mais flexibilidade 3.2 Controlando o movimento de um ponto sobre uma curva

86 Funções gerais de distância/tempo –Depois que a distancia e o tempo total são dados, a velocidade média é fixada –A velocidade média tem que ser mantida mesmo que a curva de velocidade mude –O usuário pode definir a velocidade absoluta máxima ou inicial ou final A curva tem que se ajustar para manter a velocidade relativa –Pode fazer curvas indesejáveis –Pode gerar velocidades negativas 3.2 Controlando o movimento de um ponto sobre uma curva

87 Controlando o movimento de um ponto sobre uma curva

88 Funções gerais de distância/tempo –Pode-se trabalhar diretamente com a curva distância/tempo Começa no (0,0) Termina no (1,1) Tem que ser monotonicamente crescente Se for começar e terminar com velocidade zero –O declive da função no começo e fim deve ser zero Se não for parar no meio do caminho –Não pode ter declive zero no meio da função 3.2 Controlando o movimento de um ponto sobre uma curva

89 Controlando o movimento de um ponto sobre uma curva

90 Funções gerais de distância/tempo –Deve-se lembrar sempre que A curva espacial que define o caminho não depende das curvas de controle de velocidade Uma única curva de controle de velocidade poderia ser usada para incontáveis curvas espaciais –Fica mais fácil quando as curvas são normalizadas 3.2 Controlando o movimento de um ponto sobre uma curva

91 Funções gerais de distância/tempo –Definindo formalmente um problema Um movimento é especificado como uma sequência de restrições –Tempo –Posição –Velocidade –Aceleração Assim cada ponto é uma n-upla 3.2 Controlando o movimento de um ponto sobre uma curva

92 Funções gerais de distância/tempo –Definindo formalmente um problema Um problema de restrição de ordem zero é aquele que satisfaz o conjunto de duplas –Velocidade, aceleração e outras restrições são qualquer valor necessário para satisfazer a dupla »Pode fazer que não tenha continuidade na velocidade Um problema de restrição de ordem um: 3.2 Controlando o movimento de um ponto sobre uma curva

93 Controlando o movimento de um ponto sobre uma curva

94 Achando a curva para o par posição/tempo –Usuário especifica as restrições posição/tempo A curva espacial pode ser determinada diretamente Os pontos de controle da curva interpolada podem ser calculados 3.2 Controlando o movimento de um ponto sobre uma curva

95 Controlando o movimento de um ponto sobre uma curva

96 Achando a curva para o par posição/tempo –Exemplo com B-sline Restrições dadas onde Definição da B-spline –Ordem –Número de pontos de controle onde 3.2 Controlando o movimento de um ponto sobre uma curva

97 Achando a curva para o par posição/tempo –Exemplo com B-sline Definição da B-spline Matricialmente 3.2 Controlando o movimento de um ponto sobre uma curva

98 Achando a curva para o par posição/tempo –Exemplo com B-sline Definição da B-spline Matricialmente onde é o vetor dos pontos dados, é o vetor dos pontos de controle e é a matriz de funções básicas calculadas nos tempos dados 3.2 Controlando o movimento de um ponto sobre uma curva

99 Achando a curva para o par posição/tempo –Exemplo com B-sline Definição da B-spline –Se o número de pontos dados é o mesmo de pontos de controles desconhecidos » é quadrada »Resolução 3.2 Controlando o movimento de um ponto sobre uma curva

100 Achando a curva para o par posição/tempo –Exemplo com B-sline A curva resultante é suave –Porem pode ter ondulações indesejadas –Solução: especificar menos pontos de controle »Mas não fica quadrada »Resolução 3.2 Controlando o movimento de um ponto sobre uma curva

101 Interpolação de orientações

102 Interpolação de orientações Em uma animação tanto a posição como a rotação do objeto mudam com o tempo –Como mudar a orientação de uma forma suave? A orientação também pode ser interpolada

103 Interpolação de orientações

104 Interpolação de orientações

105 Interpolação de orientações

106 Interpolação de orientações

107 Interpolação de orientações

108 Interpolação de orientações Interpolando Quaternions –A escolha do uso de quaternions é: Pode ser facilmente interpolado Evita a condição de gimbal lock –Serão utilizados quaternions unitários

109 Interpolação de orientações Interpolando Quaternions –Problema Dados: –Temos a orientação do avião num ponto 1 –Temos a orientação do avião num ponto 2 Objetivo: –Fazer uma animação suave do avião entre o ponto 1 e 2

110 Interpolação de orientações Interpolando Quaternions –Solução Um quaternion no ponto 1 e outro no ponto 2 A interpolação entre eles gera uma boa animação entre as orientações 1 e 2 Quaternions (s, x, y, z) podem ser interpolados facilmente –s = (1 – t).s0 + t.s1 –x = (1 – t).x0 + t.x1 –y = (1 – t).y0 + t.y1 –z = (1 – t).z0 + t.z1

111 Interpolação de orientações Interpolando Quaternions –Solução Um quaternion no ponto 1 e outro no ponto 2 A interpolação entre eles gera uma boa animação entre as orientações 1 e 2 Quaternions (s, x, y, z) podem ser interpolados facilmente –s = (1 – t).s0 + t.s1 –x = (1 – t).x0 + t.x1 –y = (1 – t).y0 + t.y1 –z = (1 – t).z0 + t.z1

112 Interpolação de orientações Interpolando Quaternions –Porém, a animação não gera uma velocidade angular constante Pontos interpolados linearmente

113 Interpolação de orientações Interpolando Quaternions –Porém, a animação não gera uma velocidade angular constante Pontos interpolados projetados no círculo

114 Interpolação de orientações Interpolando Quaternions –Porém, a animação não gera uma velocidade angular constante Pontos interpolados projetados no círculo Os passos não são todos iguais

115 Interpolação de orientações Interpolando Quaternions –Notar que: Alguns passos na animação da rotação são maiores do que outros

116 Interpolação de orientações Interpolando Quaternions –Notar que: Alguns passos na animação da rotação são maiores do que outros

117 Interpolação de orientações Interpolando Quaternion –Notar que: Alguns passos na animação da rotação são maiores do que outros

118 Interpolação de orientações Interpolando Quaternions –Orientação Um quaternion e sua negação representam a mesma orientação Assim, uma interpolação entre e pode ser realizado de para –Diferença: um caminho será maior que o outro –O menor é o que será utilizado –Para descobrir basta saber o cosseno do angulo entre os quaternions

119 Interpolação de orientações Interpolando Quaternion –Isso pode ser evitado se for usado uma interpolação linear esférica Antes: –primitiva LERP (linear interpolation) Solução: –primitiva SLERP (spherical linear interpolation)

120 Interpolação de orientações Interpolando Quaternion –Ao invés de usarmos a fórmula do LERP: –Usaremos: –Onde os coeficientes (a) e (b) são: onde

121 Interpolação de orientações Interpolando Quaternion –Em resumo: –Porém, ainda possui descontinuidade de primeira ordem

122 Interpolação de orientações Interpolando Quaternion –Questão da continuidade Quando o avião passa por vários pontos, a rotação pode mudar bruscamente

123 Interpolação de orientações Interpolando Quaternion –Questão da continuidade Não há continuidade de primeira ordem Continuidade C0 (Compartilha Posição) Continuidade C1 (Compartilha Posição + Tangente)

124 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica

125 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1

126 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1

127 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1

128 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1

129 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1 AnAn

130 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1 AnAn

131 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1 AnAn

132 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn P n-1 P n+1 AnAn BnBn

133 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn AnAn BnBn Pontos de Controle: “Before” e “After”

134 Interpolação de orientações Interpolando Quaternion –Solução: Interpolação cúbica PnPn AnAn BnBn Pontos de Controle: “Before” e “After” Com a rotina para calcular os pontos de controle, podemos montar uma curva cúbica Bézier

135 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

136 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas Ponto em t = 0.1

137 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

138 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

139 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

140 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

141 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

142 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

143 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

144 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

145 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas

146 Interpolação de orientações Interpolando Quaternion –Casteljau: montando uma curva cúbica Bézier em etapas Ponto da curva p/ t = 0.1

147 Interpolação de orientações p1 = lerp( Pn, An, t ) p2 = lerp( An, Bn+1, t ) p3 = lerp( Bn+1, Pn+1, t ) p12 = lerp( p1, p2, t ) p23 = lerp( p2, p3, t ) p = lerp( p12, p23, t ) PnPn B n+1 P n+1 AnAn

148 Interpolação de orientações Interpolando Quaternion –Para trabalhar com o algoritmo de Casteljau com quaternions e interpolação linear esférica: Basta usarmos a primitiva SLERP que foi desenvolvida anteriormente para Quaternions QnQn B n+1 Q n+1 AnAn

149 Interpolação de orientações Interpolando Quaternion –Para trabalhar com o algoritmo de Casteljau com quaternions e interpolação linear esférica: Basta usarmos a primitiva SLERP que foi desenvolvida anteriormente para Quaternions q1 = slerp( Qn, An, t ) q2 = slerp( An, Bn+1, t ) q3 = slerp( Bn+1, Qn+1, t ) q12 = slerp( q1, q2, t ) q23 = slerp( q2, q3, t ) q = slerp( q12, q23, t )

150 Trabalhando com caminhos

151 Trabalhando com caminhos Seguindo o caminho –Para um objeto/camera é necessário: Mover-se ao longo do caminho –Curva parametrizada pelo comprimento de arco –Velocidade sendo controlada por ease-in/ease-out Mudar a orientação Outos calculos a serem feitos –Se o caminho for digitalizado é necessário uma suavização –Se o caminho for em cima da superfície de um objeto –Se precisar evitar outros objetos

152 Trabalhando com caminhos Orientação pelo caminho –O objeto é definido em coordenadas locais Onde a origem do sistema de coordenadas é em um ponto,, sobre a curva, A direção onde o objeto está “olhando”: O vetor up (cima): O é perpendicular aos outros dois

153 Trabalhando com caminhos Orientação pelo caminho –Há várias formas de tratar a orientação pelo caminho Muda de acordo como são colocados os eixos do sistema local

154 Trabalhando com caminhos Orientação pelo caminho –Uso de Frenet Frame Sistema de coordenadas local definido de acordo com a tangente e curvatura da curva Nota: Para conseguir foi usada a “regra de mão esquerda”

155 Trabalhando com caminhos

156 Trabalhando com caminhos Orientação pelo caminho –Uso de Frenet Frame (Problemas) Não existe nenhum conceito de o que é “cima” Se o seguimento não tiver curvatura,, o frenet frame fica indefinido –Solução: interpolar o vetores das pontas »Muda somente a rotação por volta de »O angulo entre os a posição dos vetores pode ser conseguida

157 Trabalhando com caminhos

158 Trabalhando com caminhos Orientação pelo caminho –Uso de Frenet Frame (Problemas) Descontinuidade na curvatura –Fará com que o vetor mude bruscamente sua orientação

159 Trabalhando com caminhos Orientação pelo caminho –Uso de Frenet Frame (Problemas) O movimento resultante parecerá não natural Nem sempre usar a tangente é desejado –Não parece corresponder a direção “para onde” se está olhando »O natural para quem está andando de carro, por exemplo, é olhar mais adiante na curva Mesmo que a curva pareça suave, o vetor up pode mudar descontroladamente –Inclusive de cabeça para baixo O vetor pode ser usado para indicar a inclinação em uma curva

160 Trabalhando com caminhos Orientação pelo caminho –Seguindo o caminho da câmera (Modelo 1) É definido o “centro de interesse (COI)” –Algum ponto fixo no cenário, ou algum objeto contido nele »Mas não pode passar perto do objeto –É um bom método quando a câmera é usada para circular a área de alguma ação onde a atenção deve estar focada O vetor up ficaria ligado ao up das coordenadas de mundo –Ou pode ser definido pelo usuário

161 Trabalhando com caminhos Orientação pelo caminho –Seguindo o caminho da câmera (Modelo 2) É definido o centro de interesse (COI) usando um valor paramétrico delta –Sendo a posição da câmera, é o COI »Para isso a função tem que estar reparametrizada em função da distância –No final da curva pode ser usado a tangente

162 Trabalhando com caminhos Orientação pelo caminho –Seguindo o caminho da câmera (Modelo 2) A qualidade pode ser ruim, por atualizar muitas vezes o COI –É feito uma média para que só alguns pontos sejam escolhidos para ser o COI »O número de pontos depende do efeito que se quer dar e do estilo do caminho »Se os pontos ficarem muito perto, ainda pode continuar com qualidade ruim »Se os pontos forem muito espaçado, parecerá muito estático

163 Trabalhando com caminhos Orientação pelo caminho –Seguindo o caminho da câmera (Modelo 3) Fazer uma função para o COI –Mais trabalhoso –Mais flexibilidade Também fazer uma função para o vetor up

164 Trabalhando com caminhos Orientação pelo caminho –Seguindo o caminho da câmera (Modelo 4) Fixar o COI em algum ponto fixo por um certo tempo Mudar para outro ponto usando interpolação linear espacial e a interpolação temporal ease- in/ease-out O vetor up, pode ser o padrão das coordenadas de mundo

165 Trabalhando com caminhos Suavizando o caminho –Usado para quando a curva do caminho foi digitalizada –Com o intuito de deixar a curva suave –Curva a ser usada como exemplo:

166 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação linear dos valores adjacentes Para cada é feita uma média:

167 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação linear dos valores adjacentes A curva tende a diminuir suas concavidades a cada repetição do método

168 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes Preserva a curvatura Método –Os pontos adjacentes podem ser usados para ajustar uma curva cúbica –É calculado o ponto o ponto central dessa nova curva –Esse novo ponto é usado para ser feita uma média com o ponto original

169 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes Função cúbica

170 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes O ponto em é calculado

171 Trabalhando com caminhos

172 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes Para o final e começo da curva é um método parecido

173 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes Para o final e começo da curva é um método parecido –Calculando par ao começo da curva:

174 Trabalhando com caminhos

175 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes O primeiro e ultimo pontos podem continuar os mesmos, ou então:

176 Trabalhando com caminhos Suavizando o caminho –Suavizando com interpolação cúbica dos valores adjacentes Resultados:

177 Trabalhando com caminhos Suavizando o caminho –Suavizando com kernels de convolução Usado quando curva pode ser vista como uma função Onde é igualmente espaçados

178 Trabalhando com caminhos Suavizando o caminho –Suavizando com kernels de convolução Os dados tem que ser tratados como uma função step

179 Trabalhando com caminhos Suavizando o caminho –Suavizando com kernels de convolução Atributos do kernel de suavização –É centrado no zero –É simétrico –É finita –A área debaixo da curva é igual a um

180 Trabalhando com caminhos

181 Trabalhando com caminhos Suavizando o caminho –Suavizando com kernels de convolução A convolução é dada por: –Pode ser calculada analiticamente ou aproximada –Pontos adicionais podem ser calculados –Primeiro e ultimo ponto normalmente são fixos

182 Trabalhando com caminhos

183 Trabalhando com caminhos

184 Trabalhando com caminhos Suavizando o caminho –Suavizando por uma aproximação de B-spline Usado quando uma aproximação da curva é suficiente Os pontos de controle podem ser gerados baseados em pontos selecionados O resultado será uma suavizado, mas não passará pelos pontos originais

185 Trabalhando com caminhos Determinando um caminho pela superfície –O ponto de inicio e fim são conhecidos –É caro descobrir o menor caminho entre eles Mas quase nunca há a necessidade de conseguir o mais curto Existem várias alternativas para se conseguir caminhos quase ótimos

186 Trabalhando com caminhos Determinando um caminho pela superfície –Sendo o objeto uma malha poligonal Determina-se uma plano que contem os dois pontos –Sendo perpendicular a superfície o máximo possível »Faz-se uma média da normal dos dois pontos A interseção entre o plano e a malha será o caminho entre os pontos

187 Trabalhando com caminhos

188 Trabalhando com caminhos Determinando um caminho pela superfície –Sendo a superfície de ordem superior Os pontos de inicio e fim são definidos nas coordenadas e O caminho pode ser a curva definida no espaço paramétrico –Interpolando os valores e

189 Trabalhando com caminhos Determinando um caminho pela superfície –Sendo a malha de superfície complexa Pode construir um caminho pelas arestas com um algoritmo guloso Traçar uma reta, r, entre o vértice corrente, v, e o destino Para cada aresta, a, de v Consiga o cosseno entre a e r Adicione a aresta com o cosseno ao caminho Esse algoritmo pode ser melhorado –Podendo cortar o caminho pelo polígono »Usando um ponto ao longo da aresta

190 Trabalhando com caminhos Determinando um caminho pela superfície –Se o caminho por de descida (downhill) Encontrar o vetor de descida –Usando a normal da face e o vetor up global

191 Trabalhando com caminhos Encontrando o caminho –Especificações Sem colisão Ambiente arbitrário –É uma tarefa difícil

192 Trabalhando com caminhos Encontrando o caminho –Casos Simples –O ambiente está parado Manejável –Os obstáculos se movem –Mas seus caminhos são conhecidos Muito difícil –O caminho dos obstáculos não são conhecidos Complicações a mais –O objeto a ser movido »Não é um ponto »Tem uma forma complexa »Pode ter uma rotação arbitrária

193 Trabalhando com caminhos Encontrando o caminho –Ambiente parado Dividir o problema em subproblemas –Acrescenta pontos de caminho (way point) »Pontos onde o caminho deve passar Se o objeto for grande –Se poder ser aproximado por uma esfera »Os obstáculos são aumentados pelo tamanho dessa esfera »O problema muda: Achar um caminho para um ponto, em um ambiente aumentado –Caso mais complexo (robótica) »Sua orientação tem que ser modificada

194 Trabalhando com caminhos Encontrando o caminho –Obstáculos se movendo É feito um caminho usando os obstáculos estáticos –O movimento por esse caminho pode ser usado para desviar dos obstáculos se movendo »Não se tem garantia que funcione Se os movimentos não forem desordenados –Pode-se fazer uso de um algoritmo guloso para desviar de um obstáculo por vez –Assume-se que o movimento é conhecido »Se não, é previsível


Carregar ppt "Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica Departamento de Computação UFC."

Apresentações semelhantes


Anúncios Google