在OpenGL中获取X,Y和Z轴上的弧度相机旋转?

我正在尝试在OpenGL中的各个轴上获取相机旋转(但具体使用Java,LWJGL和jME)。 相机对象允许我将方向作为Vector3f,但这似乎不能用于获得分量旋转; 每个轴显示与另一个轴相关联。 我发现带有偏移的角度分量toAngleAxis是一个快速的黑客,但在大多数情况下无法正常工作。 不幸的是,我不太擅长数学,否则我可能已经解决了这个问题:)再次,我只需要X,Y和Z轴分量和弧度,从0弧度到2 PI弧度。

有人可以帮忙吗?

克里斯,先生干杯谢谢

获得旋转角度只需要将笛卡尔坐标中给出的视图矢量转换为球面坐标。 您可以在维基百科中找到公式。

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

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

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

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

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