Ramenbet casino

АнимацияО мультфильмеМультипликация

1Win казино

Гама казино официальный сайт

Главная | iClone 3.1

Анимация поддерживает репутацию страны

Предыдущая Следующая

8. Выполняйте отладку сценариев с помощью команды Print. Если у программирующих на С++ имеются сложные программы отладки, у пишущих сценарии MAXScript для этой цели имеется лишь команда Print. Для поиска программных ошибок в сценарии, особенно в том случае, если сообщения о них не приносят никакой ощутимой пользы, удобнее всего иметь представление о состоянии сценария в момент возникновения в нем ошибки. Если при этом известны значения всех переменных, подобная информация позволяет определить, где именно произошла ошибка.

Команда Print действует подобно приемнику команд Listener. Ее следует использовать в коде для определения причин, по которым не произошло то или иное предполагаемое событие.

Как правило, при создании индикаторов выполнения сценария сначала пишется код такого индикатора, а затем ему присваивается некоторое значение. Например, в следующем коде: progressStart "Progress Test" for i = 1 to 10 do (

m = (i/10)*100 progressUpdate m sleep 1 )

progressEnd()

Сначала создается индикатор выполнения, а затем выполняется цикл, обновляющий его 10 раз. Если i — 1, m =10, т.е. индикатор выполнения обновляется на 10%. Затем в цикле происходит задержка на одну секунду и далее следует переход к шагу i = 2, на котором индикатор выполнения обновляется на 20%. Эта процедура повторяется вплоть до обновления индикатора выполнения на все 100%.

Но на самом деле этого не происходит. Если выполнить данный код, обнаружится, что индикатор выполнения вообще не обновляется. Для установления причины, по которой это происходит, следует ввести команду Print i/10

перед четвертой строкой данного кода. В результате выполнения данного цикла m = 0 девять раз и только один раз m = 1. А вызвана эта ошибка следующим: при i = 1 в результате деления i/10 получается значение 0.1, которое округляется до 0. Ведь если 1 и 10 являются целыми числами, значит, и результат будет целым, следовательно, значение 0.1 преобразуется в 0. Это одна из особенностей языка MAXScript. В других языках программирования для устранения подобных ошибок указываются переменные определенного типа, например, с плавающей точкой, включая и десятичные дро-

Глава 22. Создание сценариев для специализированной анимации 693

би. А в MAXScript предпринимается попытка определить тип переменной. В данном случае возвращается округленное значение 0 вместо требуемого значения 0.1 с плавающей точкой. Учитывая это обстоятельство, в приведенный выше код необходимо внести следующие изменения:

progressStart "Progress Test" for i = 1 to 10 do (

m = ((i as float)/(10 as float})*(100 as float) progressUpdate m sleep 1 )

progressEnd()

Теперь получается значение 0.1, которое при умножении на 100 дает 10. В итоге индикатор выполнения продвигается на 10%. Если бы не команда Print, определить иным способом состояние переменной т, а значит, и устранить вышеупомянутую ошибку, было бы просто невозможно.

Сценарий LightCleaner, версия 1.00

Прежде рассматриваемого здесь сценария под названием LightUtilities мною был создан более простой сценарий LightCleaner. Когда я однажды появился на студии Blur Studio в субботний день, мой непосредственный руководитель сообщил мне о том. что он получил файл формата МАХ от другого аниматора (рис. 22.1). В этом файле имелось около 50 источников света, причем все они были установлены в режим Attenuation Display (Отображение ослабления). Нетрудно представить себе, насколько сложно работать со столь загроможденной сценой. Поэтому мне была поставлена задача автоматизировать процесс выключения всех источников света, загромождавших вид сцены.

Рисунок 22.1. Сцена со множеством источников света, для каждого из которых выбран конус освещения и режимы ослабления вблизи и вдали

694 Часть VI. Анимация

Проверка гипотезы

Проверка гипотезы (proof of concept) означает быстрое написание кода для проверки какой-либо рабочей идеи. В неложных сценариях это делается довольно просто. Например, для проверки гипотезы работоспособности сценария LightCleaner достаточно следующей строки:

$ . showNearAtten = true

Если ввести такую команду в приемнике команд MAXScript Listener, становится видимым гизмо ослабления вблизи выделенного источника. С другой стороны, если установить флажок Show в области Near Attenuation (Ослабление вблизи) параметров источника света, соответствующая команда не будет зарегистрирована в области MacroRecorder. Поэтому для определения команды, которая требуется для отображения или скрытия гизмо ослабления вблизи, остается только одно — обратиться к оперативной справке MAXScript.


Предыдущая Следующая
Форум
Союзмультфильм
Актеры кино
История жанра
Гифгалерея
Эмиль Рейно
Обратная связь
? ?