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

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

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

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

Animação por Computador

Capítulo 3Interpolando Valores

CRAb – Grupo de Computação Gráfica

Departamento de ComputaçãoUFC

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

2

Sumário do Capítulo 3

3.1 Interpolação3.2 Controlando o movimento de um

ponto sobre uma curva3.3 Interpolação de orientações3.4 Trabalhando com caminhos

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

3.1 Interpolação

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

4

3.1 Interpolação

• 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

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

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

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

6

3.1 Interpolação

• Exemplo

(-5, 0, 0)Frame 22

(5, 0, 0)Frame 67

(5, 10, 0)Frame 80

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

7

3.1 Interpolação

• 3.1.1 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

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

8

3.1 Interpolação

• 3.1.1 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

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

9

3.1 Interpolação

• 3.1.1 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

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

10

3.1 Interpolação

• 3.1.1 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

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

11

3.1 Interpolação

• 3.1.1 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

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

12

3.1 Interpolação

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

13

3.1 Interpolação

• 3.1.1 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

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

14

3.1 Interpolação

• 3.1.1 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

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

15

3.1 Interpolação

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

3.2 Controlando o movimento de um ponto

sobre uma curva

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

17

3.2 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.

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

18

3.2 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

)P(up

)P(uu ),,( ZYX

)(P uX x )(P uY y )(P uZ z

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

19

3.2 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

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

20

3.2 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

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

21

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 longode qualquer parte da curva

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

22

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

zzzz

yyyy

xxxx

ducubuau

ducubuau

ducubuau

dcubuauuuuu

23

23

23

23

)z(

)y(

)x(

))z(),y(),(x()P(

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

23

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

24

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

)S(us u

)S( ii us )S(t

)U(su

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

25

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

26

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco

– A função calcula a distância entre dois pontos, e , na curva

– Problemas a serem resolvidos1. Dados e achar2. Dado o comprimento e o parâmetro

, achar , tal que

),LENGTH( 21 uu

)P( 1u )P( 2u

1u 2u ),LENGTH( 21 uu

1us

2u suu ),LENGTH( 21

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

27

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

)S(t

)U()(S ssu 1

))P(U(s

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

28

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Analiticamente)– A distancia de a pode ser

achada pela integral:

onde:

)P( 1u )P( 2u

222

2

1

)/)(()/)(()/)((P/

))/)((),/)((),/)(((P/

P/

duudzduudyduudxdud

duudzduudyduudxdud

dududsu

u

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

29

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Analiticamente)– Para uma curva cúbica, temos:

– Para a coordenada x:

– Depois de elevar ao quadrado:EDuCuBuAu

cubuaduudx

dcubuauu

xxx

2334

2

23

23/)(

)P(

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

30

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Analiticamente)– Par um caso bidimensional, ficaria:

22

22

22

4

46

12

9

yx

yyxx

yxyyxx

yyxx

yx

ccE

cbcbD

bbcacaC

babaB

aaA

)(

)()(

)(

)(

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

31

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

32

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Forward Differencing)– Exemplo

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

