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

Главная | iClone 3.1

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

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

Убедившись в возможности автоматизации конкретных операций с помощью сценария MAXScript, можно приступать к написанию надежного сценария с соответствующими элементами пользовательского интерфейса.

Разархивируйте файл Lightcle.zip, находящийся в папке CHAPTER22/MAXSCRIPT на сопровождающем эту книгу CD-ROM, а затем файл LightCleaner_vlOOa.zip (буква а в конце имени этого файла означает, что это не исходный, а несколько упрощенный для данной главы сценарий LightCleaner). После этого загрузите файл сценария в редактор текста Notepad или TextPad и продолжите работу над ним, используя материал этой главы. Данный сценарий содержит следующий код:

-- Функции --fn turn_on = (

if $ == undefined then

(MessageBoxi "Please select at least one object" Btitle:"LightCleaner") else

(

for i = 1 to selection. count do

(

if superclassof selection[i] — light then (

selection[i].showNearAtten = true

selection[i].showFarAtten = true

if classof selection[i] = targetSpot or

classof selection[i] = freeSpot or

classof selection[i] ==

^TargetDirectionallight or

classof selection[i] = Directionallight

^then

selection[i].showCone = true )

)

)

)

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

fn turn_off =

(

if $ = undefined then

(MessageBox "Please select at least one object"

Ktitle:"LightCleaner")

else

(

for i = 1 to selection, count do

(

if superclassof selection[i] == light then <

selection[i].showNearAtten = false

selection[i].showFarAtten = false

if classof selection[i] = targetSpot or

classof selection[i] == freeSpot or

classof selection[i] ==

KTargetDirectionallight or

classof selection[i] == Directionallight

Kthen

selection[i].showCone = false )

)

)

)

-- Сценарий --

rollout lightcleaner_rollout "LightCleaner"

(

button button_on "On" width:150 align:#center toolTip:"On" button button_off "Off" width:150 align:#center toolTip:"Off" on button__on pressed do turn_on () on button__off pressed do turn_off ()

)

lightcleaner_floater = newRolloutFloater "LightCleaner vl.00" 230 123

addRollout lightcleaner_rollout lightcleaner_floater

Разделим данный сценарий на ряд логических частей.

Здесь имеются две функции turn_off и turn_on. В данный момент принцип их действия особого значения не имеет, поэтому их можно представить себе в виде некоторою черного ящика с пользовательской информацией на входе и обработанными функцией данными на выходе, причем для пользователя важен результат выполнения функции, а не то, как он получается. В частности, в результате выполнения функции turn_offрежим отображения диапазона ослабления всех источников света отключается, а в результате выполнения функции turoon — включается.

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

Далее следует определение свитка, который появляется на перемешаемой панели. В этом свитке должны быть две кнопки button_on и button_off. Затем следуют две команды, определяющие выполнение функции turn_on при нажатии кнопки buttonon, а также функции turn_ofT при нажатии кнопки button_off. И, наконец, данный сценарий завершается определением перемещаемой панели. Напомним, что свиток (rollout) представляет собой лишь набор кнопок и других элементов пользовательского интерфейса, а перемещаемая панель (floater) — окно, которое может содержать несколько свитков и перемещаться по всему интерфейсу. В нашем случае перемещаемая панель содержит один свиток, поэтому сначала определяется эта панель, а затем в нее вводится свиток. Вот вкратце и все содержание данного сценария.

Символический код

В символическом коде настоящий сценарий может иметь следующий вид: Функция turn_off Функция turn_on Свиток lightcleaner_rollout (

Кнопка button_off Кнопка button_on

При нажатии кнопки button off выполнить функцию turn off При нажатии кнопки button_on выполнить функцию turn_on )

Создать перемещаемую панель lightcleaner_floater

Ввести свиток lightcleaner_rollout в перемещаемую панель 1ightcleaner_floater

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

А теперь обратимся к более подробному анализу функций turn_on и turn_off.

Функции

Функции относятся к наиболее важным частям сценария, и поэтому должны быть представлены в самом общем виде. Допустим, например, что имеется функция ran num. О коде этой функции пользователю необходимо знать лишь то, что она дает произвольное число, а как это она делает, особого значения не имеет. Ниже приведен пример такой функции:


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