我嘗試在C++中使用DirectX11爲fbx查看器創建相機。我成功做翻譯,但沒有輪換。在我的班級相機中,我有兩個里程碑:我的相機和我的目標(他們有一個向上矢量,右矢量,lookAt矢量和一個位置)。使用DirectX11進行相機3D旋轉
做旋轉,我繼續這樣的:
void
Camera::upRotation(float angle)
{
using namespace DirectX;
XMMATRIX yaw;
yaw = XMMatrixRotationAxis(XMLoadFloat3(&this->targetUp), XMConvertToRadians(angle));
XMVector3TransformCoord(XMLoadFloat3(&this->cameraLookAt), yaw);
XMVector3TransformCoord(XMLoadFloat3(&this->targetLookAt), yaw);
XMVector3TransformCoord(XMLoadFloat3(&this->cameraRight), yaw);
XMVector3TransformCoord(XMLoadFloat3(&this->targetRight), yaw);
}
更新我viewMatrix我:
- 規範化矢量查看,上,右,並檢查他們是否相互正交 (爲目標和相機)
- 更新我的相機位置
- 用新元素填充我的viewMatrix:
[cameraRight.x; cameraUp.x; cameraLookAt.x; 0.0f
cameraRight.y; cameraUp.y; cameraLookAt.y; 0.0f
cameraRight.z; cameraUp.z; cameraLookAt.z; 0.0f
cameraRight。 cameraPos; cameraUp。 cameraPos; cameraLookAt.cameraPos; 1.0f]
但是當我測試時,旋轉不做任何事情(但它進入函數)。我究竟做錯了什麼 ?而且我的邏輯是否正確,否則我應該使用我的相機?