当前位置: 首页 > 知识库问答 >
问题:

使对象绕全局轴Directx旋转

丌官晨
2023-03-14

我尝试绕全局y轴旋转对象(基本上,无论当前方向如何,都围绕0,1,0偏航)。我想给你看一张照片,但是声誉。。。我想绕全局轴而不是对象的局部轴旋转偏航。例如,如果我通过俯仰稍微倾斜一个长方体,然后尝试旋转偏航,它将以倾斜的角度而不是直线旋转长方体,就好像长方体根本没有倾斜一样。

每个对象将其位置和旋转存储在矩阵中,每个更新调用都会更新该矩阵。旋转的代码看起来是这样的:

D3DXMatrixRotationYawPitchRoll(&rotation, yaw, pitch, roll);
D3DXMatrixMultiply(&position, &rotation, &position);

其中,位置是每次更新都会平移和旋转的突出矩阵。这就是局部旋转,但我想通过全局轴旋转偏航。

我如何编写它,使偏航旋转完成,就好像局部上方向向量是(0,1,0),即使倾斜?

共有2个答案

华甫
2023-03-14

修正了这个问题。决定存储前一帧中的旧值以重建位置矩阵。

我现在根据当前帧的更改构建一个矩阵,完成平移和旋转,然后在创建最终矩阵之前将这些值添加到总值中。

工作起来很有魅力!

糜野
2023-03-14

在以下代码中,有两个旋转矩阵A和B。一个是通过worldYaw绕局部轴旋转,另一个是通过worldYaw绕全局轴旋转。

D3DXMatrixRotationYawPitchRoll(&rotation, yaw, pitch, roll);
D3DXMatrixRotationYawPitchRoll(&worldRotation, worldYaw, 0, 0);
D3DXMatrixMultiply(&A, &rotation, &worldRotation);
D3DXMatrixMultiply(&B, &worldRotation, &rotation);

如果D3D使用行向量或列向量,我永远也记不住它,所以我不能说A或B是你要找的:)

 类似资料:
  • 我有一个球员(绿色),我想让他左右旋转。 这可以通过在其局部Y轴上旋转来轻松实现。然而,问题是播放器可能会沿其局部X轴旋转。这是一张草图: 以下是从顶部看到的视图: 我需要沿红线旋转播放器。我需要这样做,不管他现在在X轴上有什么旋转。(玩家像超人一样飞行,见第一张图片) 通过使用父对象可以很容易地解决此问题,但这在我当前的设置中是不可能的。我当前使用的代码在局部旋转时会出现奇怪的旋转: 如何在全局

  • 我的屏幕上有一个旋转和平移的对象,但是我有两个关于z轴旋转的问题。解释起来有点棘手,所以我上传了两个视频来描述每个问题。 1) 反向旋转:在绕x轴旋转对象后,z轴旋转将被反向,并且应该如此。 2)错误的Z轴旋转:同样,在围绕x轴旋转物体后,我试图围绕z轴旋转物体,旋转导致不同的轴旋转。 我相信视频很好地描述了这些问题。 编辑:更新#1 好的,我想我找到了解决方案,就是只绕Z轴旋转相机,然后对模型本

  • 我想知道如何围绕它的Y轴旋转一个物体。 例如,我想旋转谷歌示例应用程序hello\u ar\u java的droid机器人https://github.com/google-ar/arcore-android-sdk/tree/master/samples/hello_ar_java围绕其Y轴,角度为alpha。

  • 我问了一个以前被问过一百万次的问题,但在浏览了这些问题并求助于其他网站之后,我仍然没有找到一个好的答案: 如何在全局轴上旋转图形,而不是本地轴? opengl中的旋转对象 如何像OpenGL中的glRotatef()一样旋转顶点? 在OpenGL中围绕3个轴旋转对象 在OpenGL中沿对象自身的轴旋转对象 有没有可能让一个物体绕着它自己的轴旋转,而不是绕着基坐标轴旋转? OpenGL旋转-局部轴与

  • 我试图旋转一个立方体,这样向下拖动总是绕着世界X轴旋转对象,而向一侧拖动总是绕着世界Y轴旋转对象,无论对象如何旋转。我看到了这个例子,它实现了我想要的准确行为:https://jsfiddle.net/MadLittleMods/n6u6asza/ 这是我遇到麻烦的jsFiddle代码:http://jsfiddle.net/9sqvp52u/ 我看到了这个stackoverflow答案:Open

  • 我是XNA的新手。我只是陷入了某种困境——我必须在游戏中倾斜/翻转角色,这意味着围绕X轴和Z轴旋转(不是同时旋转!)我可以做旋转-这意味着绕Y轴旋转。我有旋转矩阵,角色的当前位置向量(也是可以从旋转矩阵中获得的朝向/方向向量)我通过将朝向向量围绕Y轴旋转R弧度来实现旋转,即围绕Y轴旋转。比如说,如果我现在绕X轴旋转,那么方法是什么?例如,从站立姿势改为“超人飞行”姿势需要角色倾斜。。。y旋转不涉及