Per scopi di lerping, ho bisogno di scomporre una matrice 4x4 in un quaternion e un vec3. Afferrare il quaternion è semplice, dato che puoi semplicemente passare la matrice nel costruttore, ma non riesco a trovare un modo per prendere la traduzione. Sicuramente ci deve essere un modo?glm - Decompone il mat4 in traslazione e rotazione?
14
A
risposta
11
Sembra glm 0.9.6 supporta matrice decomposizione http://glm.g-truc.net/0.9.6/api/a00204.html
glm::mat4 transformation; // your transformation matrix.
glm::vec3 scale;
glm::quat rotation;
glm::vec3 translation;
glm::vec3 skew;
glm::vec4 perspective;
glm::decompose(transformation, scale, rotation, translation, skew, perspective);
18
glm::vec3(m[3])
è il vettore posizione (supponendo m
è glm::mat4
)
5
Alla versione glm-0.9.8.1 è necessario includere:
#include <glm/gtx/matrix_decompose.hpp>
Per utilizzare IT:
glm::mat4 transformation; // your transformation matrix.
glm::vec3 scale;
glm::quat rotation;
glm::vec3 translation;
glm::vec3 skew;
glm::vec4 perspective;
glm::decompose(transformation, scale, rotation, translation, skew,perspective);
Tenete a mente che il quaternione con conseguente non corretta. Restituisce il suo coniugato!
Per correggere questo aggiungere questo al codice:
rotation=glm::conjugate(rotation);
+1
Grazie infinite API davvero strane – lama12345
La documentazione è un po 'obsolete su quello (anche per v0.9.7 corrente), è necessario includere invece di perché funzioni. –