2013-08-29 4 views
0

J'essaie d'une caméra qui se déplace en utilisant une spline. La position de la caméra fonctionne bien mais je veux que mon œil de la caméra se tourne tout seul pendant le mouvement.Rotation d'autres deux angles euler en utilisant la différence entre deux

Par exemple, la caméra se déplace de x0 y0 z0 à x1 y1 z1. Maintenant, mon vecteur d'œil est normal (x1-x0, y1-y0, z1-z0). Comment faire pivoter les deux autres vecteurs (vecteurs latéraux et supérieurs) pour qu'ils correspondent au vecteur de l'œil et ne détruisent pas les angles de 90 degrés entre eux?

Si c'est plus facile en forme de lacet/tangage c'est bien aussi, je peux convertir entre deux. Ou une approche différente de ce que je veux accomplir? Par exemple, je pense que je peux le faire en calculant la normale de la spline (c'est une courbe beizer de 3 points) et chaque étape je peux calculer combien de caméra tournera autour de cette normale. Mais je préférerais une méthode plus facile et plus générale, si elle existe.

Vous pouvez voir ce que je fais here. (cliquez sur une planète) Dans celui-ci je convertis mon ancien et nouveau vecteur d'oeil en tangage/lacet et trouve la différence et fais tourner d'autres vecteurs en utilisant ceci mais ceci est évidemment faux puisque dans certains cas, d'autres vecteurs peuvent ne pas changer du tout l'oeil tourne perpendiculairement à un)

Répondre

0

Ceci est appelé animation key frame. La meilleure façon de le faire est de prendre les angles d'Euler aux positions qui vous intéressent et put them in quaternion form. Vous pouvez ensuite interpoler les quaternions d'images clés à l'aide d'une spline pour obtenir les trames d'interpolation.

Pourquoi faire cela? La raison principale est que vous n'avez pas de problèmes à maintenir l'orthonormalité des matrices de transformation des trames d'interpolation, et vous n'avez pas non plus besoin d'une heuristique pour choisir les angles d'Euler. Lire plus sur Wikipedia, en particulier la section Comparison with other representations of rotations. Ne laissez pas la forme de quaternion vous effrayer, c'est en fait assez facile. Tout ce dont vous avez besoin, ce sont des recettes qui vont des angles euler (ou des matrices de transformation) aux quaternions et inversement. Vous n'avez pas besoin d'en savoir beaucoup sur les quaternions eux-mêmes, sinon qu'ils peuvent être interpolés avec une spline bien.