17得票3回答
基于四元数的3D相机应该累积四元数还是欧拉角?

因此,我编写了一个四元数为基础的3D相机,面向新手程序员,使他们可以轻松集成和开始使用。 在开发过程中,我最初将用户输入作为欧拉角,然后根据该帧输入生成一个基于四元数的旋转。然后,我会取相机的四元数并将其乘以我们为该输入生成的四元数,理论上应该简单地将输入旋转添加到相机旋转的当前状态中,从而...

17得票2回答
在一个轴上旋转四元数?

我有一个被四元数旋转的模型。我只能设置旋转,无法添加或减少任何内容。我需要获取一个轴的值,然后在其上添加一个角度(也许是度数或弧度),然后重新添加修改过的四元数。 如何做到这一点?(对每个轴作回答)。

14得票4回答
欧拉角转四元数, 然后四元数转欧拉角

我正在使用lib glm (http://glm.g-truc.net/)测试四元数,但是我遇到了一个问题;当我将欧拉角转换为四元数然后立即将四元数转换为欧拉角时,我的结果与我的初始欧拉角完全不同。这正常吗?可能是因为旋转不是可交换的吗? 测试代码:#include <glm\quat...

14得票1回答
3ds Max 到 C++/DirectX 应用方向的转换

我想从3ds max导出对象到我的C++/DirectX应用程序,但我在导出方向上遇到了问题。 3ds max使用右手坐标系,其中Z轴朝上,而我的应用程序使用左手坐标系,其中Y轴朝上。我在整个问题中使用{x, y, z, w}表示组件。 我有3个骨骼(或任何其他分层对象)在3ds max中...

14得票4回答
两个四元数旋转的点积

我知道两个四元数的点积(或内积)是旋转之间的角度(包括轴-旋转)。这使得点积等于四元数超球面上两点之间的夹角。 然而,我找不到如何实际计算点积。 任何帮助都将不胜感激! 当前代码:public static float dot(Quaternion left, Quaternion rig...

14得票3回答
四元数 -> 欧拉角 -> 旋转矩阵问题 (GLM)

我正在编写一个程序,它从一个包含场景描述的文件中加载数据,然后使用OpenGL显示它。我在所有的数学操作中都使用GLM库。场景文件中的旋转是以四元数格式存储的。我的场景管理系统接收对象的欧拉角旋转,并在绘制时将这些角度转换为旋转矩阵。 因此,在我的加载过程中,我将四元数旋转转换为欧拉角用于存...

14得票1回答
当物体旋转时,法线的旋转方向错误

我正在使用WebGL渲染一个简单的环面。旋转顶点很好用,但是法向量有问题。当绕单个轴旋转时,它们保持正确的方向,但是当绕第二个轴旋转时,法向量开始逆向旋转,直到其中一个旋转为180°,然后法向量完全逆着它们应该旋转的方向旋转。 我认为问题在于用于旋转的四元数,但我还没有确定哪里出了问题。 这...

13得票4回答
朝向四元数使用上向量

我有一个相机(在自定义3D引擎中),它接受四元数作为旋转变换。我有两个表示相机和要观察的对象的3D点。我想计算从相机到对象的四元数,同时尊重世界上方轴。 这个问题没有"up"向量,但是询问同样的事情。所有三个答案都使相机指向正确的方向,但是会滚动(就像偏航/俯仰/翻滚;想象一下当您看着某物时...

13得票3回答
四元数的“lookAt”函数

我正在解决以下问题。我正在处理骨骼动画,想让玩家的头部跟随空间中的另一个对象。我的上轴是+Z,前轴是+Y,四元数的大小在W中。我尝试使用gluLookAt的mesa代码并使用3x3矩阵转换为四元数,但结果不如预期,所以我走了另一条路线... 到目前为止,我得到了以下代码,至少玩家的头部正在旋...

13得票2回答
四元数达到万向锁问题

为了避免旋转时出现角度锁定,我尝试使用四元数。不知何故,我仍然会出现万向节锁定。 我不确定是由于我实现的数学问题还是设计错误,所以请指出是否应该改变我的物体坐标方法。 每个物体都包含一个X、Y、Z值和俯仰、偏航、翻滚值。当我更改旋转值时,该物体根据上述信息重新计算其顶点。该逻辑如下: ...