モデル ビュー マトリックスからスケール マトリックスを抽出するにはどうすればよいですか? 現在、各列の長さを取っていますが、スケールが負の場合は失敗します。ここに私のコードがあります:
float xs =
matrix[0][0] * matrix[0][1] * matrix[0][2] * matrix[0][3] < 0 ?
-1 : 1;
float ys =
matrix[1][0] * matrix[1][1] * matrix[1][2] * matrix[1][3] < 0 ?
-1 : 1;
float zs =
matrix[2][0] * matrix[2][1] * matrix[2][2] * matrix[2][3] < 0 ?
-1 : 1;
glm::vec3 new_scale;
new_scale.x = xs* glm::sqrt(
matrix[0][0] * matrix[0][0] + matrix[0][1] * matrix[0][1]
+ matrix[0][2] * matrix[0][2]);
new_scale.y = ys* glm::sqrt(
matrix[1][0] * matrix[1][0] + matrix[1][1] * matrix[1][1]
+ matrix[1][2] * matrix[1][2]);
new_scale.z = zs* glm::sqrt(
matrix[2][0] * matrix[2][0] + matrix[2][1] * matrix[2][1]
+ matrix[2][2] * matrix[2][2]);
例えば:
float []mat={0.032254f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, -0.0052254f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.4332254f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 1.000000f};