Ограничения, присущие методу EulerAngles
Свойство вращения
Составляющие свойства вращения объекта могут использоваться для задания вращения вдоль конкретной оси. Например, выражения
euAngle = eulerAngles 30 45 60
rotate b euAng
можно заменить выражениями, в которых свойство вращения устанавливается непосредственно:
b.rotation.x_rotation = 30
b.rotation.y_rotation = 45
b.rotation.z_rotation = 60
При таком способе установки свойства вращения угол поворота ограничивается величиной 360°.
Для проверки ограничения угла поворота величиной 360° выполните следующее упражнение.
1. Установите 3dsMax в исходное состояние.
2. Создайте стандартный параллелепипед, введя в приемнике команд
следующую строку кода: b = box()
3. Переместите ползунок временной шкалы к кадру 10, включите режим Auto Key (Автоматическая расстановка ключевых кадров), а затем введите следующую строку кода: b.rotation.z_rotation = 720
4. Выключите режим Auto Key и воспроизведите анимацию. Объект не вращается.
Глава 5
5. Переместите ползунок временной шкалы к кадру 10, включите режим Auto Key, а затем введите следующую строку кода:
b.rotation.z_rotation = 450
6. Выключите режим Auto Key и воспроизведите анимацию.
Объект повернется только на 90°, поскольку полный его оборот на 360° игнорируется (450 - 360 = 90).
Выполнение эйлерова вращения вызывает особые трудности как внутри 3dsMax, так и в MAXScript. Эти трудности связаны с тем, что при вращении объекта вокруг одной оси соответствующие изменения происходят относительно остальных осей. Данный факт иллюстрирует следующее упражнение.
1. Установите 3dsMax в исходное состояние.
2. Откройте окно приемника команд MAXScript Listener.
3. Создайте в окне вида сверху плоский и длинный параллелепипед, введя следующую строку кода:
b1 = box length:100 width:75 height:25
4. Создайте копию параллелепипеда: b2 = copy b1
5. Переместите вновь созданную копию параллелепипеда в сторону от оригинала:
b2.pos.x = 100
Такие размеры обоих параллелепипедов позволят вам лучше представить себе вращения, выполняемые в данном упражнении.
6. Выберите команду Graph Editors ⇨ Track View - Dope Sheet (Редакторы графических представлений ⇨ Вид трека - Подготовительная таблица) из главного меню 3dsMax. Разверните иерархию треков в окне Track View вплоть до треков анимации вращения объекта Box01.
Преобразования и анимация
В итоге должны быть видны треки X Rotation, Y Rotation и Z
Rotation. В данный момент значения углов вращения данного объекта вокруг всех трех осей равны нулю.
7. Выберите локальную систему опорных координат, введя в приемнике команд следующую строку кода: set coordsys local
8. Введите в приемнике команд следующую строку кода:
b1.rotation = eulerAngles 45 0 0
Параллелепипед повернется на 45° вокруг оси X мировых координат.
Соответствующее значение на треке XRotation в окне Track View
изменится до -45.
Далее вам предстоит повернуть параллелепипед вокруг его оси Y.
9. Введите в приемнике команд следующую строку кода:
b1.rotation = eulerAngles 0 45 0
10. Казалось бы, в результате этого вращения соответствующее значение на треке YRotation должно было бы измениться до 45, однако вместо этого значения на треках X Rotation, Y Rotation и Z Rotation стали равны около - 54, 74, -30,0 и 35, 26 соответственно.
Глава 5