0
我正在爲類項目製作FPS樣式相機。我目前使用2個Vec3s來保持相機的位置和旋轉。用我目前的代碼,我只能在全球座標軸方面進行翻譯,而不是以我當前所面對的方向進行翻譯。我如何使用相機的旋轉爲了在我想要的方向上進行翻譯? EX:按下'W'會使攝像機沿其局部Z軸向前平移。沿本地軸翻譯3D物體
camMat = Matrix4Identity();
//Input for camera
if (GetAsyncKeyState('Q'))
{
camRot.y += 60.0f*timer.Delta();
}
if (GetAsyncKeyState('E'))
{
camRot.y -= 60.0f*timer.Delta();
}
if (GetAsyncKeyState('W'))
{
camPos.z += 4.0f*timer.Delta();
}
if (GetAsyncKeyState('S'))
{
camPos.z -= 4.0f*timer.Delta();
}
if (GetAsyncKeyState('A'))
{
camPos.x -= 4.0f*timer.Delta();
}
if (GetAsyncKeyState('D'))
{
camPos.x += 4.0f*timer.Delta();
}
camMat = Matrix4Multiply(camMat, Matrix4RotationX(camRot.x));
camMat = Matrix4Multiply(camMat, Matrix4RotationY(camRot.y));
camMat = Matrix4Multiply(camMat, Matrix4RotationZ(camRot.z));
camMat = Matrix4Multiply(camMat, Matrix4Translate(camPos.x, camPos.y, camPos.z));
編輯:我看到很多類似的問題對SO,但他們似乎都使用時,不會對我做的意義略有不同的實現。
這實在是一個數學問題,而不是C++問題。如果我對洛杉磯的記憶沒有讓我失望(很可能),你應該能夠將你的方向矢量與你的旋轉矩陣相乘以得到旋轉的方向。 – Cubic