如何在 3D 中围绕同一个枢轴/点旋转多个对象?

Posted

技术标签:

【中文标题】如何在 3D 中围绕同一个枢轴/点旋转多个对象?【英文标题】:How to rotate muliple objects around the same pivot/point in 3D? 【发布时间】:2016-11-11 16:40:29 【问题描述】:

这是初始化模型矩阵时的旋转代码:

_model =    translate(_position) *
                    (   rotate(_rotation.data[0], 1.0f, 0.0f, 0.0f) * 
                        rotate(_rotation.data[1], 0.0f, 1.0f, 0.0f) * 
                        rotate(_rotation.data[2], 0.0f, 0.0f, 1.0f)) *
                    scale(_scale);

基本上,我有一个 3D 关卡,我想围绕同一个轴心点旋转关卡和其中的所有对象。

我怎么能这样做?

【问题讨论】:

【参考方案1】:

这通常通过三个矩阵的连接(即乘法)来完成:

    T:将所需的枢轴平移到原点 (0, 0, 0)。 R:应用旋转。 Tinv:翻译回来。

由于 OpenGL 矩阵的结构方式,正确的顺序是 Tinv * R * T。用它预乘你的视图矩阵。

【讨论】:

哦,好的,谢谢,所以我创建了三个矩阵并按照您刚刚指定的方式将它们组合在一起?谢谢!

以上是关于如何在 3D 中围绕同一个枢轴/点旋转多个对象?的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenGL 围绕枢轴点旋转

如何在 Pygame 中围绕偏离中心的枢轴旋转图像

围绕枢轴点旋转刚体

Android围绕动态枢轴旋转视图

如何以编程方式撤消到枢轴点的位置转换?

AS3 围绕空间点旋转 3D 对象