lerping のために、4x4 行列をクォータニオンと vec3 に分解する必要があります。行列をコンストラクターに渡すだけなので、クォータニオンを取得するのは簡単ですが、変換を取得する方法が見つかりません。きっと道があるはずですよね?
質問する
26784 次
6 に答える
35
glm::vec3(m[3])
は位置ベクトルm
です( を仮定glm::mat4
)
于 2013-10-18T11:18:42.273 に答える
32
glm 0.9.6 は行列分解をサポートしているようです http://glm.g-truc.net/0.9.6/api/a00204.html
#include <glm/gtx/matrix_decompose.hpp>
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);
于 2015-04-01T13:28:15.740 に答える
21
バージョン glm-0.9.8.1 では、以下を含める必要があります。
#include <glm/gtx/matrix_decompose.hpp>
使用するには:
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);
結果のクォータニオンは正しくないことに注意してください。共役を返します!
これを修正するには、これをコードに追加します。
rotation=glm::conjugate(rotation);
于 2016-10-13T15:08:35.030 に答える