animação por computador capítulo 3 interpolando valores
DESCRIPTION
Animação por Computador Capítulo 3 Interpolando Valores. CRAb – Grupo de Computação Gráfica Departamento de Computação UFC. Sumário do Capítulo 3. 3.1 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/1.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/2.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/3.jpg)
3.1 Interpolação
![Page 4: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/4.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/5.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/6.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/7.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/8.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/9.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/10.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/11.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/12.jpg)
12
3.1 Interpolação
![Page 13: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/13.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/14.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/15.jpg)
15
3.1 Interpolação
![Page 16: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/16.jpg)
3.2 Controlando o movimento de um ponto
sobre uma curva
![Page 17: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/17.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/18.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/19.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/20.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/21.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/22.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/23.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/24.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/25.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/26.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/27.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/28.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/29.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/30.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/31.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/32.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/33.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/34.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/35.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/36.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/37.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/38.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/39.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/40.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/41.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/42.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/43.jpg)
43
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 44: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/44.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/45.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/46.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/47.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/48.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/49.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/50.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/51.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/52.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/53.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/54.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/55.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/56.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/57.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/58.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/59.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/60.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/61.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/62.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/63.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/64.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/65.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/66.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/67.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/68.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/69.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/70.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/71.jpg)
71
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 72: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/72.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/73.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/74.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/75.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/76.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/77.jpg)
77
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 78: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/78.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/79.jpg)
79
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 80: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/80.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/81.jpg)
81
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 82: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/82.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/83.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/84.jpg)
84
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 85: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/85.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/86.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/87.jpg)
87
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 88: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/88.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/89.jpg)
89
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 90: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/90.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/91.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/92.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/93.jpg)
93
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 94: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/94.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/95.jpg)
95
3.2 Controlando o movimento de um ponto sobre uma curva
![Page 96: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/96.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/97.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/98.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/99.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/100.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/101.jpg)
101
3.3 Interpolação de orientações
![Page 102: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/102.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/103.jpg)
103
3.3 Interpolação de orientações
![Page 104: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/104.jpg)
104
3.3 Interpolação de orientações
![Page 105: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/105.jpg)
105
3.3 Interpolação de orientações
![Page 106: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/106.jpg)
106
3.3 Interpolação de orientações
![Page 107: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/107.jpg)
107
3.3 Interpolação de orientações
![Page 108: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/108.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/109.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/110.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/111.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/112.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/113.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/114.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/115.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/116.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/117.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/118.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/119.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/120.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/121.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/122.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/123.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/124.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/125.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/126.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/127.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/128.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/129.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/130.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/131.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/132.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/133.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/134.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/135.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/136.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/137.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/138.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/139.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/140.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/141.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/142.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/143.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/144.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/145.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/146.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/147.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/148.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/149.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/150.jpg)
150
3.4 Trabalhando com caminhos
![Page 151: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/151.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/152.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/153.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/154.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/155.jpg)
155
3.4 Trabalhando com caminhos
![Page 156: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/156.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/157.jpg)
157
3.4 Trabalhando com caminhos
![Page 158: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/158.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/159.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/160.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/161.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/162.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/163.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/164.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/165.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/166.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/167.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/168.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/169.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/170.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/171.jpg)
171
3.4 Trabalhando com caminhos
![Page 172: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/172.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/173.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/174.jpg)
174
3.4 Trabalhando com caminhos
![Page 175: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/175.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/176.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/177.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/178.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/179.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/180.jpg)
180
3.4 Trabalhando com caminhos
![Page 181: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/181.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/182.jpg)
182
3.4 Trabalhando com caminhos
![Page 183: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/183.jpg)
183
3.4 Trabalhando com caminhos
![Page 184: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/184.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/185.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/186.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/187.jpg)
187
3.4 Trabalhando com caminhos
![Page 188: Animação por Computador Capítulo 3 Interpolando Valores](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/188.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/189.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/190.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/191.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/192.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/193.jpg)
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](https://reader037.vdocuments.mx/reader037/viewer/2022103101/56814532550346895db1fb1b/html5/thumbnails/194.jpg)
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