Do celów lerowania muszę rozłożyć matrycę 4x4 na kwaternion i vec3. Złapanie kwaternionu jest proste, ponieważ możesz po prostu przekazać macierz do konstruktora, ale nie mogę znaleźć sposobu na pobranie tłumaczenia. Z pewnością musi być jakiś sposób?glm - Rozłożyć matę 4 na tłumaczenie i obrót?
14
A
Odpowiedz
11
Wygląda GLM 0.9.6 obsługuje rozkład macierzy 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])
jest wektorem pozycji (zakładając m
jest glm::mat4
)
5
W wersji GLM-0.9.8.1 trzeba obejmują:
#include <glm/gtx/matrix_decompose.hpp>
Aby korzystać to:
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);
Należy pamiętać, że wynikowe kwaternionowanie jest nieprawidłowe. Zwraca koniugat!
Aby rozwiązać ten dodatek to kodzie:
rotation=glm::conjugate(rotation);
+1
Thannk kilka, naprawdę dziwne API – lama12345
Dokumentacja jest nieco przestarzały na jednym (nawet dla bieżącego v0.9.7), trzeba podać zamiast , aby działał. –