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

时间:2016-11-11 16:40:30

标签: c++ opengl rotation

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

_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 个答案:

答案 0 :(得分:1)

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

  1. T:将所需的轴转换为原点(0,0,0)。
  2. R:应用轮换。
  3. Tinv:翻译回来。
  4. 由于OpenGL矩阵的结构方式,正确的顺序为Tinv * R * T。通过它预乘你的视图矩阵。