Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica...
Transcript of Animação por Computador Capítulo 3 Interpolando Valores CRAb – Grupo de Computação Gráfica...
Animação por Computador
Capítulo 3Interpolando Valores
CRAb – Grupo de Computação Gráfica
Departamento de ComputaçãoUFC
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
3.1 Interpolação
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
5
3.1 Interpolação
• Geralmente guardam-se parâmetros associados a um keyframe
• Parâmetro a ser interpolado:– Coordenada de um objeto– Ângulo da articulação de um robô– Quaisquer outros parâmetros usados
na manipulação e visualização de elementos gráficos
6
3.1 Interpolação
• Exemplo
(-5, 0, 0)Frame 22
(5, 0, 0)Frame 67
(5, 10, 0)Frame 80
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
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
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
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
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
12
3.1 Interpolação
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
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
15
3.1 Interpolação
3.2 Controlando o movimento de um ponto
sobre uma curva
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.
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
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
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
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
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(
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
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
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
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
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
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
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(
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
)(
)()(
)(
)(
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
32
3.2 Controlando o movimento de um ponto sobre uma curva
• 3.2.1 Calculando o comprimento de arco (Forward Differencing)– Exemplo
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
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
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
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
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
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 '
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
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
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
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
43
3.2 Controlando o movimento de um ponto sobre uma curva
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
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
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
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
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 )()(
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
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
)(
)('))(()(
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
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
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.
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(
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/
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
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
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
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
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
61
3.2 Controlando o movimento de um ponto sobre uma curva
• 3.2.2 Controle de velocidade
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
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
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
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
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
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
68
3.2 Controlando o movimento de um ponto sobre uma curva
• 3.2.3 Ease-in/Ease-out– Interpolação do seno
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
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 ,
71
3.2 Controlando o movimento de um ponto sobre uma curva
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
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(
74
3.2 Controlando o movimento de um ponto sobre uma curva
23 32 ttt )ease(
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
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
_
_
77
3.2 Controlando o movimento de um ponto sobre uma curva
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
79
3.2 Controlando o movimento de um ponto sobre uma curva
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» »
81
3.2 Controlando o movimento de um ponto sobre uma curva
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
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
84
3.2 Controlando o movimento de um ponto sobre uma curva
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
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
87
3.2 Controlando o movimento de um ponto sobre uma curva
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
89
3.2 Controlando o movimento de um ponto sobre uma curva
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
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
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 ,,
93
3.2 Controlando o movimento de um ponto sobre uma curva
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
95
3.2 Controlando o movimento de um ponto sobre uma curva
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 )()( ,
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
)(...)()(
...
)(...)()(
)(...)()(
,,,
,,,
,,,
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
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
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
101
3.3 Interpolação de orientações
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
103
3.3 Interpolação de orientações
104
3.3 Interpolação de orientações
105
3.3 Interpolação de orientações
106
3.3 Interpolação de orientações
107
3.3 Interpolação de orientações
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
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
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
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
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
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
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
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
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
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
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(
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)
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
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(()(
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
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)
124
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica
125
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica
Pn
Pn-1 Pn+1
126
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica
Pn
Pn-1 Pn+1
127
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica
Pn
Pn-1 Pn+1
128
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Solução: Interpolação cúbica
Pn
Pn-1 Pn+1
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
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
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
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
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”
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
135
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
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
137
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
138
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
139
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
140
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
141
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
142
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
143
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
144
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
145
3.3 Interpolação de orientações
• 3.3.1 Interpolando Quaternion – Casteljau: montando uma curva
cúbica Bézier em etapas
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
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
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
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 )
150
3.4 Trabalhando com caminhos
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
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
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
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
155
3.4 Trabalhando com caminhos
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
157
3.4 Trabalhando com caminhos
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
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
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
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
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
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(
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
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:
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'
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
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
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(
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
171
3.4 Trabalhando com caminhos
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(
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
174
3.4 Trabalhando com caminhos
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
176
3.4 Trabalhando com caminhos
• 3.4.3 Suavizando o caminho– Suavizando com interpolação cúbica
dos valores adjacentes•Resultados:
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
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
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
180
3.4 Trabalhando com caminhos
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(
182
3.4 Trabalhando com caminhos
183
3.4 Trabalhando com caminhos
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
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
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
187
3.4 Trabalhando com caminhos
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
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
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
191
3.4 Trabalhando com caminhos
• 3.4.5 Encontrando o caminho– Especificações
•Sem colisão•Ambiente arbitrário
– É uma tarefa difícil
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
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
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