Использование контроллеров и выражений
Использование контроллеров и выражений
Каждый раз, когда вы анимируете объекты сцены, программа 3ds Max сохраняет параметры анимации в контроллерах. Контроллерами называются элементы, хранящие значения анимации и управляющие интерполяций от одного значения анимации к другому. Существует две категории контроллеров.
• Базирующиеся на ключах – контроллеры, основанные на ключах анимации. Такие контроллеры воспринимают в качестве ввода значений данные из ключевых кадров, а затем рассчитывают интерполированные значения между ключами анимации. Для этих контроллеров является характерным то, что кривая функции всегда проходит через ключи анимации. Контроллеры могут оказывать влияние на интерполяцию между ключами, но не на сами ключи. Контроллеры, описывающие трансформации на объектном уровне, можно также редактировать в свитке Key Info (Справка о ключах) вкладки Motion (Движение) командной панели.
• Параметрические – рассчитывают анимацию на основе уравнения, реализуемого контроллером и основываясь на значениях, которые указаны пользователем. К параметрическим можно отнести контроллеры, ограничивающие движения объектов в пространстве (Constraints (Ограничения)). При помощи контроллеров-ограничителей можно заставить объект следовать по пути или оставаться повернутым к другому объекту.
Программа 3ds Max поддерживает большое количество контроллеров различных типов. Контроллеры одного типа могут иметь несколько разновидностей. Контроллеры можно условно классифицировать по типу возвращаемого ими значения, при этом тип данных контроллера должен соответствовать типу данных параметра объекта. Например, контроллер типа данных Position (Положение) нельзя использовать для параметра поворота или масштаба объекта. Рассмотрим семь типов данных контроллера.
• Transform Controller (Контроллер преобразования) – управляет трансформациями перемещения, поворота и масштаба.
• Position Controller (Контроллер положения) – влияет на положение объекта, позицию габаритного контейнера модификатора или его центра.
• Rotation Controller (Контроллер поворота) – управляет преобразованием поворота объекта или габаритного контейнера модификатора.
• Scale Controller (Контроллер масштаба) – влияет на преобразование масштаба объекта или габаритного контейнера модификатора.
• Point3 Controller (Трехкомпонентный контроллер) – управляет любым параметром с тремя значениями компонента, такими как цвет материала или координаты точки.
• Float Controller (Контроллер с плавающей точкой) – влияет на любой параметр с единственным значением компонента, например угол поворота, ширина объекта, уровень собственного свечения материала и т. п.
• Color Controller (Контроллер цвета) – управляет цветом материала.
Контроллеры анимации можно назначать, используя три различных источника: команды главного меню Animation (Анимация), окно Track View (Просмотр треков) или вкладку Motion (Движение) командной панели.
Рассмотрим некоторые контроллеры, которыми оперирует 3ds Max.
• Position/Rotation/Scale (PRS) (Положение/поворот/масштаб) – используется по умолчанию для большинства объектов сцены и габаритных контейнеров модификаторов. Его рекомендуется применять для всех универсальных трансформаций.
• Audio (Звук) – контроллер управления по звуковой дорожке. Он позволяет анимировать почти любой параметр сцены, конвертируя амплитуду записанного звука в значения анимируемого параметра объекта. Данный контроллер совместим с большинством параметров окна Track View (Просмотр треков), в том числе и с Transform Controller (Контроллер преобразования), Float Controller (Контроллер с плавающей точкой) и Point3 Controller (Трехкомпонентный контроллер).
• Bezier (Управление по Безье) – один из самых универсальных контроллеров, доступных в 3ds Max. Он выполняет интерполяцию между ключами анимации, регулируя изменения кривой, проходящей через ключевые точки. Контроллер Bezier (Управление по Безье) используется по умолчанию для большинства параметров. Его рекомендуется применять, когда необходимо иметь полный контроль над интерполяцией функциональной кривой в промежутках между ключами анимации.
• Color RGB (Цвет RGB) – разделяет составляющую цвета RGB на три независимых трека. Этот контроллер можно применять для анимации цветовых составляющих материалов либо других компонентов, использующих цвет. После разделения по умолчанию каждому треку назначается контроллер Bezier Float (Управление по Безье с плавающей точкой).
• Euler XYZ Rotation (XYZ-поворот по Эйлеру) – составной контроллер, объединяющий отдельные контроллеры, которые имеют значение с плавающей точкой и отписывают поворот относительно одной из осей (X, Y или Z). Использование данного контроллера не дает такого сглаженного результата, как применение TCB Rotation (TCB-поворот), который использует для управления вращением кватернионовскую математику. Однако в отличие от последнего, Euler XYZ Rotation (XYZ-поворот по Эйлеру) позволяет редактировать функциональные кривые.
• Expression (Выражение) – контроллер по алгоритмическому выражению. Он строит функциональную кривую на основе математических выражений, заданных пользователем в окне Expression Controller (Контроллер управления по алгоритмическому выражению) (рис. 4.16). При помощи данного контроллера можно получать данные из других контроллеров, оперировать встроенными функциями и создавать собственные переменные. Контроллер Expression (Выражение) можно применять практически ко всем параметрам 3ds Max, для которых есть возможность анимации.
Рис. 4.16. Окно диалога Expression Controller (Контроллер управления по алгоритмическому выражению)
• Linear (Линейное управление) – контроллер линейного управления. Строит функциональную кривую между двумя соседними ключами по прямой линии. Этот контроллер не имеет настроек и использует для интерполяции значения ключевых кадров. Его следует применять, когда необходимо передать движение механизмов или изменение цвета.
• Noise (Шум) – генерирует хаотичную анимацию в пределах диапазона кадров. Является параметрическим и не использует ключи анимации. Как только вы назначаете анимированному параметру этот контроллер, он сразу применяется ко всему диапазону текущего временного сегмента. Данный контроллер можно использовать для создания неравномерного движения, пульсирующего фонтана, вибрации объектов и т. п., а также к другим контроллерам для изменения функциональной кривой с учетом среднего значения (рис. 4.17).
Рис. 4.17. Окно диалога контроллера Noise (Зашумление)
• List (Управление по списку) – объединяет несколько самостоятельных контроллеров для создания общей анимации. Контроллеры, добавленные в список, выполняются последовательно и по умолчанию имеют вес (значение параметра Weight (Вес)), равный 100. Изменение этого значения влияет на удельный вес данного контроллера в общей анимации. Применяется для создания сложных анимаций.
• Script (Управление по коду) – подобно контроллеру Expression (Выражение), основанному на алгоритмическом выражении, отрывает окно для ввода кода на языке MAXScript с последующим расчетом значения и передачи его контроллеру. С помощью контроллера Script (Управление по коду) можно анимировать практически все параметры объекта, даже те, которые не анимируются контроллером Expression (Выражение) (например, вершины полигонального объекта) (рис. 4.18).
Рис. 4.18. Окно диалога Script Controller (Контроллер управления по коду)
• Path Constraint (Ограничение по пути) – ограничивает движение объекта по пути, которым является указанный сплайн или усредненное расстояние между несколькими сплайнами. В качестве пути можно использовать сплайн любого типа, при этом сам сплайн может иметь собственную анимацию. Данный контроллер применяется для анимации объектов по сложным траекториям (например, движение автомобиля по дороге).
• Position Constraint (Ограничение по положению) – изменяет положение исходного объекта (то есть объект, к которому применен контроллер) относительно целевого. При этом значение параметра Weight (Вес), равное по умолчанию 100, означает, что исходный объект займет положение целевого, а значение 0 – то, что исходный объект останется на месте. Все значения, отличные от 0, заставят объект переместиться в положение, которое равно процентному отношению расстояния между исходным и целевым объектами.
• Link Constrain (Ограничение по связи) – применяется для анимации передачи связи от одного целевого объекта другому. Например, что при использовании контроллера Link Constrain (Ограничение по связи) анимированный персонаж может взять рукой чемодан и переместить его в другую руку.
• LookAt Constraint (Ограничение по линии взгляда) – используется для ориентации одного объекта относительно другого с таким расчетом, чтобы исходный объект постоянно смотрел на целевой. Действие данного контроллера подобно камере Target Camera (Нацеленная камера), когда она поворачивается вслед за перемещаемой целью.
Итак, мы рассмотрели основные контроллеры анимации, применяемые в 3ds Max. Более подробную информацию о них можно найти в справочной литературе или файле справки приложения.
Продолжим анимировать мяч. Используя контроллер Expression (Выражение), создадим для него поступательное движение и постепенное затухание отскоков.
1. Продолжите выполнение собственной анимации или загрузите с прилагаемого DVD файл ball01.max, находящийся в папке ExamplesГлава 04Ball.
2. Для увеличения общего времени анимации щелкните на кнопке Time Configuration (Настройка временных интервалов)
и в области Animation (Анимация) открывшегося окна задайте параметру End Time (Время окончания) значение, равное 180 (рис. 4.19).
Рис. 4.19. Окно диалога Time Configuration (Настройка временных интервалов)
3. В одном из окон проекций выделите мяч – объект Sphere01.
4. Перейдите на вкладку Motion (Движение) командной панели и в свитке Assign Controller (Назначить контроллер) выберите строку с именем Position: Position XYZ (Положение: положение по XYZ) (рис. 4.20).
Рис. 4.20. Свиток Assign Controller (Назначить контроллер) объекта Sphere01
5. В свитке Assign Controller (Назначить контроллер) щелкните на одноименной кнопке
в результате чего откроется окно диалога Assign Position Controller (Назначить контроллер положения). В этом окне выберите из списка контроллер Position List (Контроллер положения по списку). После применения этого контроллера в списке контроллеров появится строка Available (Доступный) (рис. 4.21), позволяющая добавлять к списку новые контроллеры.
Рис. 4.21. Свиток Assign Controller (Назначить контроллер) после назначения контроллера Position List (Контроллер положения по списку)
6. Выделите строку Available (Доступный) и щелкните на кнопке Assign Controller (Назначить контроллер)
7. В открывшемся окне Assign Position Controller (Назначить контроллер положения) выберите строку Position Expression (Контроллер положения по выражению). В результате откроется окно Expression Controller (Контроллер управления по алгоритмическому выражению) (см. рис. 4.16).
8. Создайте переменную, которая будет принимать значение положения объекта Sphere01 по оси Z следующим образом:
1) в поле Name (Имя) области Create Variables (Создать переменную) наберите имя создаваемой переменной (например, Zpoz);
2) установите переключатель в положение Scalar (Скалярный) и щелкните на кнопке Create (Создать);
3) в нижней части окна нажмите кнопку Assign to Controller (Назначить контроллеру);
4) в появившемся окне Track View Pick (Выбрать трек) выберите из иерархического списка строку Z Position: Bezier Float (Z-положение: управление по Безье с плавающей точкой), относящуюся к объекту Sphere01 (рис. 4.22).
Рис. 4.22. Выбор строки Z Position: Bezier Float (Z-положение: управление по Безье с плавающей точкой) в окне Track View Pick (Выбрать трек)
9. В поле Expression (Выражение) окна Expression Controller (Контроллер управления по алгоритмическому выражению) вместо [0, 0, 0], наберите следующее выражение [F, 0, -Zpoz/180*F], где F – текущий кадр (функция по умолчанию), 180 – общее количество кадров, а Zpoz – созданная нами переменная.
10. Щелкните на кнопке Evaluate (Оценить) для расчета созданного выражения.
11. Запустите воспроизведение созданной анимации в активном окне проекции, нажав кнопку Play Animation (Воспроизвести анимацию)
Если все было сделано правильно, то вы увидите, как мячик смещается в сторону с уменьшением высоты отскоков.
Вернемся к созданному выражению и разберем его более подробно. По умолчанию выражение в поле Expression (Выражение) представляло собой [0, 0, 0], что означало изменение параметров X, Y и Z на 0, то есть положение объекта не менялось. Вместо значения 0 по оси X мы задали F, указав, что в каждом последующем кадре анимации это значение будет увеличиваться на 1 и соответствовать номеру текущего кадра. Значение по оси Y не должно меняться, поэтому мы оставили его равным 0. Для оси Z выражение имеет более сложную структуру. В каждом кадре анимации из положения объекта по оси Z вычитается его текущее значение (Zpoz), деленное на общее количество кадров. Эта разность умножается на значение текущего кадра для создания динамики уменьшения параметра Z.
Примечание
Для ознакомления с готовой анимацией загрузите файл ball02.max из папки ExamplesГлава 04Ball прилагаемого к книге DVD.
Данный текст является ознакомительным фрагментом.