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

How to rotate muliple objects around the same pivot/point in 3D?

本文关键字:旋转 对象 3D      更新时间:2023-10-16

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

_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)。
  2. R:应用旋转
  3. Tinv:翻译回来

由于OpenGL矩阵的结构方式,正确的顺序是Tinv * R * T