Контексты

МетодAngleAxis

Если объект нужно повернуть на угол более 360°, в таком случае можно воспользоваться объектами класса AngleAxis. Такие объекты реализуются подобно кватернионам следующим образом:

ang = angleaxis 30 [1, 0, 0]

ang = angleaxis 30 x_axis

Оба приведенных выше выражения равнозначны, поскольку в обоих случаях создается объект ang, который обеспечивает вращение на 30° вокруг оси X. Для вращения объекта по методу AngleAxis выполните следующее упражнение.

1. Установите 3dsMax в исходное состояние.

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

b = box()

3. Включите режим Auto Key и переместите ползунок временной шкалы анимации к кадру 10. Введите в приемнике команд следующую строку кода:

b.rotation.x_rotation = 720

4. Воспроизведите анимацию. Объект не вращается.

5. Переместите ползунок временной шкалы анимации к кадру 10. Если режим Auto Key все еще включен, введите в приемнике команд следующий фрагмент кода:

ang = angleaxis 720 [1, 0, 0]

rotate b ang

6. Выключите режим Auto Key и воспроизведите анимацию. Объект совершит два полных оборота.

У всякого геометрического объекта имеется своя точка опоры, которая представляет собой точку, вокруг которой происходит перемещение, вращение и мас­штабирование объекта. До сих пор в этой главе преобразования рассматривались лишь относительно устанавливаемой по умолчанию точки опоры объекта.

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

1. Создайте любой объект.

2. Перейдите к панели команд Hierarchy.

3. Если объект выделен, активизируйте кнопку Affect Pivot Only (Оказывать влияние только на точку опоры).

Точка опоры перемещается и вращается, когда выполняются преобразования перемещением и вращением. На приведенном ниже рисунке показана


Глава 5

точка опоры параллелепипеда после того, как он был преобразован произвольным образом.

 

 


Для изменения точки опоры объекта в MAXScript воспользуйтесь свойст­вом .pivot, чтобы установить или переместить точку опоры, например:

object.pivot = [0, 0, 10.0]

или

object.pivot.z = 10.0

Любые последующие преобразования объекта будут происходить относи­тельно нового центра преобразования.

Для преобразования точки опоры средствами MAXScript выполните следующее упражнение.

1. Создайте параллелепипед. Введите следующую строку кода и нажмите кла­вишу <Enter>:

b = box()

2. Переместите точку опоры данного объекта. Введите следующую строку ко­да и нажмите клавишу <Enter>:

b.pivot.z = 40.0

3. Перейдите к панели команд Hierarchy.Активизируйте кнопку Affect Pivot Only.

Убедитесь в том, что параллелепипед выделен. Как видите, точка опоры параллелепипеда смещена по оси Z.


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

 

 


4. Установите точку опоры в центре параллелепипеда с помощью свойства .center. Введите следующую строку кода и нажмите клавишу <Enter>:

b.pivot = b.center

Как видите, точка опоры перемещается в центр параллелепипеда.

 

 

 

 


Если выполняется вращение, в 3dsMax предполагается, что это делается в системе мировых координат относительно точки опоры. Преобразования можно выполнять и относительно других точек объекта или же в иной системе координат. Это делается с помощью контекстов, где указывается ссылка на выполняемую операцию. К наиболее важным контекстам относятся coordsys и about.

• coordsys указывает систему координат для операции.

• about указывает точку опоры (или центр преобразования) для операции. Контекст about применяется к операциям вращения и преобразования.


Глава 5

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

1. Создайте два цилиндра на сцене. Для этого введите следующие строки кода, нажав после каждой из них клавишу <Enter>:

cl = cylinder height:50

c2 = cylinder pos:[40, 0, 0]

 

 

 


Далее попробуйте выполнить два разных вращения цилиндра c1.

2. Введите следующую строку кода и нажмите клавишу <Enter>:

rotate c1 (quat 45 y_axis)

 

 


По умолчанию используется система мировых координат, а точка опоры находится в основании цилиндра. Далее вам предстоит ознакомиться с контекстом about и его применением.

3. Щелкните правой кнопкой мыши в любом видовом окне и нажмите комбинацию клавиш <Ctrl+Z>, чтобы отменить только что выполненное вращение.

4. Введите в приемнике команд следующую строку кода и нажмите клавишу <Enter>:

about c2 rotate c1 (quat 45 y_axis)


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

Теперь результат вращения будет иным, поскольку на этот раз центр

преобразования находится в точке опоры цилиндра c2.

 

 


Префикс контекста about указывается в начале, а не в конце выражения, как можно было бы ожидть. В 3dsMax операторы интерпретируются слева направо, поэтому контекст следует применять до операции вращения. Если поместить префикс контекста about в конце выражения, он будет применен к следующей вводимой операции.

Ниже приведены другие примеры применения контекста about:

• about [x, y, z] — выполняет вращение определенной точки;

• aboutselection — выполняет вращение вокруг центра выделенных в данный момент объектов.