2016-11-11 2 views
0

Вот код вращения при инициализации матрицы модели:Как вращать объекты с несколькими объектами вокруг одной и той же точки поворота/точки в 3D?

_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

Обычно это делается с помощью конкатенации (то есть умножение) из трех матриц:

  1. T: Перевести нужную точку опоры для начала координат (0, 0, 0).
  2. R: Применить поворот.
  3. Tinv: Перевести обратно.

Из-за того, что структуры OpenGL структурированы, в правильном порядке Tinv * R * T. Подумайте над этим.

+0

oh ok thanks, поэтому я создаю три матрицы и несколько их вместе так, как вы только что указали? БЛАГОДАРЯ! – user3783728

Смежные вопросы