我想用鼠标旋转我的3D相机。
由于我不能使用四元数来看看没有万向节锁定的功能,所以我改为旋转正确的&分别为轴。
然而,这使得矩阵沿着它的前轴旋转,这是我不想要的行为。
为了防止这种情况,我尝试制作一个将右轴的y值设置为0的函数,但是我的尝试只会导致矩阵在进一步旋转时变得更加模糊。
所以我的问题是,是否可以这样做? 我使用左手矩阵,其中x是正确的,y是up& z是前锋。
这是C ++中的一个例子,所以你可以看到我的目标:
void RemoveZRotation(Matrix44& matrix)
{
Vector3 right = matrix.GetRight();
right.y = 0;
right.Normalize();
Vector3 up = right.Cross(matrix.GetForward());
up.Normalize();
matrix[0] = right.x;
matrix[1] = right.y;
matrix[2] = right.z;
matrix[4] = up.x;
matrix[5] = up.y;
matrix[6] = up.z;
}