33

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 ev é o valor paramétrico dado.:

).P( 730

730050

1550050

73050

..

..

..

vd

d

vi

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

34

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

).P( 730

14050

730

.

.

d

vi

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

35

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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:

).P( 730

9530

94409590700750

7007309440

11

.

)..()..(

)..(.

])[][(])[][(

])[(][

iGiG

iViV

iVviGs

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

36

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

37

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 é deque corresponde ao valor paramétrico

– Interpolando valores, temos:

750.720.

400.

4187504004508

3400 .)..(. u

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

38

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 é:

)P( 2u

s )P( 1u

1s

)P( 2u 's

1sss '

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

39

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

40

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

41

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

42

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

43

3.2 Controlando o movimento de um ponto sobre uma curva

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

44

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

]).P(,.,.[

],,[

000000T

psuT

].,.[ 0100L

T

L

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

45

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 finalonde o seu foi conseguido semelhante ao caso anterior

L

T

]).(),.(,.,).(),.(,.[..., 010101505050 PSPST

sinicials

s

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

46

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

L

L

].,.,.,.[ 01505000L

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

47

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

48

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Estimando numericamente a integral)– Quadratura de Gauss

•Normalmente definida

1

1 iii ufwuf )()(

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

49

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

)(tg ],[ bat

))(()( ufguh

],[ 11u

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

50

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 Calculando o comprimento de arco (Estimando numericamente a integral)– Quadratura de Gauss

•Fazendo substituição, temos:

2

1 abbuuft

)()(

1

1

1

1

22du

abuabg

ab

duufufgdttgb

a

)(

)('))(()(

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

51

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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.

1

1

234 EDuCuBuAu

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

52

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

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

53

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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.

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

54

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

su01 ),LENGTH( uus

us )P( 1u

u

duud /)P(

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

55

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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 é

su

)´(

)(

1

11

n

nnn pf

pfpp

f 011 ))U(,LENGTH( npus

)U( p

'f dud P/

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

56

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

su

np

..., 21 nn pp

u su ),LENGTH(0

is 1is 1 ii sss 1 ii uuu

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

57

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

su

dud P/

f

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

58

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.1 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

sus

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

59

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 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

t

s

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

60

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 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

10 t

)ease(ts t

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

61

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 Controle de velocidade

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

62

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 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”

)S(t

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

63

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 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

t

)S(tt

)U(su

)P(up

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

64

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 Controle de velocidade– Juntando tudo aprendido

• O que nos leva

)))P(U(S(tp

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

65

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.2 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)

t

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

66

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

)ease(ts t

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

67

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

2

0 1

1 1 0 1

2

12

tteases

sin)(

2

2 2

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

68

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 Ease-in/Ease-out– Interpolação do seno

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

69

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

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

70

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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:

1k

2k

02 ,

20 ,

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

71

3.2 Controlando o movimento de um ponto sobre uma curva

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

72

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 Ease-in/Ease-out– Usando pedaços de senoidal para

acelerar e desacelerar•Função normalizada

2

1

2

212

12

2

122

2

212

1

22

22121

2111

11

1

)(

sin

sin

)ease(

kkk

kf

tkfkkt

kkkk

ktkfktk

ktfkt

k

t

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

73

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

23 32 ttt )ease(

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

74

3.2 Controlando o movimento de um ponto sobre uma curva

23 32 ttt )ease(

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

75

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

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

76

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 Ease-in/Ease-out– Aceleração constante: Ease-in/Ease-

out parabólico•Exemplo 1

– Sem aceleração– Velocidade constante (normalizada)

11

10

totaltempo

totaldistânciav

_

_

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

77

3.2 Controlando o movimento de um ponto sobre uma curva

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

78

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

accdec

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

79

3.2 Controlando o movimento de um ponto sobre uma curva

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

80

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

accdec

1t

2t» »

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

81

3.2 Controlando o movimento de um ponto sobre uma curva

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

82

3.2 Controlando o movimento de um ponto sobre uma curva

• 3.2.3 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

acc dec

2012010 12

1

2

11 tvttvtv

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

83

• 3.2.3 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

1t» 0v 1t»

1

2

120

ttv

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

84

3.2 Controlando o movimento de um ponto sobre uma curva

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

85

• 3.2.3 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

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

86

• 3.2.4 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

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

87

3.2 Controlando o movimento de um ponto sobre uma curva

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

88

• 3.2.4 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

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

89

3.2 Controlando o movimento de um ponto sobre uma curva

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

90

• 3.2.4 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

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

91

• 3.2.4 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

,...,,, iiii avst

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

92

• 3.2.4 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

ii st ,

iii vst ,,

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

93

3.2 Controlando o movimento de um ponto sobre uma curva

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

94

• 3.2.5 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

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

95

3.2 Controlando o movimento de um ponto sobre uma curva

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

96

• 3.2.5 Achando a curva para o par posição/tempo– Exemplo com B-sline

•Restrições dadasonde

•Definição da B-spline– Ordem– Número de pontos de controle

onde

3.2 Controlando o movimento de um ponto sobre uma curva

),( ii tPji ...1

1nk

jnk 12

1

1

n

ikii tNBtP )()( ,

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

97

• 3.2.5 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

NBP

BtNBtNBtNP

BtNBtNBtNP

BtNBtNBtNP

njknjkjkj

nknkk

nknkk

112211

1212221212

1112121111

)(...)()(

...

)(...)()(

)(...)()(

,,,

,,,

,,,

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

98

• 3.2.5 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 controlee é a matriz de funções básicas calculadas nos tempos dados

3.2 Controlando o movimento de um ponto sobre uma curva

NBP

BtNBtNBtNP

BtNBtNBtNP

BtNBtNBtNP

njknjkjkj

nknkk

nknkk

112211

1212221212

1112121111

)(...)()(

...

)(...)()(

)(...)()(

,,,

,,,

,,,

P BN

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

99

• 3.2.5 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

jnk 12N

PNB 1

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

100

• 3.2.5 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

jnk 12

BPNNN

NBNPN

NBP

TT

TT

1][

N

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

101

3.3 Interpolação de orientações

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

102

3.3 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

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

103

3.3 Interpolação de orientações

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

104

3.3 Interpolação de orientações

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

105

3.3 Interpolação de orientações

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

106

3.3 Interpolação de orientações

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

107

3.3 Interpolação de orientações

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

108

3.3 Interpolação de orientações

• 3.3.1 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

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

109

3.3 Interpolação de orientações

• 3.3.1 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

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

110

3.3 Interpolação de orientações

• 3.3.1 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

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

111

3.3 Interpolação de orientações

• 3.3.1 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

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

112

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternions – Porém, a animação não gera uma

velocidade angular constante

Pontos interpoladoslinearmente

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

113

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternions – Porém, a animação não gera uma

velocidade angular constante

Pontos interpoladosprojetados no círculo

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

114

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternions – Porém, a animação não gera uma

velocidade angular constante

Pontos interpoladosprojetados no círculo

Os passos não são todos iguais

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

115

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternions – Notar que:

•Alguns passos na animação da rotação são maiores do que outros

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

116

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternions – Notar que:

•Alguns passos na animação da rotação são maiores do que outros

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

117

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Notar que:

•Alguns passos na animação da rotação são maiores do que outros

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

118

3.3 Interpolação de orientações

• 3.3.1 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

],[ vs ],[ vs

1q 2q

1q 2q

212121 vvssqq )cos(

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

119

3.3 Interpolação de orientações

• 3.3.1 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)

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

120

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Ao invés de usarmos a fórmula do LERP:

– Usaremos:

– Onde os coeficientes (a) e (b) são:

onde

101 ququuq )()()(

10 qbqauq )()()(

)sin(

)sin(

u

b)sin(

))sin((

u

a

1

)arccos( 21 qq

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

121

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Em resumo:

– Porém, ainda possui descontinuidade de primeira ordem

10

1q

uq

uuq

)sin(

)sin(

)sin(

))sin(()(

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

122

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Questão da continuidade

•Quando o avião passa por vários pontos, a rotação pode mudar bruscamente

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

123

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Questão da continuidade

•Não há continuidade de primeira ordem

Continuidade C0

(Compartilha Posição)

Continuidade C1

(Compartilha Posição + Tangente)

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

124

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

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

125

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

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

126

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

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

127

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

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

128

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

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

129

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

An

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

130

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

An

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

131

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

An

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

132

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

Pn-1 Pn+1

AnBn

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

133

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

AnBn

Pontos de Controle: “Before” e “After”

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

134

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica

Pn

AnBn

Pontos de Controle: “Before” e “After”

Com a rotina para calcular os pontos de controle, podemos

montar uma curva cúbica Bézier

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

135

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

136

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

Ponto em t = 0.1

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

137

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

138

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

139

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

140

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

141

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

142

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

143

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

144

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

145

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

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

146

3.3 Interpolação de orientações

• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva

cúbica Bézier em etapas

Ponto da curva p/ t = 0.1

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

147

3.3 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 )

Pn

Bn+1

Pn+1

An

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

148

3.3 Interpolação de orientações

• 3.3.1 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

Qn

Bn+1

Qn+1

An

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

149

3.3 Interpolação de orientações

• 3.3.1 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 )

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

