Для того чтобы управлять с помощью контроллера Expression параметрами материалов, назначьте его трекам этих параметров в окне Track View. Большинство параметров принимает значения скалярного типа, однако все параметры, управляющие цветом материала, принимают значения типа Point3.
Применяя в выражениях параметры материалов и значения цвета, не забудьте, что их нельзя использовать с векторными величинами.
Для того чтобы назначить контроллер Float Expression, выделите параметрический объект (или объект, к которому применен модификатор) и откройте окно Track View. Найдите и выделите трек нужного параметра, а затем щелкните на кнопке Assign Controller. Из списка диалогового окна Assign Float Controller выберите контроллер Float Expression и щелкните на кнопке ОК.
На самом деле тип контроллера зависит от выбранного параметра. С большинством параметров используется контроллер Float Expression, однако с некоторыми — контроллер Transform. |
Назначив контроллер Expression, щелкните правой кнопкой мыши на треке параметра и из контекстного меню выберите команду Properties. Появится диалоговое окно Expression Controller. В поле Expression этого окна будет отображено текущее значение выбранного параметра.
После назначения контроллера Expression треку трансформации все текущие значения выбранного объекта отображаются в ноле Expression диалогового окна Expression Controller. При назначении контроллера преобразованию Position (Позиционирование) в этом поле будут отображены текущие координаты объекта X, Y и Z. Если контроллер назначен преобразованию Rotation (Вращение), в этом поле будет отображен угол поворота (в радианах). Если же контроллер Expression назначен преобразованию Scale (Масштаб), то в поле Expression отображаются масштабные множители каждой оси.
Углы измеряются как в градусах, так и в радианах. Угол полного оборота равен 360°, что соответствует 2pi радианам. Перевести градусы в радианы можно с помощью функции degToRad, а радианы в градусы — с помощью функции radToDeg. |
Выражения являются основой работы контроллера Expression. Перед тем как создавать выражения, нужно разобраться с основными элементами, из которых они строятся. Выражения могут состоять из переменных, зарезервированных констант, операторов и функций, поэтому именно их и рассмотрим. Также важно понимать, что у выражений есть различные типы возвращаемых значений.
Термин выражение применяется в тех случаях, когда речь идет о математическом выражении либо просто о формуле, по которой одни величины вычисляются через другие. Эти выражения могут быть простыми (как вычисление движения велосипеда, основанное на вращении педалей) и сложными (например, вычисление синусоидальных колебании лодки в море).
В качестве переменных выражений могут использоваться любые величины: от координат объекта и значений параметров модификатора до параметров источников света или материалов. Результаты выражений подсчитыва-ются отдельно для каждого кадра и используются для изменения различных параметров сцены. Выражения удобно применять при создании однообразных и повторяющихся анимаций, где нужно "'оживить" большое количество объектов.
По сравнению с другими контроллерами Expression имеет неограниченные возможности, и о нем можно было бы написать целую книгу. В этой короткой главе рассматриваются основы создания выражений, проиллюстрированные несколькими примерами.
Контроллер Expression — это всего лишь один из многих контроллеров, используемых для автоматизации анимации. Он позволяет управлять преобразованиями объектов с помощью математических формул или выражений, которые можно применять к любым трекам объекта. В списке контроллеров Expression (в зависимости от трека, которому его необходимо присвоить) выглядит как Position Expression, Rotation Expression. Scale Expression, Float Expression и Point 3 Expression.
Прежде всего контроллер Expression необходимо назначить треку. Это можно сделать во вкладке Motion (Движение) или в диалоговом окне Track View (Просмотр трека). После назначения контроллера диалоговое окно Expression Controller появится автоматически. Для того чтобы отобразить диалоговое окно Expression Controller в любой другой момент, щелкните правой кнопкой мыши на треке и из появившегося контекстного меню выберите команду Properties (Свойства). Например, выберите объект сцены, откройте вкладку Motion (Движение) и выберите трек Position (Позиционирование). Затем щелкните на кнопке Assign Controller (Назначить контроллер), которая расположена в верхней части одноименной разворачивающейся панели, и выберите из списка контроллеров элемент Position Expression. Появится диалоговое окно Expression Controller (рис. 29.2).
С помощью выражений можно управлять различными преобразованиями объекта. Назначить преобразованию контроллер Expression можно в окне Track View или во вкладке Motion. Можно также использовать выражения для управления параметрами объекта (например, длина параллелепипеда) или свойствами материала (например, количество света, падающего на материал). Доспи ко всем этим параметра осуществляется с помощью диалогового окна Track View.
Оператор — это часть выражения, которая указывает, что нужно сделать с переменными. Например, оператор сложения указывает на то, что одно значение следует прибавить к другому. Операторы можно разделить на три группы. Базовые операторы — это стандартные математические действия, например сложение или умножение. Операторы этой группы приведены в табл. 29.2. Логические операторы сравнивают два значения и возвращают результат истина или ложь. Эта группа операторов представлена в табл. 29.3. Векторные операторы выполняют математические действия над векторами. Их описание вы найдете в табл. 29.4.
sin(i)
cos(i)
tan(i)
asin(i)
acos(i)
atan(i)
hsin(i)
hcos(i)
htan(i)
radToDeg(i)
degToRad(i)
ceil(i)
floor(i)
ln(i)
log(i)
ехр(i)
pow(i, j )
sqrt(i)
abs(i)
min(i,j)
max(i,j)
mod(i,j)
if(i,j,k)
vif (i,V,W)
length(V)
comp (V, i)
unit(V)
noise(i, j ,k)
Таблица 29.5. Функции
Круговое движение
[Radiusl*cos(360*S) , Radiusl*sin(360*S),0]
Radius1 — радиус орбиты
Эллиптическое движение
[Radiusl*cos(360*S), Radius2*sin(360*S),0]
Radius1 И Radius2 —радиусы эллиптического пути
Восходящее движение по спирали
[Radiusl*cos(360*S), Radiusl*sin(360*S), S*AscentSpeed]
Radius1 — радиус орбиты; AscentSpeed — скорость подъема объекта
Движение вперед и назад
[HalfDist*cos(360*S),0,0]
HalfDist — половина пройденного пути
Движение зигзагом
[0,ZigDist*mod(F/ZagFreq), AscentSpeed*F]
zigDist — расстояние, которое проходит объект, перед возвращением на указанный путь; ZagFreq — частота зигзагообразного движения; AscentSpeed — скорость движения объекта вдоль пути
Движение с ускорением
[Dist*sqrt(NT*Scale), 0, 0]
Dist — расстояние, которое проходит объект; Scale — продолжительность действия ускорения
Качение по оси Y
BallPos.x/Ball Radius
BallPos. x —линейное движение вдоль оси X; Ball Radius — радиус шара
Таблица 29.6. Примеры выражений
Переменная — это условное обозначение определенной величины. Например, обозначив через r радиус сферы, выражение "взять радиус сферы и умножить его на 2" можно упростить до "r умножить на 2".
Для того чтобы создать переменную, откройте диалоговое окно Expression Controller, введите в поле Name (Имя) имя переменной, в зависимости от ее типа установите переключатель Scalar (Скалярный) или Vector (Векторный) и щелкните на кнопке Create (Создать).
Созданная переменная появится в списке Scalars или Vectors. Чтобы удалить переменную, выделите ее в списке и щелкните на кнопке Delete (Удалить). В поле Tick Offset (Смещение тика) определяется величина временного сдвига, что позволяет задержать выполнение действия.
Каждую переменную необходимо назначить либо константе, либо контроллеру. Назначить переменную константе — это то же самое, что ввести в выражение значение константы. Константы всего лишь делают запись выражения более удобной. При щелчке на кнопке Assign to Controller (Назначить к контроллеру) появляется диалоговое окно Track View Pick (Выбор вида трека), изображенное на рис. 29.3. В этом окне можно выбрать трек, который будет присвоен переменной.
Для того чтобы просмотреть текущие значения всех переменных введенного в поле Expression выражения, щелкните на кнопке Debug (Отладка). Появится окно Expression Debug Window (Отладка выражения), показанное на рис. 29.5. В нем отображаются значения всех переменных, а также результат вычисления выражения. При перемещении бегунка Time Slider эти значения автоматически обновляются.
Выражение можно непосредственно ввести в поле Expression диалогового окна Expression Controller. Для того чтобы использовать в выражении какую-либо именованную переменную (из списков Scalars или Vectors), введите в поле Expression ее имя. Зарезервированные константы (подробнее о которых несколько позже), например F или NT, определять в группе Create Variables не нужно. При щелчке на кнопке Function List появляется список функций, которые можно использовать в выражении (рис. 29.4). Это окно предназначено только для просмотра списка функций: чтобы использовать функцию в выражении, необходимо ввести ее имя в поле Expression.
Сложение
+
i+j
Вычитание
-
i-j
Отрицание
-
-i
Умножение
*
i*j
Деление
/
i/j
Возведение в степень
^ или **
i^j или i**j
Таблица 29.2. Базовые операторы
|
В 3ds max существует неписаное правило (т.е. необязательное к выполнению): для ввода скалярных переменных используют строчные символы, для ввода векторных переменных — прописные. |
возвращает 1, если хотя быПример |
||
Равно |
= |
i=j |
Меньше |
< |
i<j |
Больше |
> |
i>j |
Меньше или равно |
<= |
i<=j |
Больше или равно |
>= |
i>=j |
Логическое или ( возвращает 1, если хотя бы одно утверждение верно) |
| |
i|j |
Логическое и (возвращает 1, если верны оба утверждения) |
& |
i&j |
Таблица 29.3. Логические операторы
которое по заданному аргументу возвращаетПример |
||
Компонента (Компонента х вектора V) |
. |
V.x |
Векторное сложение |
+ |
V+W |
Векторное вычитание |
- |
V-W |
Умножение на скаляр |
* |
i*V |
Деление на скаляр |
/ |
V?i |
Скалярное произведение |
* |
V*W |
Векторное произведение |
x |
VxW |
Таблица 29.4. Векторные операторы
Функции
Функция — это такое мини-выражение, которое по заданному аргументу возвращает некоторое значение. Например, тригонометрическая функция синус, использующая в качестве аргумента угол, возвращает значение синуса этого угла. Функция синус выглядит следующим образом: Sin(). Например, если в диалоговом окне Expression Controller ввести Sin (45), а затем открыть диалоговое окно Debug, то значение выражения будет равно 0,707, что соответствует значению синуса угла 45°.
|
Для того чтобы отобразить полный список всех функций с объяснениями, щелкните на кнопке Function List (Список функций) в диалоговом окне Expression Controller (Контроллер выражений). |
Примеры выраженийПримеры выражений В старых школьных учебниках по физике и математике вы найдете массу равенств, которые можно использовать для создания выражений. Ниже описано несколько простых движений объекта и соответствующие этим движениям выражения. Предположим, что к треку радиуса сферы применен контроллер Float Expression. Тогда для последовательного увеличения радиуса в соответствии с каждым следующим кадром анимации можно использовать такое выражение: initialRadius + F С помощью тригонометрических функций можно получить гладкую дугу с центральным углом от 0 до 360°. Например, выражение для плавного увеличения радиуса сферы от 1 до 50 и уменьшения от 50 до 1 выглядит так: 50*sin(360*NT) Чтобы заставить сферу двигаться зигзагами, можно использовать функцию mod. За счет этого сфера будет постепенно перемещаться, пока не достигнет определенного значения, а затем вернется в свое первоначальное положение. Итоговое выражение выглядит следующим образом: [0,10*mod(F,20),10*F] С помощью квадратного корня можно, например, сделать так, что объект с плавным ускорением будет приближаться к заданной точке или удаляться от нее. Для этого достаточно воспользоваться следующим выражением: [100*sqrt(NT*2 00),10,10] Создание сложных выражений требует более глубокого знания математики, но это вовсе не сложно. Чем больше вы будете работать с выражениями, тем проще вам будет с этим разобраться. Для начала воспользуйтесь примерами (табл. 29.6), которые для получения определенного движения объекта можно вводить непосредственно в диалоговом окне Expression Controller. Работа с выражениями в числовых поляхРабота с выражениями в числовых полях Диалоговое окно Expression Controller (Контроллер выражений), которому посвящена большая часть этой главы, далеко не единственный способ работы с выражениями. Выражения можно также вводить в обычных полях диалогового окна Numerical Expression Evaluator (Вычисление числовых выражений), показанного на рис. 29.1. Для доступа к этому окну щелкните в поле нужного параметра и нажмите комбинацию клавиш <Ctrl+N>. В этой главе рассмотрены основыРезюме В этой главе рассмотрены основы использования контроллера Expression. Вы смогли убедиться, что математические формулы — мощное средство управления анимацией параметров и преобразований объекта. Кроме того, было описано, как с помощью значения параметров одних объектов можно управлять другими. Из этой главы вы узнали: как создавать выражения в диалоговом окне Expression Controller; каких результатов можно достичь с помощью выражений; каковы возможности операторов, переменных и функций; как управлять преобразованиями и параметрами объектов. В следующей главе исследуется возможность имитации динамики. Диалоговое окно Numerical...Рис. 29.1. Диалоговое окно Numerical Expression Evaluator позволяет оперировать выражениями для числовых полей Для ввода выражений используется текстовая область диалотового окна Numerical Expression Evaluator; результат введенного выражения немедленно отображается в поле Result. Это поле обновляется сразу после ввода очередного выражения. Если при вводе выражения допущена ошибка, в поле Result ничего не отображается. Щелчок на кнопке Paste (Вставить) позволяет вставить результат выражения в поле выбранного параметра. Щелчок на кнопке Cancel (Отменить) закрывает диалоговое окно без каких-либо изменений в поле параметра.
С помощью диалогового...Рис. 29.2. С помощью диалогового окна Expression Controller создаются выражения и определяются их результаты В этом окне можно определять переменные и вводить выражения. Оно содержит четыре поля, в которых отображаются скалярные и векторные переменные, строятся выражения и вводятся описания этих выражений. В диалоговом окне Track...Рис. 29.3. В диалоговом окне Track View Pick отображаются все треки сиены. Треки, которые можно выбирать, выделены черным цветом После назначения контроллеру переменной выделенный объект можно анимировать на основе поведения других объектов сцены. Для этого достаточно создать переменную и присвоить ее анимируемому треку другого объекта. Предположим, вы создали векторную переменную под именем boxPos и присвоили ее треку Position параллелепипеда. Тогда вы сможете использовать эту переменную в выражениях другого объекта, чтобы траектория его движения зависела от положения параллелепипеда. В диалоговом окне Function...Рис. 29.4. В диалоговом окне Function List приведен список всех функций, которые можно использовать в выражениях
Выражение можно протестировать...Рис. 29.5. Выражение можно протестировать с помощью окна Expression Debug Window При щелчке на кнопке Evaluate (Вычислить), расположенной в диалоговом окне Expression Controller, результат выражения применяется к текущему сегменту кадров. Если в выражении допущена синтаксическая ошибка, то на экране появится предупреждающее сообщение, а в поле Expression будет отображена выполненная часть выражения. При замене контроллера Expression другим контроллером полученные с его помощью эффекты анимации станут недоступными. Положение самолета...Рис. 29.6. Положение самолета относительно оси Z определяется вращением джойстика вокруг оси X Шарик надувается благодаря...Рис. 29.7. Шарик надувается благодаря модификатору Push, которым управляет контроллер Expression Диффузный цвет этого...Рис. 29.8. Диффузный цвет этого объекта анимирован с помощью контроллера Expression Прежде чем закончить с этим примером, рассмотрим более подробно используемое выражение. Это выражение оперирует величиной типа Point3, с помощью которой определяется количество красного, зеленого и синего цвета. Первая компонента этой величины отвечает за красный цвет. Поскольку в цветовой системе RGB желтый цвет состоит в равной степени из красного и зеленого, нам нужно, чтобы красный цвет был видимым в течение оставшихся двух третей от общей продолжительности анимации. Вам потребуется следующее выражение: if(NT>=.33,255,0) Это значит, что, когда нормированное время перейдет за две трети суммарной продолжительности анимации, значение красного компонента станет равным 255, а до этого момента оно будет равно 0. Вторая компонента величины типа Point3 отвечает за зеленый цвет. Зеленый цвет должен быть виден на протяжении первых двух третей анимации. Во второй трети в сочетании с красным он даст желтый цвет. Поэтому на месте второй компоненты величины Point3 используется выражение if(NT<.66,255,0) Смысл этого выражения таков: если нормированное время меньше двух третьих суммарной продолжительности анимации, то значение зеленой компоненты будет максимальным, в противном случае оно будет равно 0. Третья компонента величины типа Point3 отвечает за синий цвет. Но синий цвет не входит в состав ни зеленого, ни красного, ни желтого. Поэтому значение этой компоненты равно 0 в течение всей анимации. Полное выражение (см. п. 4 упражнения) выглядит так: [if(NT>=.3 3,2 55,0), if(NT<.66,255, 0) ,0] СкалярыСкаляры Скаляр — это величина, характеризуемая только числовым значением, например радиус сферы или длина параллелепипеда. Этот тип используется для треков, которым присвоен контроллер Float Expression. Все результирующие значения передаются назначенным параметрам объектов. У скаляров нет специфических форматов — это просто числа. Сохранение и загрузка выраженийСохранение и загрузка выражений Для того чтобы сохранить выражение, щелкните на кнопке Save (Сохранить). Загрузить сохраненное ранее выражение можно, щелкнув на кнопке Load (Загрузить). Файлы выражений имеют расширение . XPR. Описание переменных в файлах выражений не сохраняется. с материалами часто используется типТип Point3 При работе с материалами часто используется тип под названием PointS. Величины такого типа представляют собой три целых числа, разделенных запятыми, в квадратных скобках. Каждое из этих чисел лежит в диапазоне от 0 до 255 и указывает на количество красного, зеленого и синего цвета в цвете материала.
Типы возвращаемых значенийТипы возвращаемых значений Это типы переменных, возвращаемые трекам, которым присвоен контроллер выражений. Например, если треку Position присвоен контроллер Position Expression, то возвращаемым типом будет вектор (совокупность координат).
Типами возвращаемых значений могут быть числа (скаляры), совокупности координат (векторы) или совокупности цветовых значений (Point3). Скаляры используются для управления значениями параметров, векторы определяют положение в пространстве, а тип Point3 определяет цвета. Каждый из этих типов имеет собственный формат, который нужно знать, перед тем как использовать их в выражениях.
изменение размеров звездыУпражнение: изменение размеров звезды Для примера рассмотрим простое выражение. В этом упражнении обычный параллелепипед будет использоваться в качестве ключа, перетаскивая который мы будем изменять радиус звезды. Аналогичный результат можно получить с помощью манипулятора или процедуры передачи параметров, но в данном случае воспользуемся контроллером Float Expression. Чтобы увеличить размеры объекта Hedra (Правильный многогранник) посредством перетаскивания объекта Box (Параллелепипед), выполните ряд действий. В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 29 . zip, распакуйте его и откройте файл Expanding star .max. В файле находятся два простых примитива: Box и Hedra. Перемещение объекта Box ограничено по оси X. Выделите объект Hedra и в главном меню программы выберите команду Graph Editors> Track View-Dope Sheet (Графические редакторы>Средство Track View-Монтажный стол). Найдите трек Radius (Радиус), который находится в иерархии Objects> Hedra01>Object(Hedra)>Radius, и присвойте ему контроллер Float Expression. Появится диалоговое окно Expression Controller. Создайте скалярную переменную initialRadius и векторную переменную boxPos. Для этого введите имена новых переменных в поле Name, выберите соответствующий переключатель (Scalar и Vector) и щелкните мышью на кнопке Create. Выберите в списке Scalars элемент initialRadius и щелкните на кнопке Assign to Constant. В единственном поле появившегося диалогового окна введите 10 и щелкните на кнопке ОК. В списке Vectors выберите элемент boxPos и щелкните на кнопке Assign to Controller. В появившемся диалоговом окне Track View Pick найдите трек объекта Box, который называется Position:Position XYZ (Objects>Box01>Transform), и щелкните на кнопке ОК. Удалите содержимое поля Expression и введите следующее выражение: initialRadius + abs(boxPos.x)/2 Щелкните на кнопке Debug и в появившемся диалоговом окне Expression Debug Window понаблюдайте, как изменяются значения переменных в соответствии с изменениями объектов сцены.По окончании работы над выражением перетащите параллелепипед влево и вправо, наблюдая при этом, как меняются размеры звезды. Этот пример слишком прост и демонстрирует только основные возможности использования выражений. надувание воздушного шарикаУпражнение: надувание воздушного шарика Наполнение шарика воздухом можно имитировать с помощью модификатора Push (Выталкивание). В этом упражнении воспользуемся моделью шарика, созданной компанией Zygote Media, и продемонстрируем, как с помощью контроллера Float Expression можно управлять параметрами этого модификатора. Для того чтобы надуть шарик с помощью контроллера Float Expression, выполните ряд действий. В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 29 . zip, распакуйте его и откройте файл Balloon and pump.max. В файле находятся созданный на основе примитивов насос и модель воздушного шарика, к которой применен модификатор Push. Откройте окно Track View с помощью команды Graph Editors>Track View-Dope Sheet. Найдите и выделите трек Push Value, расположенный в ветви Objects>b3> Modified Object>Push>Push Value. Выделив трек Push Value, щелкните на кнопке Assign Controller, в диалоговом окне Assign Float Controller выделите контроллер Float Expression и щелкните на кнопке ОК. Появится диалоговое окно Expression Controller. В поле Expression диалогового окна Expression Controller вместо значения О введите 2*NT. Чтобы увидеть результат, щелкните на кнопке Debug. He закрывая окно Expression Debug Window, перетащите бегунок Time Slider и посмотрите, как при этом надувается шарик.
На рис. 29.7 показан воздушный шарик, надуваемый с помощью насоса. управление моделью самолетаУпражнение: управление моделью самолета Существует множество имитаторов полета, используемых для обучения пилотов. В этом упражнении будем управлять движением самолета с помощью простого джойстика. Для того чтобы управлять самолетом с помощью модели джойстика, выполните описанные ниже действия. В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 29 . zip, распакуйте его и откройте файл Joysticks controlling airplane, max. В файле вы увидите модель самолета, предоставленную компанией Viewpoint Datalabs, и два джойстика, созданные на основе примитивов. Каждый из джойстиков отклоняется только вдоль одной оси. Выделите модель самолета, активизируйте вкладку Motion и щелкните на кнопке Parameters. В разворачивающейся панели Assign Controller выделите трек Position и щелкните на кнопке Assign Controller. Из списка окна Assign Position Controller выберите элемент Position Expression и щелкните на кнопке ОК. Откроется диалоговое окно Expression Controller. В поле Name диалогового окна Expression Controller введите имя joystickRot0l. установите переключатель Scalar (Скалярная) и щелкните на кнопке Create. Щелкните на кнопке Assign to Controller, в появившемся диалоговом окне Track View Pick выделите трек Local X Rotation (в иерархическом списке этот трек можно найти следующим образом: Objects>JoystickOI >Transform:Position/Rotation/ScaleoRotation:Local Bezier Float) и щелкните на кнопке ОК. Затем создайте другую скалярную переменную по именем joystickRot02 и присвойте ее треку Local Y Rotation объекта Joystick02. В поле Expression должно появиться значение [150,0,50]. Вместо него введите в поле выражение [50+(2*radToDeg(joystickRot02)), 0,50+(2*radToDeg(JoysUckRot01))]. Для просмотра полученных значения щелкните на кнопке Debug (Отладка). Не закрывая окно Expression Debug Window (Окно отладки выражений), щелкните на кнопке Select and Rotate (Выбрать и повернуть) основной панели инструментов и поверните один из джойстиков в окне проекции. Убедитесь в том, что самолет перемещается в окне проекции, а в окне Expression Debug Window обновляются соответствующие значения. Если выражение составлено верно, закройте окна Expression Debug Window и Expression Controller, щелкнув на кнопке Close в каждом из них.
Если применить к джойстику преобразование вращения вокруг оси X, то самолет будет автоматически подниматься или снижаться. На рис. 29.6 показан управляемый джойстиками самолет. управление светофоромУпражнение: управление светофором В этом примере, изменяя цвет сферы с помощью функции if, попытаемся имитировать работу светофора. Для этого применим контроллер Expression к треку цвета Diffuse. Наша задача состоит в том, чтобы каждую третью часть времени анимации светофор показывал попеременно зеленый, желтый и красный свет. Для имитации светофора с помощью контроллера Expression выполните ряд действий. В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 29.zip, распакуйте его и откройте файл Stoplight .max. В файле находится модель светофора, созданная на основе примитивов. К одной из сфер применен материал зеленого цвета. В главном меню программы выберите команду Graph Editors>Track View-Dope Sheet и в появившемся окне выделите трек Diffuse Color. Этот трек находится в иерархии Objects>Sphere03>MateriaWI>Shader Basic Parameters. Щелкните на кнопке Assign Controller. Из списка окна Assign Point3 Controller выберите элемент Point3 Expression и щелкните на кнопке ОК. Таким образом треку Diffuse Color будет назначен контроллер Point3 Expression. Щелкните правой кнопкой мыши на треке Diffuse Color и выберите из контекстного меню команду Properties. Появится диалоговое окно Expression Controller. Введите в поле Expression следующее выражение: [if(NT>=33,255,0), if(NT<-66,255,0),0]. Затем щелкните на кнопке Evaluate и закройте диалоговое окно Expression Controller. Чтобы увидеть результат, щелкните на кнопке Play Animation.На рис. 29.8 показана модель светофора и окно Track View-Dope Sheet для этой модели. ВекторыВекторы Если контроллер Expression управляет преобразованием положения, то в поле Expression диалогового окна Expression Controller можно увидеть три значения, разделенных запятыми, в квадратных скобках. Эти три значения составляют вектор, причем каждое отдельное значение — это длина проекции вектора на соответствующую координатную ось. Для ссыпки на какую-либо составляющую координатной оси необходимо после имени переменной поставить точку, а затем указать саму ось. Предположим, что существует векторная переменная boxPosition, тогда для ссылки на ее составляющую по оси X необходимо ввести boxPosition. х. Значения всех составляющих в действительности являются скалярами. Зарезервированные константыЗарезервированные константы Существует ряд зарезервированных констант программы 3ds max 5, описание которых приведено в табл. 29.1. При вводе таких констант обращайте внимание на регистр. ЗначениеЗначение |
||||||||||||||||
Число пи |
pi |
3,14159 |
||||||||||||||
Основание натурального логарифма |
e |
2,71828 |
||||||||||||||
Количество отметок в секунде |
TPS |
4800 |
||||||||||||||
Номер кадра |
F |
Номер текущего кадра |
||||||||||||||
Нормированное время |
NT |
Общее время активного сегмента кадров |
||||||||||||||
Секунды |
s |
Количество секунд (вычисляется на основе частоты кадров) |
||||||||||||||
Отметки |
T |
Количество отметок (вычисляется на основе частоты кадров), где 1 секунда равна 4 800 отметкам |
Таблица 29.1 Зарезервированные константы
Кроме зарезервированных констант, можно определять собственные переменные. Эти переменные не должны содержать пробелов и должны начинаться с буквы. После определения переменной необходимо присвоить некоторое значение или назначить ее контроллеру.