J'ai un joueur en forme de sphère qui peut se déplacer librement dans les directions x et z. Les joueurs vitesse actuelle est mémorisée dans un vecteur qui est ajouté à la position des joueurs sur chaque image:Rotation d'une matrice dans la direction d'un vecteur?
m_position += m_speed;
J'ai aussi une matrice de rotation que je voudrais tourner dans le sens que le mouvement du joueur (Imaginez comment une balle tournerait si elle roulait sur le sol). Voici une courte vidéo pour aider à visualiser le problème: http://imgur.com/YrTG2al
Avis dans la vidéo quand je commence à se déplacer vers le haut et vers le bas (Z) par opposition à gauche et à droite (X) l'axe de rotation ne correspond plus le mouvement du joueur.
code utilisé pour produire les résultats:
glm::vec3 UP = glm::vec3(0, 1, 0);
float rollSpeed = fabs(m_Speed.x + m_Speed.z);
if (rollSpeed > 0.0f) {
m_RotationMatrix = glm::rotate(m_RotationMatrix, rollSpeed, glm::cross(UP, glm::normalize(m_Speed)));
}
Thankful aide
rotation a besoin de deux choses: un axe de rotation et un sens de rotation. Quand vous dites "tourner la matrice dans la direction d'un vecteur", voulez-vous dire une rotation avec le vecteur comme axe de rotation? – user463035818
@ tobi303 Peut-être que ma question n'était pas très claire. Fondamentalement, j'essaie de comprendre l'axe correct à utiliser lors de la rotation de la matrice, compte tenu de la vitesse actuelle des joueurs. – bapibopi
peut-être un petit dessin peut aider à illustrer le problème – user463035818