opengl viewMatrix的

发布时间 2023-10-17 23:46:32作者: Ultraman_X

多边形绕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的文章中得到,变化矩阵的基坐标可以作为变换矩阵的旋转部分内容。