OpenGL中的对象轴旋转

OpenGL中的对象轴旋转,opengl,Opengl,在OpenGL中旋转对象时,轴也会随对象旋转。有没有办法避免这种情况?基本上,我想实现围绕同一轴的连续旋转 我对四元数不是很熟悉,但在我读到它时,它似乎是一个解决方案。还有别的办法吗 在OpenGL中旋转对象时,轴也会随对象旋转 变换不会旋转对象,而是旋转坐标系。链接旋转是非交换的。因此,您必须做的只是:交换旋转操作,应用的第一个旋转,即最后一个在堆栈上相乘的旋转指定您的对象旋转,然后(即之前相乘)另一个旋转 顺便说一句:在你写的评论中: 我使用glGetDoublev存储以前的变换,然后在应用

在OpenGL中旋转对象时,轴也会随对象旋转。有没有办法避免这种情况?基本上,我想实现围绕同一轴的连续旋转

我对四元数不是很熟悉,但在我读到它时,它似乎是一个解决方案。还有别的办法吗

在OpenGL中旋转对象时,轴也会随对象旋转

变换不会旋转对象,而是旋转坐标系。链接旋转是非交换的。因此,您必须做的只是:交换旋转操作,应用的第一个旋转,即最后一个在堆栈上相乘的旋转指定您的对象旋转,然后(即之前相乘)另一个旋转

顺便说一句:在你写的评论中:


我使用glGetDoublev存储以前的变换,然后在应用新的旋转之前,我通过glLoad加载该矩阵,然后将其与新的旋转矩阵相乘。在我的应用程序中,我必须序列化磁盘上的对象,这就是我这样做的原因。除了对象之外,我还存储了变换矩阵


这表明您将OpenGL误认为是场景图或矩阵数学库。两者都不是。不要将OpenGL用作“对象存储”(它不是这样工作的),也不要依赖OpenGL的矩阵函数(它们已从OpenGL-3中删除)。

你能用部分乘法矩阵显示你的代码吗?我使用glGetDoublev存储以前的变换,然后在应用新的旋转之前,我用glLoad加载那个矩阵,然后用新的旋转矩阵乘以它。在我的应用程序中,我必须序列化磁盘上的对象,这就是我这样做的原因。除了对象之外,我还存储转换矩阵。我考虑使用openGL进行快速原型制作,但实际上我并不需要它,因为我只将其用于矩阵操作,我知道openGL不适用于此。你能为我推荐一家图书馆吗?我想变换对象而不是轴。@Aarkan:矩阵数学不是很复杂。您可以自己实现它,或者使用类似于或LAPACK的库。对于三角几何,如果你真的只想做我提供的4x4矩阵数学,这是在公共领域。谢谢,只是一个疑问。例如,如果我使用glm,我将矩阵R1和R2应用于对象M的两个旋转,也就是说,如果我执行此操作:R2*R1*M,那么R2是否仍会在旋转R1引起的旋转轴上运行?@Aarkan:是的。您必须了解,矩阵相乘会生成复合变换。最好考虑一下M的每个顶点v发生的各个步骤:首先v被R1旋转,产生v',然后v'被R2旋转到v''