Bonjour.
Je suis actuellement en train d'essayer de faire une rotation sur plusieurs axes mais pas moyen d'y arriver. J'utilise glm pour ce faire et m'y prend actuellement de cette facon :
Pour le moment ca fonctionne bien mais ca me limite aussi pas mal. Je voudrais faire en sorte de pouvoir faire une rotation de 70 degre sur l'axe X et 180 degre sur l'axe Y par exemple. Pour ce faire, je pensais faire de cette facon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 glm::mat4 tmp = glm::translate(view_matrix, glm::vec3(m_pos.x(), m_pos.y(), m_pos.z())); if (m_rot.rotation() != 0.f) tmp = glm::rotate(tmp, m_rot.rotation(), glm::vec3(m_rot.x(), m_rot.y(), m_rot.z()));
Ou encore :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tmp = glm::rotate(tmp, 360.f, glm::vec3(m_rot.x() / 360.f, m_rot.y() / 360.f, m_rot.z() / 360.f));
Aucune de ces deux methodes ne fonctionne... Un autre point m'est venu a l'esprit : pourquoi mon premier code fonctionne ? Il me semblait qu'il fallait faire la rotation PUIS la translation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 tmp = glm::rotate(tmp, m_rot.x(), glm::vec3(1.f, 0.f, 0.f)); tmp = glm::rotate(tmp, m_rot.y(), glm::vec3(0.f, 1.f, 0.f)); tmp = glm::rotate(tmp, m_rot.z(), glm::vec3(0.f, 0.f, 1.f));
Merci d'avance pour votre aide !
Partager