У всякого геометрического объекта имеется своя точка опоры, которая представляет собой точку, вокруг которой происходит перемещение, вращение и масштабирование объекта. До сих пор в этой главе преобразования рассматривались лишь относительно устанавливаемой по умолчанию точки опоры объекта.
Для преобразования точки опоры объекта вручную выполните следующее упражнение.
1. Создайте любой объект.
2. Перейдите к панели команд Hierarchy.
3. Если объект выделен, активизируйте кнопку Affect Pivot Only (Оказывать влияние только на точку опоры).
Точка опоры перемещается и вращается, когда выполняются преобразования перемещением и вращением. На приведенном ниже рисунке показана точка опоры параллелепипеда после того, как он был преобразован произвольным образом.
Для изменения точки опоры объекта в MAXScript воспользуйтесь свойством .pivot, чтобы установить или переместить точку опоры, например:
object.pivot = [0, 0, 10.0]
или
object.pivot.z = 10.0
Любые последующие преобразования объекта будут происходить относительно нового центра преобразования.
Для преобразования точки опоры средствами MAXScript выполните следующее упражнение.
1. Создайте параллелепипед. Введите следующую строку кода и нажмите клавишу :
b = box()
2. Переместите точку опоры данного объекта. Введите следующую строку кода и нажмите клавишу :
b.pivot.z = 40.0
3. Перейдите к панели команд Hierarchy. Активизируйте кнопку Affect Pivot Only.
Убедитесь в том, что параллелепипед выделен. Как видите, точка опоры параллелепипеда смещена по оси Z.
4. Установите точку опоры в центре параллелепипеда с помощью свойства .center. Введите следующую строку кода и нажмите клавишу :
b.pivot = b.center
Как видите, точка опоры перемещается в центр параллелепипеда.
Если выполняется вращение, в 3ds Max предполагается, что это делается в системе мировых координат относительно точки опоры. Преобразования можно выполнять и относительно других точек объекта или же в иной системе координат. Это делается с помощью контекстов, где указывается ссылка на выполняемую операцию. К наиболее важным контекстам относятся coordsys и about.
coordsys указывает систему координат для операции.
about указывает точку опоры (или центр преобразования) для операции. Контекст about применяется к операциям вращения и преобразования.
Для того чтобы воспользоваться контекстом about, выполните следующее упражнение.
1. Создайте два цилиндра на сцене. Для этого введите следующие строки кода, нажав после каждой из них клавишу :
c1 = cylinder height:50
c2 = cylinder pos:[40, 0, 0]
Далее попробуйте выполнить два разных вращения цилиндра c1.
2. Введите следующую строку кода и нажмите клавишу :
rotate c1 (quat 45 y_axis)
По умолчанию используется система мировых координат, а точка опоры находится в основании цилиндра. Далее вам предстоит ознакомиться с контекстом about и его применением.
3. Щелкните правой кнопкой мыши в любом видовом окне и нажмите комбинацию клавиш , чтобы отменить только что выполненное вращение.
4. Введите в приемнике команд следующую строку кода и нажмите клавишу :
about c2 rotate c1 (quat 45 y_axis)
Теперь результат вращения будет иным, поскольку на этот раз центр преобразования находится в точке опоры цилиндра c2.
Префикс контекста about указывается в начале, а не в конце выражения, как можно было бы ожидать. В 3ds Max операторы интерпретируются слева направо, поэтому контекст следует применять до операции вращения. Если поместить префикс контекста about в конце выражения, он будет применен к следующей вводимой операции.
Ниже приведены другие примеры применения контекста about:
n about [x, y, z] — выполняет вращение определенной точки;
n about selection — выполняет вращение вокруг центра выделенных в данный момент объектов.