2012-03-23 5 views
1

Я пытаюсь повернуть узел вокруг пользовательской точки центра в Ogre3D, но я не могу найти способ сделать это. Я изучал кватернионы и матрицы, но они, похоже, не делают то, что я пытаюсь сделать (но, честно говоря, я не совсем уверен, что полностью их понимаю).Ogre3D: Вращение относительно настраиваемой центральной точки

Рисунок ниже иллюстрирует то, что я хочу («дверь» в стене, как видно сверху). 'o' представляет собой центральную точку (шарнир), 'x' дверь, '=' стену.

- Original position 
- What I get:   What I want: 

    == x x o x x ==  == x o x x x == 

- After a 90 degree clockwise rotation: 
- What I get:   What I want: 

     x 
     x     x 
    ==  o  ==  == o  == 
     x     x 
     x     x 
          x 
+0

Почему бы не объединить переход и поворот? –

ответ

2

Если речь идет об объекте, который вы хотите вращать вокруг одной и той же точки всегда (например, двери), самым простым способом было бы изменить точку поворота объекта.

Это может быть сделано вашим художником в Maya/Max/Blender.

Или вы можете прикрепить дверь к дополнительному узлу сцены в нужном месте. А затем поверните этот дополнительный узел сцены. Это имеет то преимущество, что вы можете делать все, начиная от Огра.

+0

Звучит многообещающе. Мы попробуем. –

0

Основной метод с точки зрения matrix calculus является:

  • движение модели к точке

  • вращать модель

Сначала вы можете попробовать выполнить Translate(...), после Rotate(...), один ti я suceedeed на этом, можно оптимизировать, используя одну единственную матрицу, с данными о переводе и ротации, поэтому будет выполнять то, что вы хотите, с одним вызовом Transform(...)

Надеюсь, это поможет.

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