Локальные вращения
Блокировка рамки
Из предыдущих упражнений напрашивается вывод, что для представления процесса вращения в MAXScript следует выбрать рамочную систему координат. Однако у этой системы координат имеется один существенный недостаток, который иллюстрирует следующее упражнение.
1. Выберите вариант Gimbal из раскрывающегося списка Reference Coordinate System на основной панели инструментов 3dsMax.
2. Выделите объект в любом видовом окне и поворачивайте его вокруг оси Y до тех пор, пока гизмо оси X не совпадет с гизмо оси Z.
Итак, существенный недостаток рамочной системы координат состоит в том, что при вращении вокруг оси Y на 90° положение гизмо осей X и Z совпадает, а следовательно, они обозначают одну и ту же ось вращения. Такая ситуация называется блокировкой рамки и в значительной степени ограничивает выбор видов вращения, которые можно выполняь.
3. Подобного осложнения можно в какой-то степени избежать, изменив порядок следования осей вращения. Так, если заранее известно, что объект должен,
Глава 5
скорее всего, повернуться на 90° вокруг оси Y, порядок следования осей можно изменить на следующий: YZX или YXZ, чтобы первым выполнялось вращение вокруг оси Y. Это позволяет исключить блокировку рамки при вращении объекта на 90° вокруг оси Y. Но если затем повернуть объект на 90° вокруг оси Z или X, блокировки рамки избежать не удастся.
Это основная причина, ограничивающая применение рамочной системы координат для представления процесса вращения.
Во всех приложениях трехмерного моделирования и анимации, включая 3dsMax, имеется собственное представление локального вращения, т.е. поворота вокруг локальных осей объекта. Но как было только что показано, вращение в локальной системе координат не дает истинных значений для треков X Rotation, Y Rotation и Z Rotation в окне Track View. В этом смысле локальное вращение не позволяет правильно судить о происходящем.
С другой стороны, рамочная система координат дает более точное представление об истинных значениях вращения вокруг осей X, Y и Z, хотя вращение в этой системе вокруг нескольких осей рассчитывается в определенном порядке. Если изменить порядок расчетов, конечная ориентация объекта, скорее всего, окажется другой.
Таким образом, точного способа представления конкретного локального вращения с помощью значений эйлерова вращения вокруг осей X, Y и Z не существует. В силу особого характера расчетов вращения в трехмерном пространстве этим недостатком страдают буквально все приложения трехмерного моделирования и анимации.