【问题标题】:Camera 3D rotation with DirectX11使用 DirectX11 进行相机 3D 旋转
【发布时间】: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 我:

  1. 标准化矢量视图、上、右并检查它们是否相互 正交(用于目标和相机)
  2. 更新我的相机位置
  3. 用新元素填充我的 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


    【解决方案1】:

    如果您喜欢的话,您已经为您准备了一些功能:

    XMMatrixLookAtLH

    XMMatrixLookToLH

    它们应该完全满足您的需求(并且您拥有它们的源代码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2015-01-08
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多