在DirectX 11.2 C++中围绕所有3(X、Y、Z)轴旋转模型
Rotating a model around all 3 (X, Y, Z) axis in DirectX 11.2 C++
我有下一个问题。我正在尝试同时围绕所有3个轴旋转三维模型。这意味着我想通过按下键盘上的按钮,绕X轴、Y轴、X轴旋转模型。问题是当我像这样使用XMMatrixRotationX、XMMatrixRotationY或XMMatrix旋转Z时:
void Rotate(float radians_x, float radians_y, float radians_z)
{
DirectX::XMStoreFloat4x4(&_transfer.world, DirectX::XMMatrixTranspose(DirectX::XMMatrixRotationZ(radians_z)));
DirectX::XMStoreFloat4x4(&_transfer.world, DirectX::XMMatrixTranspose(DirectX::XMMatrixRotationY(radians_y)));
DirectX::XMStoreFloat4x4(&_transfer.world, DirectX::XMMatrixTranspose(DirectX::XMMatrixRotationX(radians_x)));
}
只完成最后一次旋转。我希望能够围绕每个轴旋转对象一个特定的角度(实际上是弧度),正如您在代码中看到的那样。我发现XMMatrixRotationAxis方法可以做到这一点,但它只需要一个角度参数,我想为每个轴使用不同的角度参数。有人能帮我怎么做吗?
此外,我不知道将什么作为第一个参数发送到XMMatrixRotationAxis,它只表示轴的矢量。我不明白我该如何访问这些,我在发布的代码中使用的方法不需要发送任何轴。我不明白为什么这是必要的,或者如何做,以防这是正确的解决方案。
任何帮助都将不胜感激。
我在这里找到了答案:
http://books.google.hr/books?id=7ZkLAAAAQBAJ&pg=PA251&lpg=PA251&dq=XMMatrixRotationQuaternion;source=bl&ots=xveQhsj-x_;sig=Ny6IdK1JNFBF99LyC_HY8b-y4tI&hl=hr&sa=X&ei=dtkQVOmmA8aXatfugZgL&ved=0CHEQ6AEwCA#v=一页&q=XMMatrixRotationQuaternion;f=错误
我必须使用XMMatrixRotationRollPitchYaw。代码现在看起来:
void Rotate(float radians_x, float radians_y, float radians_z)
{
DirectX::XMStoreFloat4x4(&_transfer.world, DirectX::XMMatrixTranspose(DirectX::XMMatrixRotationRollPitchYaw(radians_x, radians_y, radians_z)));
}
像符咒一样工作:)
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- QTableView:endMoveRows在模型中重置水平页眉大小
- 绘制旋转的三角形
- 将IBM Rhapsody模型集成到VS 2019中
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 成员函数调用和C++对象模型
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 打印 ONNXRUNTIME::图形没有模型
- 如何在 openGL 中围绕全局轴旋转模型?
- 旋转播放器模型以指向一个点
- VTK:旋转3D模型并捕获其深度图
- opencv:使用旋转和平移向量设置模型位置
- 旋转中的小误差导致模型变形
- 在DirectX 11.2 C++中围绕所有3(X、Y、Z)轴旋转模型
- 围绕绝对轴旋转3d模型
- 在自己的轴上旋转单个模型的矩阵
- 在OpenGL 4.0中,是否有一种围绕局部坐标(即从模型视图矩阵)旋转的标准方法