方向矢量的旋转矩阵(向前,向上,向右)
我需要从方向矢量(vForward)获得旋转矩阵,我也有vRight和vUp矢量。 所有这些矢量都是单位矢量。
我只需要获得旋转矩阵。
为了仅在平行于地面的一个平面(xy)中获得旋转矩阵,我这样做:XMMATRIX xmResult;
Vec3f vFwd = pPlayer->VForward;
vFwd.z = 0;
vFwd.Normalize();
xmResult = XMMatrixSet( vFwd.y,     -vFwd.x,    0,      0,
    vFwd.x,      vFwd.y,    0,      0,
    0,          0,          1,      0,
    0,          0,          0,      1);
以上代码只能获得旋转矩阵围绕Z轴旋转:
我想让代码围绕所有轴旋转。 这是我不得不使用的坐标系。 我知道这很奇怪:

这是我以后在代码中使用我的矩阵的方式:
XMStoreFloat3((XMFLOAT3*)&vStart, XMVector3Transform(XMLoadFloat3((XMFLOAT3*)&vStart), xmTransformation));
XMStoreFloat3((XMFLOAT3*)&vEnd, XMVector3Transform(XMLoadFloat3((XMFLOAT3*)&vEnd), xmTransformation));
根据你使用矩阵的方式,Right,Up和Forward应该对应矩阵的行或列。
xmResult = XMMatrixSet( vRight.x, vRight.y, vRight.z, 0, vFwd.x, vFwd.y, vFwd.z, 0, vUp.x, vUp.y, vUp.z, 0, 0, 0, 0, 1);
上一篇: Rotation Matrix from direction vector (Forward, Up, Right)
