Evaluación de Curvas de Animación

De Codepixel

Los programas 3D normalmente te permiten exportar unas curvas asociadas a la posición/rotación y escalado del objeto. El videojuego o demo deberá de leer esas curvas, y evaluar en un tiempo determinado cuál es el valor correspondiente que tiene que aplicar al objeto.

Las curvas normalmente tienen "keyframes", esto es, en un frame determinado (o posición en el tiempo), se le asigna un valor. Las curvas pueden ser de varios tipos. Constantes (el valor es el mismo en todo el keyframe), Lineales (se hace una interpolación lineal entre el keyframe anterior y el siguiente), o Bezier (las curvas se definen por puntos bezier, que permiten afinar mejor el comportamiento del movimiento).

Si estamos realizando animación basada en físicas, tendremos un vector de movimiento, basado en cuanto nos movemos por segundo. Tendremos que calcular cuanto tiempo ha pasado desde el frame anterior, y actualizar la posicion haciendo :

nueva posicion = posicion actual + ( velocidad * tiempo trancurrido)

Si tenemos una animación basada en curvas, la posición se lee de la curva. La curva tiene un inicio y un fin, asi que con el tiempo total desde el principio de la animación, sabremos su posición. Si nos pasamos, podremos usar fmod para repetir constantemente la animación (wrap), o bien usar el último (o primer) valor para continuar indefinidamente en la misma posición (clamp).

  • evaluar la posición : post general de cómo evaluar la posición de los objetos, independientemente de los frames.
  • Consisten Animation : nos habla de cómo evaluar el tiempo entre frames, que nos ayudará a evaluar la animación.
  • Sampleando las curvas Bézier : donde proponen varios métodos, uno es evaluar la curva en runtime (lento) y otra es precalcular muchas curvas lineales, basada en una bezier (más rápido). Hay enlaces y sugerencias.

[editar] Punto mas cercano en una curva a otro punto no perteneciente a la curva

Herramientas personales
Navegación
Herramientas