Pour la courbe de mouvement, je suggère d'utiliser des courbes Hermite. Vous donnez simplement un point / vitesse de départ et un point / vitesse de fin, et cela crée une courbe agréable et lisse entre ces deux. Utilisez le point de fin / vitesse de la première paire de points comme point de départ / vitesse de la prochaine paire de points et vous avez une belle courbe longue et sinueuse qui est transparente.
Cela gère parfaitement l'exigence de gérer la vitesse: vous donnez une liste de points dans le temps avec les vitesses que vous choisissez, et cela vous donne la position et les valeurs de vitesse interpolées de manière transparente. Si vous voulez aller avec cela, tout ce que vous devez extraire de l'application de création 3D est les points et les vitesses dans le chemin que vous désirez. Vous pouvez également les générer lors de l'exécution, peut-être en fonction des entrées de l'utilisateur.
Pour ajuster l'orientation, vous disposez d'un certain nombre d'options. Si l'avion pointe toujours vers où il va (ce qui est logique), vous pouvez utiliser le vecteur de vitesse interpolé de la courbe Hermite pour trouver où votre navire doit pointer. Si vous connaissez le vecteur haut (il se déplace dans un plan, ou vous savez quelle direction doit être vers le haut), vous pouvez calculer le troisième axe en croix (avant, haut) et là vous avez votre orientation.
Si vous voulez une orientation quelque peu "instable" de sorte que le plan s'écarte parfois de la direction avant dans le chemin, vous pouvez utiliser la direction avant comme direction souhaitée, et successivement faire un slerp en une étape entre l'orientation actuelle et l'orientation souhaitée.
Si vous voulez des orientations personnalisées qui n'ont rien à voir avec le chemin, vous pouvez bien sûr fournir une liste de quaternions d'orientation à cela. Vos points deviennent alors (point, vitesse, quaternion). Ensuite, vous pouvez utiliser un slerp entre deux quaternions successifs pour définir vos orientations en cours de route. N'oubliez pas que slerp est une méthode d'interpolation linéaire . Cependant, cela devrait généralement être bien. Si vous trouvez que les rotations ne sont pas assez lisses dans les coutures, vous pouvez essayer d'interpoler la liste des quaternions avec une courbe de Bézier, comme expliqué ici à la section 7.
Voici un code source qui peut vous aider à démarrer. Il a un certain nombre de techniques d'interpolation lisse pour une liste de quaternions (escouade, bezier, etc.).
Faites moi savoir si vous avez des questions!