OpenGL中的3D旋转

Posted

技术标签:

【中文标题】OpenGL中的3D旋转【英文标题】:3D rotation in OpenGL 【发布时间】:2014-07-15 14:51:38 【问题描述】:

所以我试图根据四元数信息对openGL中的图像进行一些旋转操作,我想知道,有没有办法通过向量定义我的图像的位置(比方说(001)) ,然后将四元数应用于该向量以围绕任意原点旋转我的图像?我一直在使用 GLM 进行所有数学工作。 (使用 C++)

或者有没有更好的方法来做到这一点,我还没有想出来?

【问题讨论】:

你确定你做了一些研究吗?谷歌搜索rotation about arbitrary point 会产生大量结果。 该网站上至少有一个搜索结果正确:***.com/questions/23442499/…。 【参考方案1】:

如果你想绕点P = x, y, z旋转,那么你可以简单地平移-P,绕原点旋转,然后平移回P

【讨论】:

【参考方案2】:

应用转换的顺序是:

scale -> translation to point of rotation -> rotation -> translation

所以你的最终矩阵应该被计算出来:

glm::mat4 finalTransform = translationMat * rotationMat * translationToPointOfRotationMat * scaleMat;

【讨论】:

以上是关于OpenGL中的3D旋转的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 在 OpenGL 中移动自动旋转的 3d 多边形

OpenGl读取导入3D模型并且添加鼠标移动旋转显示

OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转

opengl旋转曲面画立体图

OpenGL - 将变换应用于 3D 空间中的多边形

Opengl es Android 3D 手指触控旋转object