Para la curva de movimiento, sugeriría usar curvas de Hermite. Simplemente da un punto / velocidad inicial y un punto / velocidad final, y crea una curva agradable y suave entre esos dos. Utilice el punto final / velocidad del primer par de puntos como punto inicial / velocidad del siguiente par de puntos y tendrá una curva larga y sinuosa que es perfecta.
Esto maneja perfectamente el requisito de administrar la velocidad: proporciona una lista de puntos en el tiempo con las velocidades que elija, y le brinda los valores de posición y velocidad interpolados sin problemas. Si desea seguir con esto, todo lo que necesita extraer de la aplicación de autoría 3D son puntos y velocidades en el camino que desee. También puede generarlos en tiempo de ejecución, tal vez en función de la entrada del usuario.
Para ajustar la orientación, tiene varias opciones. Si el avión siempre apuntará hacia dónde va (que es el caso que tiene sentido), puede usar el vector de velocidad interpolado de la curva de Hermite para encontrar hacia dónde debe apuntar su barco. Si conoce el vector hacia arriba (se mueve en un plano, o sabe en qué dirección debería estar hacia arriba), puede calcular el tercer eje mediante una cruz (frente, arriba) y allí tiene su orientación.
Si desea una orientación "tambaleante" de alguna manera para que el avión a veces se desvíe de la dirección frontal en la ruta, puede utilizar la dirección frontal como la dirección deseada, y sucesivamente hacer un slerp de un paso entre la orientación actual y la orientación deseada.
Si desea orientaciones personalizadas que no tienen nada que ver con la ruta, puede proporcionar una lista de cuaterniones de orientación para esto. Entonces tus puntos se vuelven (punto, velocidad, cuaternión). Luego puede usar slerp entre dos cuaterniones sucesivos para establecer sus orientaciones en el camino. No olvide que slerp es un método de interpolación lineal . Sin embargo, generalmente debería estar bien. Si encuentra que las rotaciones no son lo suficientemente suaves en las costuras, puede intentar interpolar la lista de cuaterniones con una curva de Bezier, como se explica aquí en la sección 7.
Aquí hay un código fuente que puede ayudarlo a comenzar. Tiene una serie de técnicas de interpolación fluidas para una lista de cuaterniones (escuadrón, bezier, etc.).
¡Hazme saber si tienes alguna pregunta!