2016-05-28 1 views
2

J'ai un objet dans l'espace 3D où tout ce que j'ai est une position et une rotation. Comment puis-je calculer les vecteurs en avant et en amont à partir des informations que j'ai?Calculer les vecteurs vers l'avant et vers le haut à partir de la position et de la rotation d'Euler?

Je sais que je peux calculer le vecteur avant de cette façon:

Vector3 forward = (target.getPosition() - object.getPosition()).normalize(); 

.. où cible est un point le long de l'axe qui l'objet est à la recherche. En utilisant les informations que j'ai, comment puis-je choisir un point arbitraire de cette façon de normaliser?

Je ne sais pas du tout comment résoudre le problème du vecteur «up».

Répondre

0

Créez d'abord une matrice de transformation à partir de vos angles euler (avec la même méthode que celle utilisée pour le rendu). Ensuite, extraire les vecteurs axises pour avancer et remonter directement. Par exemple ma vue matrices utilise Z axe pour avant/arrière et X axe pour gauche/droite, donc je voudrais juste utiliser ces deux. Vous trouverez l'emplacement des vecteurs ici:

Understanding 4x4 homogenous transform matrices