我遇到了相機旋轉的數學問題,更像是我缺乏關於這個主題的知識,並且在互聯網上找不到任何關於它的東西(閱讀,很可能不知道正確的搜索關鍵詞)相機與四元數的旋轉
無論如何,這是我所試圖做的(僞代碼):
RotateCamera(angle,axis){
Quaternion rotation = cam.getRotation();
Quaternion rot = new Quaternion();
rot.fromAngleNormalAxis(angle, axis);
rotation.multLocal(rot);
cam.setRotation(rotation);
}
update(float value){ // just to show what input I use the RotateCamera method for the directions
RotateCamera(value,Vector3f(0,1,0)) // left
RotateCamera(-value,Vector3f(0,1,0)) // right
RotateCamera(value,Vector3f(1,0,0)) // up
RotateCamera(-value,Vector3f(1,0,0)) // down
}
現在這工作得很好,但有時凸輪將推出,而不是隻偏航/間距。這樣做的正確方法是什麼?
基本上我應該創建一個getLeft()和getUp()方法並使用那些而不是靜態值? – Tim
是的。 getLeft()將只是確定從攝像頭頂部出來的軸。然後,getUp()會將getLeft()的結果與相機所面向的方向構成其「交叉產品」(你見過這個?)。這應該做到這一點! – josh