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

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

Animação por Computador Capítulo 3 Interpolando Valores

Apresentações semelhantes


Apresentação em tema: "Animação por Computador Capítulo 3 Interpolando Valores"— Transcrição da apresentação:

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

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

3 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 4

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 5

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

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 7

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

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 9

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 10

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 11

12 3.1 Interpolação 12

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 13

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 14

15 3.1 Interpolação 15

16 3.2 Controlando o movimento de um ponto sobre uma curva
16

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

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 18

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 19

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 20

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 longo de qualquer parte da curva 21

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 22

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 nula no ponto mais alto Velocidade constante 23

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 24

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 25

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 resolvidos Dados e achar Dado o comprimento e o parâmetro , achar , tal que 26

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 27

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: 28

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: 29

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: 30

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 31

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

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 e v é o valor paramétrico dado.: 33

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 34

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: 35

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 36

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 é de que corresponde ao valor paramétrico Interpolando valores, temos: 37

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 é: 38

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 39

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 40

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 41

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 42

43 3.2 Controlando o movimento de um ponto sobre uma curva
43

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 44

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 final onde o seu foi conseguido semelhante ao caso anterior 45

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 46

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 47

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 48

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 49

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: 50

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

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 52

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

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 54

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 é 55

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 56

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 57

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 58

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 59

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 60

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

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” 62

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 63

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 64

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

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 66

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 67

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

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 69

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 70

71 3.2 Controlando o movimento de um ponto sobre uma curva
71

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 72

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 73

74 3.2 Controlando o movimento de um ponto sobre uma curva
74

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 75

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

77 3.2 Controlando o movimento de um ponto sobre uma curva
77

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 78

79 3.2 Controlando o movimento de um ponto sobre uma curva
79

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 80

81 3.2 Controlando o movimento de um ponto sobre uma curva
81

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 82

83 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 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 83

84 3.2 Controlando o movimento de um ponto sobre uma curva
84

85 3.2 Controlando o movimento de um ponto sobre uma curva
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 85

86 3.2 Controlando o movimento de um ponto sobre uma curva
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 86

87 3.2 Controlando o movimento de um ponto sobre uma curva
87

88 3.2 Controlando o movimento de um ponto sobre uma curva
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 88

89 3.2 Controlando o movimento de um ponto sobre uma curva
89

90 3.2 Controlando o movimento de um ponto sobre uma curva
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 90

91 3.2 Controlando o movimento de um ponto sobre uma curva
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 91

92 3.2 Controlando o movimento de um ponto sobre uma curva
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: 92

93 3.2 Controlando o movimento de um ponto sobre uma curva
93

94 3.2 Controlando o movimento de um ponto sobre uma curva
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 94

95 3.2 Controlando o movimento de um ponto sobre uma curva
95

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

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

98 3.2 Controlando o movimento de um ponto sobre uma curva
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 controle e é a matriz de funções básicas calculadas nos tempos dados 98

99 3.2 Controlando o movimento de um ponto sobre uma curva
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 99

100 3.2 Controlando o movimento de um ponto sobre uma curva
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 100

101 3.3 Interpolação de orientações
101

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 102

103 3.3 Interpolação de orientações
103

104 3.3 Interpolação de orientações
104

105 3.3 Interpolação de orientações
105

106 3.3 Interpolação de orientações
106

107 3.3 Interpolação de orientações
107

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 108

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 109

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 110

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 111

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 interpolados linearmente 112

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 interpolados projetados no círculo 113

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 interpolados projetados no círculo Os passos não são todos iguais 114

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 115

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 116

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 117

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 118

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

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 120

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

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 122

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 Continuidade C1 (Compartilha Posição) (Compartilha Posição + Tangente) 123

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

125 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Pn Pn-1 Pn+1 125

126 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Pn Pn-1 Pn+1 126

127 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Pn Pn-1 Pn+1 127

128 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Pn Pn-1 Pn+1 128

129 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica An Pn Pn-1 Pn+1 129

130 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica An Pn Pn-1 Pn+1 130

131 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica An Pn Pn-1 Pn+1 131

132 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Bn An Pn Pn-1 Pn+1 132

133 3.3 Interpolação de orientações
3.3.1 Interpolando Quaternion Solução: Interpolação cúbica Bn An Pn Pontos de Controle: “Before” e “After” 133

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

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

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 136

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

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

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

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

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

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

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

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

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

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 146

147 3.3 Interpolação de orientações
Bn+1 An Pn+1 Pn 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 ) 147

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 Bn+1 An Qn+1 Qn 148

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

150 3.4 Trabalhando com caminhos
150

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 151

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 152

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 153

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” 154

155 3.4 Trabalhando com caminhos
155

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 156

157 3.4 Trabalhando com caminhos
157

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ção 158

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 159

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 160

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 161

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 162

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 163

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 164

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: 165

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: 166

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 167

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 168

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 169

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

171 3.4 Trabalhando com caminhos
171

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 172

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: 173

174 3.4 Trabalhando com caminhos
174

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: 175

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

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 177

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 178

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 179

180 3.4 Trabalhando com caminhos
180

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 181

182 3.4 Trabalhando com caminhos
182

183 3.4 Trabalhando com caminhos
183

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 184

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 185

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 186

187 3.4 Trabalhando com caminhos
187

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 188

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 v Consiga o cosseno entre a e r Adicione a aresta com o cosseno ao caminho Esse algoritmo pode ser melhorado Podendo cortar o caminho pelo polígono Usando um ponto ao longo da aresta 189

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 190

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

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 192

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 193

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 194


Carregar ppt "Animação por Computador Capítulo 3 Interpolando Valores"

Apresentações semelhantes


Anúncios Google