繁体   English   中英

使用DirectX11进行相机3D旋转

[英]Camera 3D rotation with DirectX11

我尝试使用C ++中的DirectX11为fbx查看器创建相机。 我成功进行翻译,但未成功进行旋转。 在我的Camera类中,我有2个界标:我的相机和我的目标(它们既有up矢量,right矢量,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.0分

cameraRight.y; cameraUp.y; cameraLookAt.y; 0.0分

cameraRight.z; cameraUp.z; cameraLookAt.z; 0.0分

cameraRight。 cameraPos; cameraUp。 cameraPos; cameraLookAt.cameraPos; 1.0f]

但是当我测试时,旋转什么都不做(但是它进入了函数)。 我究竟做错了什么 ? 我的逻辑正确吗?否则我应该做我的相机吗?

如果您喜欢它们,则已经为您提供了一些预制功能:

XMMatrixLookAtLH

要么

XMMatrixLookToLH

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM