我尝试使用 C++ 中的 DirectX11 为 fbx 查看器创建一个相机。我成功地进行了翻译,但没有进行旋转。在我的相机类中,我有 2 个地标:我的相机和我的目标(它们都有一个向上向量、右向量、lookAt 向量和一个位置)。
要进行轮换,我会这样进行:
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 我:
- 归一化矢量 View、Up、Right 并检查它们是否相互正交(对于目标和相机)
- 更新我的相机位置
- 用新元素填充我的 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
相机对。相机位置;摄像头。相机位置;cameraLookAt .cameraPos ; 1.0f]
但是当我测试时,旋转什么都不做(但它进入了函数)。我究竟做错了什么 ?我的逻辑是正确的还是我应该做我的相机?