我正在尝试创建一个函数,该函数从描述位置的顶点返回旋转矩阵,另一个顶点描述第一个位置的对象正在查看的点。到目前为止我有以下代码:
const Matrix4 Matrix4::createRotation(const Vertex& pos, const Vertex& lookat)
{
Vector3 vz = lookat - pos;
vz.normalize();
Vector3 vx = Vector3::cross(Vector3( 0, 1, 0 ), vz);
vx.normalize();
Vector3 vy = Vector3::cross(vz, vx);
Matrix4 rotation ( vx.x, vy.x, vz.x, 0,
vx.y, vy.y, vz.y, 0,
vx.z, vy.z, vz.z, 0,
0, 0, 0, 1);
return rotation;
}
目前正在产生错误的结果,我很确定它位于旋转Matrix4变量的构造函数中。
此功能将与逆平移矩阵结合使用,以构建摄像机的视图矩阵。
有人能够向我解释如何做到这一点吗?