Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用DirectX11进行相机三维旋转 我尝试用C++中的DICTX11创建FBX查看器的相机。我成功地做了平移,但没有旋转。在我的类相机中,我有两个地标:我的相机和我的目标(它们都有上方向向量、右方向向量、注视向量和位置)_C++_Camera_Rotation_Directx - Fatal编程技术网

使用DirectX11进行相机三维旋转 我尝试用C++中的DICTX11创建FBX查看器的相机。我成功地做了平移,但没有旋转。在我的类相机中,我有两个地标:我的相机和我的目标(它们都有上方向向量、右方向向量、注视向量和位置)

使用DirectX11进行相机三维旋转 我尝试用C++中的DICTX11创建FBX查看器的相机。我成功地做了平移,但没有旋转。在我的类相机中,我有两个地标:我的相机和我的目标(它们都有上方向向量、右方向向量、注视向量和位置),c++,camera,rotation,directx,C++,Camera,Rotation,Directx,要进行旋转,我将这样进行: void Camera::upRotation(float angle) { using namespace DirectX; XMMATRIX yaw; yaw = XMMatrixRotationAxis(XMLoadFloat3(&this->targetUp), XMConvertToRadians(angle)); XMVector3TransformCoord(XMLoadFloat3(&

要进行旋转,我将这样进行:

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,请执行以下操作:

  • 规范化向量视图,向上、向右,并检查它们是否相互匹配 正交(用于目标和相机)
  • 更新我的相机位置
  • 用新元素填充我的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.cameraPos;cameraUp.cameraPos;cameraLookAt.cameraPos;1.0f]


    但是当我测试时,旋转没有做任何事情(但是它进入了函数)。我做错了什么?我的逻辑正确吗?或者我应该用其他方法来制作我的相机?

    如果您喜欢,您已经有了一些预先制作的功能:

    他们应该做你需要的事情(你有他们的源代码)