150

3.4 Trabalhando com caminhos

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

151

3.4 Trabalhando com caminhos

• 3.4.1 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

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

152

3.4 Trabalhando com caminhos

• 3.4.2 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

),,( wvu

)P(sPOSweixo

ueixo veixo

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

153

3.4 Trabalhando com caminhos

• 3.4.2 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

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

154

3.4 Trabalhando com caminhos

• 3.4.2 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”

wuv

ssu

sw

)(P')('P'

)(P'

u

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

155

3.4 Trabalhando com caminhos

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

156

3.4 Trabalhando com caminhos

• 3.4.2 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

0)('P' s

w

)arccos( ji vv

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

157

3.4 Trabalhando com caminhos

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

158

3.4 Trabalhando com caminhos

• 3.4.2 Orientação pelo caminho– Uso de Frenet Frame (Problemas)

•Descontinuidade na curvatura– Fará com que o vetor mude bruscamente

sua orientaçãov

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

159

3.4 Trabalhando com caminhos

• 3.4.2 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

v

u

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

160

3.4 Trabalhando com caminhos

• 3.4.2 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

yeixo wuv

yeixowu

POSCOIw

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

161

3.4 Trabalhando com caminhos

• 3.4.2 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

)P(s )P( ss

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

162

3.4 Trabalhando com caminhos

• 3.4.2 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

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

163

3.4 Trabalhando com caminhos

• 3.4.2 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

)C(s

)U(s

wuv

sswu

ssw

))P()(U(

)P()C(

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

164

3.4 Trabalhando com caminhos

• 3.4.2 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

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

165

3.4 Trabalhando com caminhos

• 3.4.3 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:

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

166

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação linear

dos valores adjacentes•Para cada é feita uma média:ip

11

11

4

1

2

1

4

1

22

iii

iii

i ppp

ppp

p'

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

167

3.4 Trabalhando com caminhos

• 3.4.3 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

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

168

3.4 Trabalhando com caminhos

• 3.4.3 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

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

169

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica

dos valores adjacentes•Função cúbica

dcbap

dcbap

dcbap

dp

dcubuauu

i

i

i

i

1

4

3

16

9

64

27

4

3

4

1

16

1

64

1

4

1

0

2

1

1

2

23

P

P

P

P

)P(

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

170

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica

dos valores adjacentes•O ponto em é calculado2

1u

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

171

3.4 Trabalhando com caminhos

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

172

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica

dos valores adjacentes•Para o final e começo da curva é um

método parecido cbuauu 2)P(

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

173

3.4 Trabalhando com caminhos

• 3.4.3 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:

)(' 3021 3

1pppp

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

174

3.4 Trabalhando com caminhos

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

175

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica

dos valores adjacentes•O primeiro e ultimo pontos podem

continuar os mesmos, ou então:

)(' 2130 3 pppp

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

176

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica

dos valores adjacentes•Resultados:

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

177

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com kernels de

convolução•Usado quando curva pode ser vista como

uma função

Onde é igualmente espaçados

)( ii xfy

ix

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

178

3.4 Trabalhando com caminhos

• 3.4.3 Suavizando o caminho– Suavizando com kernels de

convolução•Os dados tem que ser tratados como uma

função step

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

179

3.4 Trabalhando com caminhos

• 3.4.3 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

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

180

3.4 Trabalhando com caminhos

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

181

3.4 Trabalhando com caminhos

• 3.4.3 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

s

s

duuguxfx )()()P(

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

182

3.4 Trabalhando com caminhos

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

183

3.4 Trabalhando com caminhos

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

184

3.4 Trabalhando com caminhos

• 3.4.3 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

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

185

3.4 Trabalhando com caminhos

• 3.4.4 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

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

186

3.4 Trabalhando com caminhos

• 3.4.4 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

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

187

3.4 Trabalhando com caminhos

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

188

3.4 Trabalhando com caminhos

• 3.4.4 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

u v

u v

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

189

3.4 Trabalhando com caminhos

• 3.4.4 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 vConsiga 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

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

190

3.4 Trabalhando com caminhos

• 3.4.4 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

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

191

3.4 Trabalhando com caminhos

• 3.4.5 Encontrando o caminho– Especificações

•Sem colisão•Ambiente arbitrário

– É uma tarefa difícil

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

192

3.4 Trabalhando com caminhos

• 3.4.5 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

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

193

3.4 Trabalhando com caminhos

• 3.4.5 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

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

194

3.4 Trabalhando com caminhos

• 3.4.5 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