Метод EulerAngles

Преобразование вращением

Вращение является более сложным видом преобразования, чем изменение по­ложения и масштаба, поскольку требует более сложных математических расчетов.

Как и для изменения положения и масштаба, для вращения объектов в MAXScript предусмотрены два способа.

• Установка свойства .rotation объекта явным образом

• Применение метода rotate

При изменении положения и масштаба значения по каждой из осей X, Y и Z всегда выражаются одним числом, например 1, 0 или 34,5. А вращение на опре


Глава 5

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

• EulerAngles

• Кватернионы

• AngleAxis

 

Метод EulerAngles является, вероятно, самым понятным и лучше всего соответствующим тем операциям вращения, которые можно выполнять и наблюдать в интерфейсе 3dsMax.

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

b.rotation = eulerAngles 0 45 0

В приведенной выше строке кода объект поворачивается на 45° вокруг оси Y в системе мировых координат. Вращение по методу eulerAngles проще всего понять, поскольку оно соответствует вращению объектов, наблюдаемому в видовых окнах.

Результат вращения по методу eulerAngles можно присвоить переменной,

чтобы затем использовать в другом объекте:

ang = eulerAngles 0 45 0

b.rotation = ang

Переменная ang в действительности представляет собой объект MAXScript, имеющий тип данных вращения.

Углы вращения вокруг нескольких осей указываются следующим образом:

ang = eulerAngles 30 20 44

При установке ключевых кадров анимации с помощью метода eulerAngles изменение вращения между двумя последовательными ключевыми кадрами ограничивается углом 180°, поскольку в методе eulerAngles используется кратчайший путь перехода от одного ключевого кадра к другому.

Для того чтобы повернуть объект методом eulerAngles, выполните следующее упражнение.

1. Введите в приемнике команд следующий фрагмент кода, чтобы создать цилиндр и переменную euAngle:

c = cylinder height: 50
euAngle = eulerAngles 0 45 0

В итоге значение угла поворота типа eulerAngles присваивается переменной euAngle.

2. Введите следующую строку кода, чтобы повернуть цилиндр:

rotate c euAngle


Преобразования и анимация

 

 


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