Как 3D-двигатели обычно обрабатывают вращение объекта? (Иллюстрировано)

StackOverflow https://stackoverflow.com/questions/3909802

Вопрос

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

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

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

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

alt text

Это было полезно?

Решение

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

Другие советы

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

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

Там действительно не верный Порядок ротации. Если вы делаете свой собственный игровой двигатель, заказ действительно зависит от вас.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top