Литмир - Электронная Библиотека
Содержание  
A
A
3ds Max 2008. Секреты мастерства - _519.png

и убедитесь в том, что макрос создал копию объекта track.

3ds Max 2008. Секреты мастерства - _520.png

Рис. 8.72. Окно редактора макрокоманд

Итак, вы написали свой первый макрос (если, конечно, не делали этого ранее) и проверили его исполнение. Дополним его необходимыми командами и напишем полный цикл создания и редактирования новых звеньев.

В первую очередь нужно анимировать движение звена по пути и получить эту часть макрокоманды для записи в код. Для этого выполните следующее.

1. В одном из окон проекций выделите звено (объект track).

2. Перейдите на вкладку Motion (Движение) командной панели и в свитке Assign Controller (Назначить контроллер) выберите строку Position: Position XYZ (Положение: положение по XYZ) (рис. 8.73).

3. В этом же свитке щелкните на кнопке Assign Controller (Назначить контроллер)

3ds Max 2008. Секреты мастерства - _521.png

и в появившемся окне Assign Position Controller (Назначить контроллер положения) выберите строку Path Constraint (Ограничение по пути) (рис. 8.74).

4. В свитке Path Parameters (Параметры пути) щелкните на кнопке Add Path (Добавить путь) и в одном из окон проекций укажите на сплайн пути track_path.

5. В этом же свитке в области Path Options (Параметры пути) установите флажки Follow (Следовать) и Allow Upside Down (Разрешить переворачиваться). В области Axis (Оси) выберите ось Y и установите флажок Flip (Обратить). Как вы видите, настройки такие же, как и для построения статических копий звена (см. рис. 8.68).

После выполнения описанных операций откройте окно MAXScript Listener (Интерпретатор MAXScript). Выделите и переместите в окно редактора макрокоманд пять последних строк, относящихся к выбору и настройке контроллера Path Constraint (Ограничение по пути) (рис. 8.75).

Если бы мы сейчас запустили на выполнение этот код, то у нас было бы создано еще одно звено, а копии звена с именем track01 был бы присвоен контроллер Path Constraint (Ограничение по пути). Но обратите внимание на то, что, когда мы выбирали сплайн пути, интерпретатор не внес соответствующую строку в список выполненных операций. В связи с этим в конец кода необходимо дописать в окно редактора следующую строку: $.pos.controller.path=$track path.

3ds Max 2008. Секреты мастерства - _522.png

Рис. 8.73. Свиток Assign Controller (Назначить контроллер) настроек объекта track

3ds Max 2008. Секреты мастерства - _523.png

Рис. 8.74. Окно Assign Position Controller (Назначить контроллер положения)

3ds Max 2008. Секреты мастерства - _524.png

Рис. 8.75. Окно редактора макрокоманд после добавления кода

У контроллера Path Constraint (Ограничение по пути) существует один анимируемый параметр – Percent (Проценты), который определяет проценты пройденного объектом пути. Этому параметру автоматически было задано значение нулевого и последнего кадра анимации. Но нам не нужна анимация, устанавливаемая по умолчанию, мы собираемся привязывать все копируемые объекты к одному звену – track. В связи с этим нам необходимо удалить сгенерированные автоматически ключи анимации. Это можно сделать, добавив в код еще одну строку – deleteKeys $.pos.controller.percent.keys.

ПРИМЕЧАНИЕ

Знак $ указывает на то, что следом за ним должно идти имя объекта, но так как его нет, то подразумевается выделенный объект сцены.

Если сейчас запустить код на исполнение, то мы получим копию объекта track, к которому будет применен контроллер движения вдоль пути track_path, и все ключи анимации будут удалены из контроллера. Далее нужно построить зависимость, при которой созданная копия объекта будет следовать за основным объектом. Для этого необходимо выполнить следующее.

1. Выделите в одном из окон проекций или выберите из списка скопированный объект track01.

2. Перейдите к свитку Assign Controller (Назначить контроллер), щелкните на плюсике, расположенном рядом со строкой Position: Path Constraint (Положение: ограничение по пути), и выберите в открывшемся списке строку Percent: Linear Float (Проценты: линейное значение с плавающей точкой) (рис. 8.76).

3. Щелкните на кнопке Assign Controller (Назначить контроллер)

3ds Max 2008. Секреты мастерства - _521.png

и в появившемся окне Assign Float Controller (Назначить контроллер с плавающей точкой) выберите строку Float Script (Сценарий, использующий значения с плавающей точкой).

4. Щелкните на кнопке OK – откроется окно для ввода сценария. Закройте это окно.

5. Обратитесь к окну MAXScript Listener (Интерпретатор MAXScript), выделите и переместите в окно редактора макрокоманд последнюю строку кода.

То, что мы сейчас сделали, позволило нам записать в окно редактора макрокоманд строку кода, меняющую контроллер, созданный по умолчанию, на свой, который можно редактировать с использованием сценария. На рис. 8.77 представлен вид редактора со всеми полученными до настоящего момента командами.

Теперь нужно добавить в окно редактора несколько строк, написанных самостоятельно, без помощи окна MAXScript Listener (Интерпретатор MAXScript).

1. Добавьте первой строкой for i = 1 to 90 do(. Таким образом мы создаем цикл, выполняющий выражение, которое находится внутри круглых скобок, начиная от 1 до 90. Число 90 – это количество копий звена танковой гусеницы (если помните, мы рассчитали их ранее).

2. Удалите закомментированную вторую строку.

3. В конце кода допишите: $.pos.controller.percent.controller.script ="at time (currenttime) $track.pos.controller.percent*0.01+ 0.011*"+i as string.

В первой части этого выражения мы обращаемся к контроллеру управления по коду, созданному в предыдущей строке, и присваиваем ему строковое выражение, находящееся в правой части. Это означает следующее. В текущий момент времени (at time (currenttime) ) контроллеру выделенного объекта, управляющему процентами ($.pos.controller.percent.controller.script), присваиваем значение процентов контроллера объекта track ($track.pos. controller.percent), деленное на 100 (так как на самом деле значение процентов считается не от 0 до 100, а от 0 до 1, то есть используем выражение *0.01), и задаем смещение на одно звено (общие проценты пути, деленные на количество звеньев: 1/90=0.011). Затем это выражение умножаем на порядковый номер (он же номер кадра), который в первой строке присваивается переменной i. Но так как код записывается в виде строковой переменной, числовое значение необходимо вынести за кавычки и обозначить как строковую переменную (i as string), оставив в кавычках знак умножения. Умножение на число i позволит каждому новому звену смещаться на соответствующую величину.

3ds Max 2008. Секреты мастерства - _525.png

Рис. 8.76. Свиток Assign Controller (Назначить контроллер) настроек объекта track01

3ds Max 2008. Секреты мастерства - _526.png

Рис. 8.77. Окно редактора макрокоманд на данном этапе

4. И наконец, две последние строки кода будут указывать на то, что вся анимация до первого ключевого кадра и после последнего будет повторяться, то есть станет непрерывной, вне зависимости от положения ключевых кадров на шкале анимации. Добавьте эти строки:

setBeforeORT $.pos.controller.percent.controller #cycle

setAfterORT $.pos.controller.percent.controller #cycle

5. Завершает код закрывающая круглая скобка (рис. 8.78).

83
{"b":"117668","o":1}