|
Как описывалось ранее, составные
контроллеры принимают в качестве ввода
вывод подчиненных контроллеров и
объединяют полученные данные с любыми
параметрами, ассоциированными с
контроллером, манипулируют данными и
выводят результаты.
3DS МАХ распространяется с двумя
составными контроллерами уровня
трансформации (контроллеры Position/Rotation/Scale
и LookAt), контроллером, который
объединяет вращение вокруг отдельных
осей (контроллер вращения Euler XYZ),
контроллером для перемещения объекта
вдоль сплайна (контроллер Path position)
и контроллером, который производит
сложение результатов своих вводных
контроллеров (контроллер List).
Способ, в соответствие с которым
значения, выходящие из подчиненных
контроллеров, используются в контроллере
уровня трансформации, зависит от того,
присвоен ли контроллеру объект, гизмо
модификатора или центр модификатора. Для
контроллера трансформации на уровне
объекта возвращаемое положение является
положением точки вращения объекта
относительно начальной точки мировых
координат. Возвращаемые значения
поворота и масштаба относительны
положению точки вращения объекта.
Для контроллера трансформации уровня
гизмо модификатора или уровня центра,
возвращаемое значение положения является
относительным точке вращения объекта,
т.е. центр модификатора,
позиционированный в [О, О, 0]
располагается в точке вращения объекта.
Если точка вращения объекта после
применения модификатора изменяется,
гизмо модификатора и центр будут
оставаться в своем начальном положении.
Возвращаемые значения вращения и
масштаба относительны положению
центральной точки гизмо.
Контроллер Position/Rotation/Scale
Контроллер трансформации Position/Rotation/Scale
(PRS) объединяет ввод из контроллеров
положения, вращения и масштаба . Вывод
из контроллера PRS является матрицей
трансформации, которая используется 3DS
МАХ внутренним образом. Контроллер PRS
можно применять только на дорожках
трансформации объектов и гизмо
модификаторов.
Никаких настраиваемых пользователем
свойств с контроллером PRS не связано.
Контроллер LookAt
Контроллер трансформации LookAt
объединяет вывод из контроллеров
положения, вращения (тип данных Float) и
масштаба. Вывод контроллера LookAt
является матрицей трансформации,
используемой 3DS МАХ внутренним образом-
Контроллер LookAt можно применять только
в качестве контроллеров трансформации
для объектов, но не для модификаторов.
Контроллер LookAt вращает объект так,
чтобы негативная локальная ось Z всегда
указывала на точку вращения другого
объекта. Параметр вращения задает угол
поворота объекта вокруг локальной оси Z.
Целевой объект, за которым необходимо
следить, определяется в качестве
параметра контроллера LookAt. Целевой
объект контроллера LookAt можно увидеть
и отобразить только в разделе Parameters
панели команд Motion.
Использование контроллера LookAt с
объектом
-
Создайте в окне Тор два конуса.
Увеличьте окно на указанную высоту
конуса.
-
Выберите Local из выпадающего списка
Transform Coordinate System в
линейке инструментов. Это покажет
локальные оси выбранных объектов.
-
В Motion Parameters присвойте
контроллеру LookAt параметр
трансформации для Сопе02. Сопе02
вращается так, чтобы его
отрицательная ось Z указывала на
исходную точку мира.
-
Щелкните на Pick Target и выберите
ConeOl. Сопе02 поворачивается так,
чтобы его отрицательная ось Z
указывала на ConeOl. Точка вращения
для конуса расположена в центре его
дна. Это будет именно та точка, куда
указывает Сопе02.
-
Перемещайте любой конус в окне Тор.
При движении конуса база Сопе02
всегда указывает на ConeOl. Не
забудьте изменить Transform
Coordinate System или ограничения
осей, прежде чем пытаться
переместить конус в другое видовое
окно.
-
Вращайте Сопе02. Конус всегда
вращается относительно своей
локальной оси 2.
Контроллер LookAt используется камерами
Target, а также источниками света Target.
При создании одного из этих объектов ему
присваивается контроллер LookAt, затем
создается фиктивный объект, играющий
роль цели, и фиктивный объект
определяется как цель LookAt.
Контроллер Path
Контроллер Path позиционирует объект
так, чтобы точка вращения объекта
располагалась на сплайне. Кроме того,
создается параметр, подчиняющийся
контроллеру Path. Параметр называется
Percent . Параметр Percent задает
положение на сплайне для использования в
конкретный момент времени. Значение
Percent автоматически устанавливается в
0 в начале активного отрезка времени и в
100 в конце активного отрезка времени.
Сплайн для использования в качестве пути
указывается как параметр контроллера
Path. Сплайн пути контроллера Path может
устанавливаться и отображаться только в
разделе Parameters панели команд Motion.
Если выбранная форма содержит более
одного сплайна, то в качестве сплайна
пути используется первый из них.
Использование контроллера Path с
объектом
-
Создайте конус в окне Left.
Расширьте окно на указанную высоту
конуса. Это создаст конус, вершина
которого смотрит в направлении
положительной оси Х мира. Включите
опцию Slice On и установите Slice То
в 180.
-
В окне Тор создайте эллипс.
-
Выберите Local из выпадающего списка
Transform Coordinate System в
линейке инструментов. В результате
будут показаны локальные оси
выбранных объектов.
-
Выберите конус и в Motioni-^Parameters
присвойте контроллер Path
позиционному параметру конуса.
-
Убедитесь, что в Path Options опция
Follow отключена, нажмите Pick Path
и выберите эллипс. Конус изменит
свою позицию так, чтобы его точка
вращения (расположенная в середине
дна конуса) разместилась на первой
вершине эллипса. Обратите внимание
на то, что ориентация конуса не
изменяется .
-
Переместите эллипс. Во время
движения эллипса также будет
передвигаться и конус.
-
Проиграйте анимацию. За активный
сегмент времени конус проходит длину
эллипса.
-
Выберите Editr\Hold. С этого момента
начинается следующее упражнение.
Хотя контроллер Path классифицируется
как позиционный, он также может изменять
вращение объекта, к которому применен.
Опции Follow и Bank в Path Options
заставляют объект вращаться на основе
кривизны сплайна пути. Вращение от
контроллера Path дополняет любое
вращение, определенное пользователем.
Когда опция Follow отключена, ориентация
объекта не изменяется. При включенной
опции Follow объект вращается так, чтобы
"передняя часть" объекта всегда
указывала вдоль касательной сплайна.
"Передняя часть" объекта определяется
как направление, указывающее вдоль
положительной оси Х мира в начале
активного диапазона. Таким образом
правая сторона объекта в окне Тор
является "передней частью" объекта.
Опция Bank указывает, куда смотрит верх
объекта ("верх" определяется как
направление вдоль положительной оси Z
мира). Если Bank выключена или Bank
Amount равно нулю, верх объекта пытается
указывать в направлении положительной
оси Z мира. (Две степени свободы
используются опцией Follow,
следовательно для опции Bank осталась
только одна степень свободы. Таким
образом верх указывает в направлении
положительной оси Z мира только в той
степени, в которой это возможно.)
При включенной опции Bank объект будет
вращаться на основе локальной кривизны
сплайна. Для низких и умеренных значений
верх объекта имеет тенденцию указывать
внутрь сплайна. Для высоких значений
верх объекта вращается вокруг сплайна.
Smoothness (гладкость) определяет
скорость, с которой разрешено меняться
вращению при указании опции Bank.
Высокие значения смягчают результирующее
вращение. Эффекты параметров Bank Amount
и Smoothness взаимодействуют друг с
другом, поэтому для достижения желаемого
движения обычно требуется небольшая
интерактивная настройка значений. Как
правило, для достижения гладкого
движения следует использовать предельно
низкие значения указанных параметров.
Влияние значений Bank Amount и
Smoothness на контроллеры Path
-
Выполните Editi-Fetch для получения
сцены предыдущего упражнения.
-
Выберите конус.
-
Щелкните правой кнопкой в видовом
окне Perspective, щелкните на Play
Animation и продолжите проигрывание
анимации до завершения упражнения.
-
В
Motion^ Parameters
включите
Follow.
Конус повернется так, что его верх
будет указывать на сплайн .
-
Включите Bank. Конус, двигаясь вдоль
эллипса, будет наклоняться. Величина
наклона варьируется в зависимости от
кривизны сплайна.
-
Установите Smoothness в 2. Конус
будет меньше наклоняться в концах
эллипса, но больше по его сторонам.
-
Установите Smoothness в 0.5 и Bank
Amount в 0. Постепенно увеличивайте
значение Bank Amount. Рисунок 24.38
показывает конус со значением
наклона, равным 1.5. По мере возрастания значения градус
наклона увеличивается до точки,
когда конус начинает вращаться,
следуя по пути.
Во время проигрывания анимации можно
было заметить, что конус двигается
быстрее у концов эллипса и медленнее по
сторонам. При использовании контроллера
Path важно принимать во внимание
взаимосвязь между положением вершин
сплайна, служащего в качестве пути, и
временем. 3DS МАХ позиционирует объект
на сплайне во времени на основе
количества вершин сплайна - а не длины
сплайна или расстояния между вершинами.
Каждая вершина преобразуется в
равномерно распределенный во времени
ключ положения. Например, если в
качестве пути объекта используется линия
с 11 вершинами, создается 11 ключей.
Если активный диапазон времени находится
между 0 и 100 кадрами, объект
размещается на вершине 0 в кадре О, на
вершине 1 в кадре 10 и на вершине 2 в
кадре 20. В зависимости от расстояния
между вершинами скорость объекта во
времени может существенно изменяться.
В некоторых ситуациях требуется
постоянная скорость вдоль всего пути.
3DS МАХ обеспечивает возможность
модификации пути Безье так, чтобы по
траектории объекта поддерживалась
постоянная скорость. Модификация пути
Безье для поддержки постоянной скорости
выполняется в диалоге Advanced Key Info.
В следующем упражнении траектория
эмиттера системы частиц настраивается на
деформацию-дофт объекта. На сцене
лофт-объект (Fuse) использует анимацию
деформации масштаба для сокращения длины
фитиля во времени. Деформация шкалы была
определена так, чтобы длина фитиля
сокращалась во времени с постоянной
скоростью. Эмиттер системы частиц (Sparks)
назначается контроллеру пути там, где
путь является тем же сплайном, что и
путь лофта (FusePath). Поскольку вершины
для FusePath распределены неравномерно,
Sparks предшествует деформации шкалы.
Создание горяшего фитиля с
использованием анимированного масштаба
лофт-объекта системы частиц и
контроллера Path
-
Загрузите файл ch24_3.max из папки
Chapter 24 сопровождающего CD-ROM и
проиграйте анимацию.
-
Выберите объект Dummy.
-
Выберите Motioned
TrajectoriesOConvert From,
установите Samples в 11 и выберите
Fuse Path как сплайн.
-
Выберите в Track View контроллер
позиции для Dummy, затем на Function
Curves и щелкните на одной из кривых
функций, показанных в Track View для
позиции Dummy. Траектория для Dummy отображается в
окне Тор голубым цветом с 11 ключами
позиций на расстоянии 10 кадров друг
от друга. Точки на траектории
показывают приращение кадров.
Количество кадров приращения между
ключами позиций постоянно, однако
приращение кадров не распределено
равномерно между ключами. Хотя это
не тот путь, которому должны
следовать Sparks (искры), его можно
использовать для демонстрации
эффекта модификации траектории для
случая постоянной скорости.
-
На панели команд Motion щелкните на
Sub-Object и в видовом окне Тор
выберите все ключи позиций на
траектории.
-
Щелкните правой кнопкой мыши на
любом ключе позиции, выберите Key
Info и щелкните на Advanced .
-
Включите Constant Velocity
(постоянная скорость). Приращение кадров между смежными
ключами позиции распределено
равномерно. Ключи позиций по
прежнему размещены через каждые 10
кадров и находятся на прежних
местах. Можно заметить, что в Track
View изменилась только кривизна
между ключами.
-
Отключите
Constant Velocity
и
щелкните на
Normalize Time.
Положения ключей остались прежними,
но время, связанное с каждой
позицией, изменилось на основе
расстояния между ключами. В больших
сегментах приращений кадров больше,
чем в коротких. Между ключами
позиций скорость непостоянна.
-
Включите Constant Velocity.
Приращение кадров равномерно
распределяется на всей траектории.
Теперь, посмотрев на эффекты,
которые оказывают на траекторию
Constant Velocity и Normalize Time,
можно завершить анимацию.
-
В Motionc^Trajectories увеличьте
Samples до 101, выберите Convert
From и FusePath в качестве сплайна.
-
Выберите на траектории все ключи
позиций, а в Key Info отметьте
Constant Velocity. Щелкните на
Normalize Time.
-
Закройте
Key Info
и
щелкните на
Convert To.
Convert To генерирует из траектории
форму под названием ShapeOl.
-
Выберите Sparks и в Motion"-^
Parameters щелкните на Pick Path и
выберите в качестве пути ShapeOl.
-
Проиграйте анимацию.
Теперь Sparks на протяжении всей
анимации находится в том же самом
положении, что и деформация шкалы.
Контроллер Euler XYZ
По умолчанию для дорожек вращения
используется контроллер ТСВ Rotation.
Хотя данный контроллер и обеспечивает
гладкое вращение, однако кривые функций,
связанных с данным контроллером, в Track
View недоступны из-за того, что
контроллер ТСВ для управления вращением
применяет кватернионовскую математику.
Кватернионовская математика имеет четыре
значения - X, Y и Z единичного вектора (unit
vector) и угол вращения вокруг
единичного вектора (см- раздел "Типы
данных контроллеров" ранее в этой главе,
где приведены более подробные сведения о
кватернионовской математике). Другие
контроллеры вращения, также использующие
кватернионовскую математику - это Linear
и Smooth.
Помимо невозможности отображения кривых
функций вращения для данных
контроллеров, иногда требуется большее
управление вращением, нежели
обеспечиваемое данными контроллерами.
3DS МАХ обеспечивает дополнительный
контроллер вращения Euler XYZ, для
которого можно отобразить кривые функций
и отдельно управлять вращением
относительно каждой локальной оси
объекта.
Рассмотрим случай, когда вращается
объект вокруг осей Х и Y и необходимо
настроить интерполяцию на один из ключей
для вращения вокруг Х-оси. Значения
контроллера ТСВ для данного ключа можно
настроить либо в панели Motion, либо в
Track View, но также будет настраиваться
и интерполяция вращения вокруг оси Y в
данном ключе. Используя контроллер ТСВ
нельзя настроить значения интерполяции
для одной оси, не затрагивая значения
для всех остальных осей. Если
используется контроллер вращения Euler
XYZ, интерполяция для ключей, связанных
с вращением вокруг оси X, может
выполняться без влияния на вращение
вокруг оси Y.
Дополнительные преимущества применения
контроллера вращения Euler XYZ для
объекта заключаются в том, что для
каждой из осей вращения можно
использовать свой контроллер выражения,
а другие контроллеры выражения могут
ссылаться на вращение объекта.
Использование контроллера Euler ЛУ7лля
настройки параметров интерполяции для
отдельных осей врашения
-
Загрузите файл ch24_4.max из папки
Chapter 24 сопровождающего CD-ROM и
проиграйте анимацию. Коробка анимируется таким образом,
чтобы поворачиваться на 180° вокруг
своей локальной оси Z в кадрах с 0
по 100. Кроме того, коробка
поворачивается на 45° вокруг оси Y в
кадрах с 25 по 75. Как можно
заметить в видовом окне, вращение
вокруг оси Y имеет место и до 25
кадра, и после 75. Можно было бы
попытаться настроить параметры ТСВ
для ключей в кадрах 25 и 75, но в
данных кадрах это повлияло бы на
вращение коробки вокруг оси Z.
-
Откройте Track View и расширьте
дорожки так, чтобы отобразить
параметр вращения для BoxOl.
-
Выберите параметр вращения и
присвойте ему контроллер Euler XYZ.
-
Расширьте дорожки для параметра
вращения.
-
Выберите параметр Y Rotation и
щелкните на Function Curves.
Щелкните на кривой для отображения
ключей. Кривые функций показывают,
что значение вращения Y варьируется
между первым и вторым и между
третьим и четвертым ключами.
-
Щелкните правой кнопкой мыши на
первом ключе и отобразите диалог Key
Info.
-
Установите для первого ключа
выходную касательную в
тангенциальный тип Step.
-
Установите для четвертого ключа
входную касательную в тангенциальный
тип Step.
-
Проиграйте анимацию.
Теперь нет вращения вокруг оси Y до
кадра 25 и после кадра 75. Вращение
вокруг оси Z по-прежнему является
гладким.
Контроллеры List
Контроллеры List применяются для
объединения результатов нескольких
контроллеров. Например, можно добавить
помехи в предварительно определенное
движение, назначив контроллер List
желаемому параметру и добавив контроллер
Noise в качестве ввода для контроллера
List. Кроме того, контроллер List
предоставляет возможность интерактивно
добавлять дополнительное движение в
параметр, управляемый параметрическим
контроллером, подобным Path.
В следующем упражнении для части
анимации используется контроллер Path, а
затем для завершения анимации происходит
переключение на контроллер Безье. Сцена
состоит из мяча, движение которого
управляется контроллером пути. Путь
является кругом. Необходимо, чтобы в
анимации мяч был неподвижен в начале, а
впоследствии, передвигаясь по кругу,
ускорился в три раза и улетел туда, где
размещен фиктивный объект.
Объединение контроллеров Path, Bezier и
List для ограничения контроллера Path
временным диапазоном
-
Загрузите файл ch24_5.max из папки
Chapter 24 сопровождающего CD-ROM.
-
Откройте
Track View,
щелкните на
Filters
и
включите
Show Controller Types.
-
Расширьте дорожки для SphereOl так,
чтобы был виден контроллер Percent
под контроллером Position: Path.
-
Щелкните правой кнопкой мыши на
позиции ключа в кадре 100 и вызовите
диалог Key Info.
-
Измените значение кадра ключа на 300
и покиньте диалог.
-
Проиграйте анимацию. Мяч трижды
проходит по кругу с постоянной
скоростью.
-
В Track View щелкните на Function
Curves и затем на Add Keys.
-
Добавьте три ключа к кривой функции
Path Percent и щелкните на Move Keys.
-
Настройте три ключа на получение
кривой.Обратите внимание на то, что
имеется возможность проигрывать
анимацию во время настройки кривых и
видеть соответствующее движение в
реальном времени. Теперь мяч
стартует с последней позиции и
ускоряется в три раза, проходя круг
за 100 кадров. Теперь необходимо выполнить данное
движение за 80 кадров и затем
улететь в позицию фиктивного
объекта.
-
Щелкните на
Edit Keys
и
выберите
PositioniPath controller.
-
Щелкните и транспортируйте маркер
конца диапазона контроллера позиции
в кадр 80.
-
Щелкните на
Assign Controller
и
выберите
Position List.
-
Расширьте дорожки для
Position List,
выделите
Available
и
присвойте дорожке контроллер
Bezier Position.
-
Щелкните на Add Keys, щелкните на
кадре 80 в дорожке Bezier Position
для создания ключа и щелкните на
Move Keys.
-
Щелкните на свободной области Track
View для отмены только что
созданного выбора ключа.
-
Щелкните на контроллере Position
List для его выбора, щелкните на нем
правой кнопкой мыши и выберите из
всплывающего диалога Properties.
Появившийся диалог List Controller
покажет контроллер Path как
активный. Вы же хотите добиться
активности контроллера Bezier
Position, чтобы можно было
интерактивно настраивать позицию
мяча.
-
Выберите
Bezier Position,
щелкните на
Set Active
и
выйдите из диалога
List Controller.
-
Включите Animate и перейдите к кадру
100.
-
В окне Тор переместите SphereOl в
положение фиктивного объекта.
-
Отключите Animate и проиграйте
анимацию. Теперь мяч ускоряется по кругу в три
раза и улетает в новую позицию.
Обратите внимание на заметное
небольшое изменение скорости мяча,
когда он проходит кадр 80.
-
Выберите все ключи для контроллера
Percent и ключ в кадре 80 для
контроллеров Bezier Position.
Щелкните на Scale Keys и настройте
выбранные ключи за счет
транспортировки ключа в кадре 80 с
целью Bezier Position для получения
гладкого перехода скорости.
Контроллер List можно использовать для
объединения контроллеров Path и Bezier и
для того, чтобы заставить камеру
следовать за объектом вдоль пути.
Памятуйте об одном ограничении: если
контроллер Path подчиняется контроллеру
List, он должен быть первым контроллером
в списке. Если это не так, то любые
значения из контроллеров, предшествующих
Path, будут игнорироваться.
В следующем упражнении сцена состоит из
тора, катящегося между препятствиями. В
данной сцене необходимо, чтобы камера
всегда смотрела на тор и следовала
позади него.
Создание преследующей (с отставанием)
камеры за объектом, использующим Path
Controller
-
Загрузите файл ch24_6.max из папки
Chapter 24 сопровожцающего CD-ROM.
-
Выберите камеру и откройте панель
команд Motion. Откройте свиток
Assign Controller
и
щелкните на
Transform: Position/Rotation/Scale.
Щелкните на
Assign Controller,
выберите из диалога
Replace Transform Controller
контроллер
LookAt
и
щелкните на ОК.
-
В разделе
LookAt Target
свитка
LookAt Parameters
щелкните па
Pick Target
и
в качестве цели выберите
DummyO 1.
-
В свитке
Assign Controller
щелкните на
Position: Bezier Float.
Щелкните на
Assign Controller,
выберите в диалоге
Replace Position Controller
контроллер
Path
и
нажмите на ОК.
-
В разделе
Current Path Object
свитка
Path Parameters
щелкните на
Pick Path
и
в качестве пути выберите
TorusPath.
Включите опцию Follow Path.
-
В свитке
Assign Controller
щелкните на
Position:Path.
Щелкните на
Assign Controller,
выберите в диалоге
Replace Position Controller
контроллер
Position List
и
нажмите на ОК.
-
Расширьте список позиций, выберите
Available и назначьте ему контроллер
Bezier Position.
-
В свитке
Position List
выберите
Bezier Position
и
щелкните на
Set Active.
-
В окне Front переместите камеру
вверх на 200 единиц.
-
Откройте Track View и расширьте
дорожки трансформации для камеры.
-
Выберите дорожку Percent под
контроллером Path.
-
Щелкните на Position Curves и
щелкните на кривой.
-
Щелкните и удержите кнопку Move Keys
и выберите в подменю нижнюю
пиктограмму. Это ограничит
перемещение точек ключей только
вертикальным направлением.
-
Выберите обе точки ключей и
переместите ключи вниз на 5 единиц.
-
Закройте Track View и проиграйте
анимацию. Для достижения интересных вариаций в
движении камеры выберите контроллер
Path в свитке Position List панели
команд Motion и щелкните на Set
Active. В свитке Path Parameters
включите опцию Bank Path и
установите Bank Amount в -0.5.
Теперь на повороте камера "свернет"
с пути.
|