|
Контроллеры Bxpression оценивают
определенные пользователем
математические выражения и определяют
выводные значения контроллеров.
Контроллеры Expression можно применять
практически ко всем параметрам 3DS МАХ,
которые поддаются анимации. Контроллер
Expression может получать вывод из
других контроллеров и использовать в
выражении полученные значения. Момент
времени, для которого оценивается
выражение, также доступен в нескольких
формах. Для использования в выражениях
определено множество встроенных функций.
Параметры для контроллера Expression
задаются в диалоге Properties. Для всех
типов данных доступ к диалогу Properties
осуществляется в Track View путем выбора
параметра, которому назначается
контроллер Expression, последующего
щелчка в свободной области окна
редактирования с целью убедиться, что
никаких ключей не выбрано, и затем
выполнения одного из следующих действий:
щелчка правой кнопкой мыши на имени
параметра, щелчка правой кнопкой мыши на
линейке диапазона дорожки параметра или
щелчка на Properties в линейке
инструментов Track View.
Для контроллеров, связанных с
трансформацией на объектном уровне,
параметры контроллера можно настроить
также из панели команд Motion, выбрав
параметр в свитке Assign Controller,
щелкнув правой кнопкой на параметре и
выполнив Properties из всплывающего
меню.
Типы данных контроллера Expression
При первом назначении контроллера
Expression параметру, который уже имеет
контроллер, окно уравнения показывает
значение параметра в кадре 0. Если
параметр не имеет контроллера, значение
будет установлено в 0. Значение
отображается в одном из двух форматов.
Первый формат применяется в случае,
когда назначаемый контроллер Expression
имеет тип данных Position, Scale или
Point3. Эти типы данных требуют, чтобы
контроллер Expression вернул
трехкомпонентный вектор. Формат
выражения следующий: [eqnl, eqn2, eqn3].
Второй формат применяется в случае,
когда параметр, которому назначается
контроллер Expression, имеет тип данных
Float. Последний требует, чтобы
контроллер Expression возвращал
скалярное значение с плавающей точкой.
Формат выражения будет выглядеть как
eqni. Если формат выражения некорректен
или во время оценки выражения возникает
ошибка, на экране отображается сообщение
об ошибке.
Переменные контроллера Expression
В уравнении можно использовать два типа
переменных. Первый тип. Scalar,
применяется для ссылок на единичное
значение данного с плавающей точкой.
Второй тип, Vector, используется для
ссылки на трехкомпонентные векторы. Для
создания переменной сначала вводится имя
переменной в поле имени в окне Create
Variables, уточняется, является ли
переменная скалярной или векторной, и
нажимается на Create. После этого
переменная создается и ее имя появляется
в колонке Scalars или Vectors.
При создании переменной ей присваивается
значение константы 0 для скаляра и [О,
О, 0] для вектора. Переменным могут
назначаться константные значения во
время анимации или присваиваться вводные
значения другого контроллера. Для
назначения переменной константного
значения следует выбрать имя переменной
в колонке Scalars или Vectors, щелкнуть
на Assign to Constant и присвоить
соответствующее значение.
Для назначения переменной вывода
контроллера выберите имя переменной,
нажмите Assign to Controller и выберите
контроллер в появившемся диалоге Track
View Pick . В диалоге Track View Pick
контроллеры, которые можно выбрать,
выделены жирным шрифтом. Контроллер
можно выбрать тогда, когда его тип
данных совпадает с типом переменной, и
если контролер был назначен параметру. В
некоторых случаях 3DS МАХ предоставляет
возможность выбрать контроллер, а затем
выдает сообщение об ошибке "Can't Assign
Control... Circular Dependency". Данное
сообщение об ошибке генерируется в
случае, если выбранный параметр и
параметр, к которому применяется
контроллер выражения, подчиняются одному
и тому же контроллеру. Например,
выражение для параметра Length коробки
не может ссылаться на параметр ширины
коробки. Однако выражение может
ссылаться на параметры трансформации
коробки и параметры для любых
модификаторов, применяемых к коробке.
Значения Tick Offset
Значения, возвращаемые из контроллера и
присваиваемые переменной, обычно
являются выводными значениями
контроллера в той же самой временной
точке, которая оценивается. В ряде
случаев желаемое значение является
выводом контроллера в другой временной
точке. 3D Studio MAX предоставляет
возможность задания фиксированного
смещения для переменной. 3DS МАХ
добавляет значение смещения к
оцениваемой временной точке и оценивает
назначенный контроллер в новой временной
точке. Значение смещения указывается в
поле Tick Offset в окне Create Variables.
Значение Tick Offset устанавливается в
момент создания переменной и может быть
изменено за счет выбора имени
переменной, установки нового значения
Tick Offset и щелчка на Change Offset.
Значение Tick Offset может быть как
положительным, так и отрицательным, и
сохраняется постоянным во время
анимации. Как и подразумевает название,
значение Tick Offset задает смещение
времени в тиках. Секунда содержит 4800
тиков. Если частота кадров равна 30
кадрам в секунду, то на кадр приходится
160 тиков.
Зарезервированные имена переменных
Существует несколько имен переменных,
которые нельзя или не требуется
применять в качестве имен создаваемых
переменных. Четыре из них (Т, S, F и NT)
являются предварительно определенными
именами переменных со специальными
значениями. Кроме того, не следует
использовать имена е, pi или TPS. Эти
имена переменных также предварительно
определены со специальными значениями.
Однако 3DS МАХ предоставляет возможность
их переопределения. Ниже перечислены
значения, ассоциированные с каждой из
этих переменных.
Диапазоны значений данных,
ассоциированные с параметрами
Начиная применение контроллеров
Expression, вы осознаете, что
созерцаемое - это не всегда получаемо.
Часто значения данных, которые задаются
в 3DS МАХ, и отображаемые значения
данных не являются действительными
значениями, хранящимися в контроллерах.
Контроллер Expression, примененный к
параметру, должен выводить значения в
диапазон, ожидаемый параметром. Если это
не происходит, эффект анимации может
отключиться из-за ситуации, связанной с
превышением значения.
При создании объекта в 3DS МАХ ключевой
подключаемый компонент, ассоциированный
с данным объектом, определяет список
подверженных анимации параметров. В
данном случае объект может ссылаться на
материал, геометрический объект или
модификатор. Для целей обсуждения
назовем ключевой компонент родителем.
Для каждого поддающегося анимации
параметра имеется контроллер,
подчиненный родителю.
Родитель самостоятельно решает, как
обрабатывать значения данных,
возвращаемые из подчиненного
контроллера. Родитель также указывает,
как значения данных должны появляться в
командных панелях, Track View и других
диалогах, где можно видеть или
устанавливать значения переменных. Часто
видимые значения данных не являются
действительными данными, переданными
контроллером родителю, но являются
значениями данных, "проработанными"
родителем. Один из примеров связан с
параметрами, работающими с углами. Во
всех случаях значения устанавливаются и
отображаются в градусах. Внутренне
большинство углов представляется в
радианах.
При использовании контроллеров
Expression происходит буквально
подключение в центр событий. Если
контроллер Expression применяется к
параметру, работающему с углами, вывод
должен быть в радианах. Если выражение
имеет переменную, присвоенную
контроллеру, который работает с углами,
ожидайте результат в радианах.
В некоторых случаях способы, в
соответствие с которыми родитель
обрабатывает данные из подчиненного
контроллера, варьируются. Хотя
большинство углов внутренне
обрабатываются в радианах, в некоторых
случаях они обрабатываются и в градусах.
Примером сказанному служит Bend Angle в
модификаторах Bend и Twist. Ниже
приведены обобщенные правила для
действительных выводных значений
контроллеров:
-
Если параметр основан на времени,
вывод контроллера обычно
представляется в тиках. Примерами
являются Ease Curve и частота
порождения для системы частиц.
Параметр Phase модификатора Noise
также выводит значения в тиках.
-
Если параметр является процентом или
просматриваемым диапазоном значений
от 0 до 100, диапазон вывода
контроллера обычно составляет от 0
до 1. Примерами являются параметры
масштаба и непрозрачности материала.
-
Если параметр основан на угле, вывод
контроллера обычно происходит в
радианах. Примерами являются FOV для
камеры и контроллеры вращения,
подчиняющиеся контроллеру XYZ
Эйлера.
-
Если параметр является цветом,
диапазон вывода контроллера заключен
между 0 и 1.
-
Для параметров, отображаемых как
целые, вывод контроллера округляется
до ближайшего целого. Примером
является параметр Material ID в
модификаторе Material.
-
Если параметр отображается как
опция, последняя обычно включается,
когда вывод контроллера составляет
значение, большее 0.5. Примерами
являются опция Fractal в
модификаторе Noise и опция Symmetry
в модификаторе Taper.
-
Для других значений, которые можно
свободно настраивать, вывод
контроллера обычно является
значением, видимым на панели команд
и в Track View.
-
Как и во всех основных правилах,
всегда имеют место исключения.
СОВЕТ
Для определения действительных выводных
значений контроллера следует выполнить
анимацию параметра по диапазону его
значений. Создайте объект Point и
присвойте контроллер Expression его
параметру позиции. Используйте в
качестве уравнения [inp,inp,inp] и
назначьте исследуемый контроллер
скалярной переменной inp. После этого
действительные значения вывода
контроллера можно наблюдать через кривую
функции в позиции Point объекта.
Дополнительный аспект, на который
следует обратить внимание, заключается в
том, что ограничения, налагаемые 3DS МАХ
на некоторые параметры, действуют только
во время ввода данных. Поскольку
контроллер Expression обходит ввод
данных, данные ограничения не всегда
срабатывают. Примером является FOV
камеры. FOV во время ввода данных
ограничен углом в 175°, но контроллер
Expression может представить любое
желаемое значение. Несмотря на редкую
фатальность, выходящие за пределы
допустимого диапазона значения
контроллера Expression могут приводить к
достаточно неожиданному поведению. Лучше
всего определить пределы изменений
параметра и всегда в них оставаться.
Упражнение, связанное с применением
контроллера Expression
В данном упражнении вы будете иметь дело
с вращением доски объявлений так, чтобы
фронт доски всегда смотрел в камеру.
Однако доска всегда должна оставаться
перпендикулярной земле - ее требуется
вращать только относительно одной оси.
Для решения поставленной задачи
используйте контроллер выражений,
который вращает доску объявлений вокруг
оси Z на основе положения камеры
относительно доски.
Сцена состоит из камеры, коробки,
представляющей землю (Ground) и коробки
с отображенной текстурой (Billboard).
Точка вращения Billboard настроена так,
чтобы ось +Z доски оказалась
перпендикулярной Ground.
Для применения к Billboard контроллер
выражения вращения нуждается в доступе к
позиции Billboard. Поскольку выражению
вращения для объекта не разрешено
получать доступ к контроллеру положения
того же объекта, в позиции, где
находится Billboard, создается фиктивный
объект и Billboard делается дочерним по
отношению к фиктивному объекту.
Контроллер Expression реализующий
контроллер LookAt относительно одной оси
-
Загрузите файл ch24_7.max из папки
Chapter 24 сопровождающего CD-ROM.
-
Щелкните на Play Animation для
выполнения анимации.
-
Нажмите Esc для завершения
воспроизведения и щелкните на Min/Max
с целью отображения всех видовых
окон.
-
Создайте фиктивный объект.
-
Выполните Align и выберите Billboard
как Align Target Object. Выберите
X Posinion, Y Position
и
Z Position
и
затем
Pivot Point
как для
Current Object,
так и
Target Object.
Выберите оси X, Y и Z в Align
Orientation. Щелкните на OK для
завершения работы.
-
Выполните Select and Link и свяжите
Billboard с фиктивным объектом.
-
Откройте Track View и выберите
контроллер вращения для Billboard.
-
Выполните Assign Controller и
выберите контроллер Euler XYZ.
-
Расширьте дорожку контроллера
вращения и назначьте дорожке Z
Rotation контроллер Float Expression.
Рисунок 24.47 показывает экран в
данной точке.
-
Щелкните правой кнопкой мыши на
контроллере Z Rotation и выполните
Properties.
-
Щелкните на Load и загрузите
lookat__z.xpr из папки Chapter 24
сопровождающего CD-ROM. Рисунок
24.48 отражает диалог Expression
Controller, содержащий уравнение
Lookat_Z.
-
Выберите MyPos в колонке Vector,
щелкните на Assign to Controller и
выберите дорожку позиции для
фиктивного объекта.
-
Выберите TargetPos в колонке Vector,
щелкните на Assign to Controller и
выберите дорожку позиции для камеры.
-
Щелкните на Close, активизируйте
видовое окно камеры и проиграйте
анимацию.
В файле Lookat_x.xpr подготовлен
дополнительный контроллер выражения.
Рисунок 24.49 показывает уравнение
Lookat_X. Если использовать данное
выражение для управления дорожкой Х
Rotation объекта и уравнение Lookat_Z
для управления дорожкой Z Rotation, то
ось -Z объекта всегда будет указывать на
объект цели. На сцене примера
ch24_8.max, находящегося на
сопровождающем CD, показано два объекта
~ один использует контроллер LookAt, а
другой - приведенные выше выражения.
|