opengl viewMatrix的
多边形绕Z轴旋转矩阵:变换矩阵为:
理解上面这个对于理解viewMatrix很重要。
继续:
首先viewMatrix是变换镜头的逆矩阵,先获取变换头矩阵然后再求逆。
参考lookAt:
关键有两步:
1、镜头变换矩阵的顺序,因为此时镜头的位置和朝向已经固定了,这个时候是应该先旋转方向,然后平移,如果顺序反过来的话,这样今天的位置可能就不在预期的位置了。
2、关于镜头变化矩阵中的旋转矩阵怎么获取以及怎么将这些值放到matrix中。
template<typename T, qualifier Q>
GLM_FUNC_QUALIFIER mat<4, 4, T, Q> lookAtRH(vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up)
{
vec<3, T, Q> const f(normalize(center - eye));
vec<3, T, Q> const s(normalize(cross(f, up)));
vec<3, T, Q> const u(cross(s, f));
mat<4, 4, T, Q> Result(1);
Result[0][0] = s.x;
Result[1][0] = s.y;
Result[2][0] = s.z;
//上面这个是镜头变换矩阵的逆
Result[0][1] = u.x;
Result[1][1] = u.y;
Result[2][1] = u.z;
Result[0][2] =-f.x;
Result[1][2] =-f.y;
Result[2][2] =-f.z;
Result[3][0] =-dot(s, eye);
Result[3][1] =-dot(u, eye);
Result[3][2] = dot(f, eye);
return Result;
}
下面主要讲第二步:
从matrix的文章中得到,变化矩阵的基坐标可以作为变换矩阵的旋转部分内容。
posted on 2023-10-17 23:41 Ultraman_X 阅读(15) 评论(0) 编辑 收藏 举报