animação por computador capítulo 3 interpolando valores crab – grupo de computação gráfica...

Post on 21-Apr-2015

110 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related