Метод 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.