【发布时间】:2013-10-22 05:14:55
【问题描述】:
我尝试使用 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 我:
- 标准化矢量视图、上、右并检查它们是否相互 正交(用于目标和相机)
- 更新我的相机位置
- 用新元素填充我的 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 。相机位置;摄像头。相机位置; cameraLookAt .cameraPos ; 1.0f]
但是当我测试时,旋转没有做任何事情(但它进入了函数)。我究竟做错了什么 ?我的逻辑是正确的还是我应该做我的相机?
【问题讨论】:
标签: c++ camera rotation directx