1

我正在尝试在 OpenGL 的各个轴上获取相机旋转(但具体使用 Java、LWJGL 和 jME)。相机对象允许我将方向作为 Vector3f,但这似乎无法获得组件化的旋转;每个轴似乎都与另一个轴相关联。我发现带有偏移角度分量的 toAngleAxis 是一种快速破解方法,但在大多数情况下无法正常工作。不幸的是,我的数学不太好,否则我可能能够解决这个问题:) 同样,我只需要分量化的 X、Y 和 Z 轴,并以弧度表示,从 0 弧度到 2 PI 弧度。

任何人都可以帮忙吗?

提前干杯和感谢,克里斯

4

2 回答 2

3

我建议阅读有关欧拉角、偏航/俯仰/滚动和四元数方向的信息。这些主题将帮助您了解所涉及的所有内容。如果我理解正确,您正在尝试从指定的方向构造欧拉角。

有关使用欧拉角的一些算法,请参阅此代码。特别是,我相信您想要的是 setDirection 方法。

这将为您提供来自方向矢量的偏航和俯仰。请注意,您只需要 2 次旋转,因为“滚动”需要围绕方向矢量(或您的方向指定为单个四元数旋转)进行旋转。

于 2009-06-14T18:09:05.093 回答
1

获得旋转角度只需将笛卡尔坐标中给出的视图向量转换为球坐标。您可以在wikipedia中找到公式。

viewvector = <x, y, z>

r = sqrt(x² + y² + z²)
phi = arctan2(y, x)
theta = arccos(z / r)

请注意,您只能从视图向量中获得两个旋转角度。获得第三个旋转角度需要知道投影平面 x 或 y 轴。

于 2009-06-14T18:06:44.850 回答