Matrix 计算地形上的注视矩阵

Matrix 计算地形上的注视矩阵,matrix,geometry,directx-9,Matrix,Geometry,Directx 9,希望有人能帮助我。我在地形上有一辆卡丁车,从中我可以得到卡丁车中心、左前轮和右前轮的位置。我需要的是一个矩阵来旋转卡丁车,使其平放在地面上 所有矢量3的。前进是方向向量 到目前为止,我有这个,但它不是预期的工作 D3DXVECTOR3 cross, cross1; cross = kartposition - Lwheelposition; cross1 = kartposition - Rwheelposition; D3DXVec3Cross(&up, &am

希望有人能帮助我。我在地形上有一辆卡丁车,从中我可以得到卡丁车中心、左前轮和右前轮的位置。我需要的是一个矩阵来旋转卡丁车,使其平放在地面上

所有矢量3的。前进是方向向量

到目前为止,我有这个,但它不是预期的工作

D3DXVECTOR3 cross, cross1;
    cross = kartposition - Lwheelposition;
    cross1 = kartposition - Rwheelposition;
    D3DXVec3Cross(&up, &cross, &cross1);
    D3DXVec3Normalize(&up, &up);

    D3DXVec3Cross(&right, &forward,&up);
    D3DXVec3Normalize(&right, &right);
    D3DXVec3Cross(&forward,  &up,&right);
    D3DXVec3Normalize(&forward, &forward);



    D3DXMatrixLookAtLH(&localtransform[0], &D3DXVECTOR3(0, 0, 0) ,&(forward), &up);
任何建议都很好

我相信是的

将两行代码更改为

横向=Lheelposition kartposition; cross1=Rwheelposition-Kartpposition

最后加上

D3DXMatrixInverse(&localtransform[0]、NULL和&localtransform[0])


反转注视功能的动作。

此后,我通过参考

最终代码如下

D3DXVECTOR3 cross, cross1;
        cross = Lwheelposition - kartposition;
        cross1 = Rwheelposition - kartposition;
        D3DXVec3Cross(&up, &cross, &cross1);
        D3DXVec3Normalize(&up, &up);

        D3DXVec3Cross(&right, &up,&forward);
        D3DXVec3Normalize(&right, &right);
        D3DXVec3Cross(&kartforward, &right, &up);
localtransform[0]=D3DXMATRIX (right.x, right.y, right.z, 0.0f,
            up.x, up.y, up.z, 0.0f,
            kartforward.x, kartforward.y, kartforward.z, 0.0f,
            kartposition.x, kartposition.y, kartposition.z, 1.0f);
希望这是有帮助的