我尝试使用 C++ 中的 DirectX11 为 fbx 查看器创建一个相机。我成功地进行了翻译,但没有进行轮换。在我的 Camera 类中,我有 2 个地标:我的相机和我的目标(它们都有一个向上 vector 、向右 vector 、lookAt vector 和一个位置)。
为了进行轮换,我是这样进行的:
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 I:
- 标准化 vector View、Up、Right 并检查它们是否相互 正交(针对目标和相机)
- 更新我的相机位置
- 用新元素填充我的 viewMatrix :
[ cameraRight.x ;相机Up.x ; cameraLookAt.x ; 0.0f
相机权利.y ; cameraUp.y ; cameraLookAt.y ; 0.0f
cameraRight.z ; cameraUp.z ; cameraLookAt.z ; 0.0f
相机权利。相机位置;相机向上。相机位置; cameraLookAt .cameraPos ; 1.0f]
但是当我测试时,旋转没有做任何事情(但它进入了函数)。我究竟做错了什么 ?我的逻辑是正确的还是我应该做我的相机?
最佳答案
关于c++ - 使用 DirectX11 的相机 3D 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19363625/