我们如何从模型视图矩阵中提取比例矩阵?现在我正在考虑每个颜色的长度,但是当尺度是负值时它会失败。 这里是我的代码:从模型视图矩阵中提取比例矩阵
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};
你能解释一下第一点是什么吗?我只是模型视图矩阵,没有其他信息 – debonair
@debonair添加[编辑] – Spektre
如果其中一个轴是负数,其他2个是正数,反之亦然,它不起作用。 – debonair