Pistas, Fotogramas Clave e Interpolación
En el corazón de CinematicEngine opera un motor de evaluación temporal determinista. Cada escena consta de una o más pistas (tracks) ejecutadas concurrentemente, cuyas propiedades se calculan a través de fotogramas clave (keyframes) discretos.
🛤️ Tipos de Pistas Soportadas
| Tipo de Pista | Factoría | Salida Primaria | Casos de Uso Típicos |
|---|---|---|---|
camera | CameraTrackFactory | CameraFrame (pos, yaw, pitch, fov) | Control de la perspectiva y trayectoria del espectador. |
actor | ActorTrackFactory | ActorFrame (pos, yaw, pitch, acción) | Coreografía de jugadores, actores virtuales y NPCs. |
effect | EffectTrackFactory | EffectFrame (partículas, sonidos) | Acentos audiovisuales, explosiones y música de ambiente. |
⏱️ Mecánica de Fotogramas Clave (Keyframes)
Un fotograma clave establece el estado de una pista en un tick exacto. Entre un fotograma y el siguiente, el motor interpola los estados intermedios mediante funciones matemáticas:
keyframes: - tick: 0 position: [0.0, 64.0, 0.0] interpolation: "ease_in_out" - tick: 60 position: [20.0, 75.0, 10.0] interpolation: "linear"- Al evaluar el tick
30, el sistema calcula el progreso normalizado y aplica la función de interpolación configurada.
📈 Algoritmos de Interpolación
1. Interpolación Lineal (LinearInterpolator)
Realiza una transición constante a velocidad uniforme:
interpolation: "linear"Idóneo para: Desplazamientos mecánicos a velocidad fija o barridos constantes.
2. Interpolación Suave Inicio/Fin (EaseInOutInterpolator)
Acelera suavemente al salir y decelera gradualmente al llegar utilizando una curva polinómica smoothstep:
interpolation: "ease_in_out"Idóneo para: Movimientos de cámara orgánicos, frenadas cinematográficas e inicios suaves de toma.
🌀 Curvas Spline Cúbicas Catmull-Rom
La interpolación puramente lineal traza rectas entre puntos contiguos, generando quiebros angulares y choques visuales en los cambios de dirección.
CinematicEngine resuelve esto con splines cúbicos Catmull-Rom (CatmullRomSpline):
data: path-mode: "spline"Trayectoria Lineal (Quiebros Bruscos):[P0] ───────────────> [P1] ╲ ╲ ╲ ▼ [P2] ───────────────> [P3]
Spline Catmull-Rom (Curva Suave Continua):[P0] ╭────────────────[P1] ╲ ╲ ╲ ╰───────[P2]────────────╮ ╰──────────────────────────────────────────╯ [P3]Formulación Matemática
Para cualquier segmento delimitado entre los puntos y , el spline evalúa el punto previo y el siguiente para derivar vectores tangentes continuos:
Ventajas Destacadas:
- Continuidad Tangente : Ausencia total de quiebros o saltos angulares; el paso por los puntos de control mantiene velocidad continua.
- Paso Directo por Puntos de Control: A diferencia de las curvas Bézier, el camino atraviesa obligatoriamente las coordenadas definidas en cada keyframe.
- Manejo Dinámico de Extremos: El motor refleja automáticamente los puntos en los bordes iniciales y finales para garantizar entradas y salidas fluidas.