Как движки 3D обычно обрабатывают вращение объекта?(Иллюстрированный) - PullRequest
2 голосов
/ 12 октября 2010

Я создаю быстрый 3D-движок для разрабатываемой игры.

В настоящее время я обрабатываю вращение трехмерных объектов, вращая вокруг глобальной оси Y, X, а затем Z. Это правильно?способ сделать это, или я должен вращать объекты вокруг своей локальной оси?

Что вы рекомендуете и почему?

Если метод локальной оси является правильным способом, будет ли 3D 3x3 илиМатрица 4х4 должна использоваться для правильного расчета поворотов?Как?

альтернативный текст http://i51.tinypic.com/2417aqc.png

Ответы [ 3 ]

1 голос
/ 12 октября 2010

Матрицы 4x4 дают вам больше гибкости.Например, вы можете объединить несколько преобразований (перемещение, вращение и т. Д.) С помощью умножения матриц.

0 голосов
/ 14 марта 2016

На самом деле нет правильного порядка вращений. Если вы создаете свой собственный игровой движок, заказ действительно зависит от вас.

Однако это не значит, что вы не можете быть согласны с другими игровыми движками. Например, Unity применяет повороты Эйлера на угол Z, X, Y. ( source ) И я не могу подтвердить 100%, но мой опыт работы с Unity заставляет меня поверить, что он использует оси, не локальные.

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

Но на самом деле, если вы хотите избежать всех этих проблем, вам, вероятно, следует просто узнать о кватернионах ...

0 голосов
/ 12 октября 2010

Чего ты пытаешься достичь?Если вы хотите, чтобы объект «вращался», то повороты должны выполняться относительно локального происхождения.С другой стороны, вращение вокруг глобального источника приведет к тому, что объект будет «вращаться» вокруг глобального источника.

Посмотрите обсуждение порядка преобразования здесь для иллюстрации.

...