Ограничения, присущие методу 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