Rotation sur plusieurs axes
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 :
Code:
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())); |
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:
tmp = glm::rotate(tmp, 360.f, glm::vec3(m_rot.x() / 360.f, m_rot.y() / 360.f, m_rot.z() / 360.f));
Ou encore :
Code:
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)); |
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.
Merci d'avance pour votre aide !