我尝试使用C ++中的DirectX11为fbx查看器创建相机。我成功地做了翻译而不是轮换。在我的班级相机中,我有2个地标:我的相机和我的目标(它们都有向上矢量,右矢量,向量矢量和位置)。
要做轮换,我会这样做:
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:
[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]
但是当我测试时,旋转不会做任何事情(但它会进入函数)。我究竟做错了什么 ?我的逻辑是正确的,否则我应该用相机吗?