3D дилемма вращения - PullRequest
       32

3D дилемма вращения

0 голосов
/ 01 декабря 2011

Хорошо, надеюсь, я смогу объяснить это всесторонне ... прости меня, если я тебя сильно запутаю ...

Я использую старый раздражающий движок, который применяет матрицу вращения к объекту, используя только локальное пространство.

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

Вращения будут нормальными, если вращаться только на 1 ось, но, конечно, они станут неуклюжими, если указать вращение вокруг 2 осей (например, вращение вокруг ВВЕРХ и ВПРАВО), поскольку вращение вокруг ВВ применяется с использованием локальной UP, а не глобальный (т. Е. Мировой) UP.

Например, скажем, у нас есть камера (0,0,0), смотрящая на широкую сторону плоскости (0, -5,0). Пользователь инструмента хочет повернуть эту плоскость примерно на 45 градусов вправо по X (ВПРАВО) и на 45 градусов вверх. Что ж, у меня нет возможности позволить им просто указать 2 значения поворота и получить желаемое вращение относительно глобального UP ... они обязаны методом проб и ошибок указать вращение относительно FORWARD (в данном случае Y) в чтобы держать объект в вертикальном положении.

Что мне интересно, так это: как я могу преобразовать вращения вокруг 2 осей в вращения вокруг 3 осей, предполагая, что вращения вокруг UP являются глобальным UP, и при этом все еще достигают вращения, которое будет представлять пользователь.

1 Ответ

0 голосов
/ 01 декабря 2011

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

Так что, если вы хотите, чтобы пользователи могли вращаться по всему миру, вам нужно найти правильную комбинацию вращений / перемещений вокруг локальных осей объекта.

В поиске Google для rotation about arbitrary axis появилась ссылка:

http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...