gpt4 book ai didi

c++ - 在 DirectX 11.2 C++ 中围绕所有 3 个(X、Y、Z) Axis 旋转模型

转载 作者:行者123 更新时间:2023-11-30 04:01:25 29 4
gpt4 key购买 nike

我有下一个问题。我正在尝试同时围绕所有 3 个轴旋转 3D 模型。这意味着我想通过按下键盘上的按钮围绕 X Axis 旋转模型,然后是 Y Axis ,然后再次旋转 X 等等。问题是当我像这样使用 XMMatrixRotationX、XMMatrixRotationY 或 XMMatrixRotationZ 时:

    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,它只是说一个轴 vector 。我不明白如何访问这些,我在发布的代码中使用的方法不需要发送任何 Axis 。我不明白为什么这是必要的,或者如何去做,以防这是正确的解决方案。

如有任何帮助,我们将不胜感激。

最佳答案

我在这里找到了答案:

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=onepage&q=XMMatrixRotationQuaternion&f=false

我必须使用 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)));
}

工作起来很有魅力:)

关于c++ - 在 DirectX 11.2 C++ 中围绕所有 3 个(X、Y、Z) Axis 旋转模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776190/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com