Interpolação Interpolação Princípio Alterar a posição espacial de um ponto de forma incremental Questões fundamentais Qual a função de interpolação mais adaptada para cada situação? Como parametrizar as funções de interpolação com base na distância percorrida? Como assegurar o controlo da posição ao longo do tempo? Definidos os key-frames, como gerar os in-betweens da maneira mais eficaz? 1
Interpolação Existem 3 tipos de equações: Equações explícitas: y = f(x) Adequadas para a geração de novos pontos Equações implícitas: f(x,y) = 0 Boas para conservar a consistência Equações paramétricas: x = f(t) e y = g(t) Adequadas para gerar sequências de pontos Classificadas de acordo com o grau dos seus termos: linear (grau 1), quadrática (grau 2), cúbica (grau 3), transcendental (sin, cos,...) Interpolação Representação paramétrica: Aproximação por polinômios que definem partes de uma curva ou superfície (piecewise polynomials) Parâmetro (t) é usado para percorrer a curva x(t) = fx(t) y(t) = fy(t) z(t) = fz(t) 2
Interpolação Representação paramétrica Exemplo: círculo x(t) = r. sin(t) y(t) = r. cos(t) 0 <= t < 2π Interpolação linear Interpolação 3
Interpolação Equação da curva Bézier 4 pontos C3(t) = (1-t) 3 * P1 + 3 * t * (1-t) 2 * P2 + 3 * t2 * (1-t) * P3 + t3 * P4 Interpolação Escolha da função adequada Algumas técnicas Interpolação linear Hermite Catmull-Rom Bézier, etc. Como escolher a função adequada? Interpolação ou aproximação Complexidade Continuidade Controlo local ou controlo global 4
Interpolação A função adequada Interpolação ou Aproximação Interpolação: Hermite, Catmull-Rom spline Aproximação: Bézier, curvas B-spline A função escolhida Interpolação Influi na eficiência do algoritmo Funções polinomiais de ordem maior que cúbica não oferecem vantagens que compensem o seu uso (em termos de precisão e no caso geral) 5
A função escolhida Continuidade Interpolação Propriedade muito importante Métodos adequados: Hermite Catmull-Rom Blending de parábolas Curvas Bézier cúbicas etc. Interpolação A função escolhida Controlo local ou controlo global? 6
Interpolação A função escolhida Métodos mais usados Bézier Catmull-Rom spline Curva passa por todos os pontos Continuidade tangencial Interpolação Métodos mais usados Exemplo: http://www.mvps.org/directx/articles/catmull/ 7
Movimento ao longo de uma curva A que velocidade deve uma curva ser percorrida? O animador deve ser capaz de controlar a velocidade para poder produzir os resultados desejados Primeiro passo Fornecer ao animador métodos para percorrer uma curva em velocidade constante Segundo passo Permitir aceleração e desaceleração Movimento ao longo de uma curva Dada uma função de interpolação P(u) que produz para um dado u um valor p = P(u) Variação de u constante, não significa variação de p constante 8
Movimento ao longo de uma curva Como manter a velocidade constante? Para manter a variação de p constante, a função de interpolação deve ser parametrizada de acordo com o comprimento do arco (distância total) Movimento ao longo de uma curva Como calcular o comprimento do arco? Opção 1: criar uma simplificação da curva e assumir o comprimento do arco como a soma das distâncias lineares entre os pontos de amostragem Opção 2: usar quadratura Gaussiana para estimar numericamente o comprimento do arco Opção 1 e 2, pode-se usar subdivisão adaptativa para controle de erros Opção 3: calcula o comprimento do arco de forma analítica Não é possível para vários tipos de curvas 9
Movimento ao longo de uma curva Subdivisão adaptativa Movimento ao longo de uma curva Cálculo do comprimento do arco Função de interpolação curva no espaço Caminho do objecto Definido por um polinomio do terceiro grau Movimento ao longo de uma curva P(u) = au 3 + bu 2 + cu + d 10
Movimento ao longo de uma curva Cálculo do comprimento do arco Curva que define o caminho pode ser uma qualquer (e.g. Bézier) Qual a função que relaciona o tempo com a posição ao longo da curva? Dois problemas a resolver: Dados dois pontos P(u1) e P(u2), encontrar a função Length(u1,u2) Dado um comprimento de arco s e um ponto P(u1), encontrar um ponto P(u2) tal que Length(u1,u2) = s Movimento ao longo de uma curva Cálculo do comprimento do arco Passo 1: estabelecer a relação entre parâmetros (u) e comprimento do arco (s) Especificar função s = G(u) que calcule, para cada u, o comprimento de arco a partir de u0. Se inversa G -1 puder ser calculada (ou estimada), a curva pode ser parametrizada de acordo com o seu comprimento através de P(G -1 (s)) Passo 2: especificar em quanto tempo uma dada distância deve ser percorrida 11
Movimento ao longo de uma curva Cálculo da velocidade Só funciona se a interpolação for parametrizada relativamente ao comprimento da curva Time-steps constantes significam velocidade também constante s(t) é uma função linear Para resultados mais interessantes (e.g. aceleração/desaceleração), usar time-steps variáveis. Movimento ao longo de uma curva Cálculo da velocidade Função s(t) deve ser contínua e monotónica Não devem haver saltos de velocidade (manter continuidade de primeira ordem C1) Pode ser definida de forma gráfica e interactiva 12
Movimento ao longo de uma curva Cálculo da velocidade Forma automática Secção de curva de seno de π/2 atéπ/2 Mapear valores de -1 a 1 no intervalo 0 a 1 Movimento ao longo de uma curva 13
Rotações representadas por Quaternions Usam-se porque: São facilmente interpoladas Não causam o efeito gimbal lock Unidade quaternion = um ponto sobre esfera unitária Interpolação linear directa, (ao contrário dos outros métodos), gera movimento não-linear Rotações representadas por Quaternions Representadas no espaço 4D Interpolação linear entre 2 quaternions (espaço 4D) não produz intervalos regulares na esfera unitária Exemplo análogo Interpolação linear entre 2 pontos num círculo 2D 14
Rotações representadas por Quaternions Para obter rotação com velocidade constante, calcula-se orientações intermediárias directamente na superfície da esfera unitária Interpolação entre 2 quaternions Um quaternion [s,v] e sua negação [-s,-v] representam a mesma orientação. Escolher entre quais interpolar (caminho mais curto) q1 e q2 ou q1 e - q2 Rotações representadas por Quaternions Como determinar o caminho mais curto? Produto escalar (4D) entre os dois quaternions calcula o coseno do ângulo entre q1 e q2 Se coseno positivo, caminho mais curto é entre q1 e q2 Caso contrário, mais curto é entre q1 e - q2 Fórmula para interpolação linear esférica entre dois quaternions, considerando u entre 0 a 1 corresponde a 15
Rotações representadas por Quaternions Problemas podem persistir: Ao interpolar vários pares de quaternions, a continuidade C2 e suavidade do movimento não é garantida Solução: usar interpolação cúbica de Bézier entre os vários quaternions Seguir Caminhos Seguir um caminho requer mais do que interpolação ao longo de uma curva A orientação do objecto ao longo do caminho também deve ser considerada Ex: objecto = câmara virtual Eventualmente, o caminho precisa ser suavizado Ex: Controlo interactivo do movimento Por vezes: percorrer caminho sobre um outro objecto 16
Orientação ao longo de Caminho Define-se um sistema de referência (u,v,w) centrado em um ponto ao longo do caminho w e v são definidos e u é calculado O sistema de referência (u,v,w) é móvel Suavização de Caminho Vários métodos Interpolação linear dos valores adjacentes Aplicações repetidas do método tendem a reduzir concavidades 17
Suavização de Caminho Ainda outros métodos Interpolação cúbica dos valores adjacentes (curva parabólica) Suavização por núcleos de convolução Suavização por aproximação B-spline Caminho ao longo de Superfície Dados os pontos inicial e final do caminho encontrar os pontos intermédios Custo computacional para achar o melhor caminho é elevado Existem alternativas para encontrar caminhos sub-optimais: Determinar o plano que contém o ponto de partida e o ponto de chegada e que é perpendicular à superfície A intersecção desse plano com os vários patchs da superfície define os pontos do caminho 18
Sistemas Key-frame Sistemas Key-frame O termo key-frame vem da animação tradicional Foi generalizado para animação por computador Aplicado a cada variável cujo valor é definido num frame (quadro) específico, que deve ser interpolado de acordo com um procedimento dado Também conhecidas como articulation variables (avars) Sistemas key-frame são também designados track based Possível especificar interactivamente os dados 19
Sistemas Key-frame Sistemas Key-frame C(t) obtida através de técnicas de surface patch Técnicas relativas a uma dimensão superior em 1 20