Главная | iClone 3.1
Анимация поддерживает репутацию страны
Предыдущая Следующая
При нажатии кнопки Apply выполнить функции cone_on__off, wattnn_on_off и attnf_on_off
При нажатии кнопки all_on выполнить функцию turn_all_on При нажатии кнопки all_off выполнить функцию turn_all_off )
Создать перемещаемую панель lightcleaner_floater
Ввести свиток lightcleaner_rollout в перемещаемую панель
lightcleaner_floater
Переменные
В данном сценарии имеются три переменные-переключатели, определяющие дальнейший ход выполнения сценария. В частности, кнопка режима Cone может находиться в следующих трех положениях: включено, выключено или без изменения. При изменении ее состояния фактически изменяется с 1 на 2 или 3 состояние переменной conevalue. При этом состояние 1 означает включение режима отображения конусов освещения, состояние 2 — выключение этого режима, а состояние 3 — отсутствие каких-либо действий. При нажатии кнопки Apply выполняется функция cone_on_off в соответствии с состоянием переменной conevalue. Данный сценарий действует, в основном, следующим образом: пользователю предоставляется некоторый интерфейс, в котором тот делает свой выбор с помощью элементов этого интерфейса, в результате чего изменяется состояние соответствующих переменных. Далее при выполнении функций проверяется состояние указанных переменных, в соответствии с которым и принимается решение о том, что делать дальше. Обратите внимание на то, что в начале сценария значение переменной conevalue равно 3. Это означает, что кнопка-переключатель режима Cone по умолчанию находится в третьем состоянии (т.е. без изменения).
Сценарий LightViewer, версия 1.00
Следующим сценарием, написанным мною для автоматизации работы с источниками света, был сценарий LightViewer. Необходимость в нем возникла в следующей производственной ситуации: у меня была сцена с женщиной, сидящей за решеткой. Обстановка этой сцены была весьма мрачной, но по какой-то непонятной причине белые зубы женщины сверкали в полной темноте. Я проверил материал зубов — он не светился, поэтому я предположил, что свечение зубов каким-то образом связано с находящимся на сцене источником света. Но с каким? Ведь в моей сцене было около 20 источников света. Разумеется, можно было бы по очереди включать и выключать все находящиеся на сцене источники света, выполняя затем визуализацию, и в конечном итоге обнаружить источник света, явившийся причиной указанного выше затруднения. Однако вместо этого неблагодарного труда я написал сценарий для автоматизации процесса отыскания нужного источника света на сцене. По данному сценарию сначала выключались все источники света, затем включался
704 Часть VI. Анимация
первый источник света, выполнялась визуализация в режиме предварительного просмотра, после чего этот источник выключался, и так далее до получения 20 изображений сцены. Таким образом, изображение сцены со светящимися зубами оказалось связанным с конкретным источником света, который затем следовало откорректировать.
На рис. 22.5 показан пример применения данного сценария в сцене с тремя источниками света. На рис. 22.6 изображен первый источник света, включенный по данному сценарию, на рис. 22.7 — второй, а на рис. 22.8 — третий источник света.
Файл данной сцены maxscript_tut_01.max находится в папке CHAPTER22/MAXSCRIPT на сопровождающем эту книгу CD-ROM, а ниже приведен код, доступный в файле LightViewer_v100a.zip:
Глава 22. Создание сценариев для специализированной анимации 705
Рисунок 22.6.
Сцена, освещенная первым источником света
Рисунок 22.7.
Сцена, освещенная вторым источником света
Рисунок 22.8.
Сцена, освещенная третьим источником света
23 ми
706 Часть VI. Анимация
708 Часть VI. Анимация
Глава 22. Создание сценариев для специализированной анимации 709
710 Часть VI. Анимация
Глава 22. Создание сценариев для специализированной анимации 711
712 Часть VI. Анимация
Глава 22. Создание сценариев для специализированной анимации 713
В строке "Функция how_many_nonstandard_lights" определяется функция, которая возвращает количество нестандартных источников света. Что же это означает конкретно? Рассмотрим следующий код:
For L in lights do print L
Словом lights в приведенном коде обозначается массив всех находящихся на сцене источников света. Массив (array) представляет собой перечень элементов. В данном случае это перечень всех находящихся на сцене источников света под названием lights. В настоящем коде осуществляется обращение ко всем элементам массива lights (т.е. всем находящимся на сцене источникам света) и вывод наименования каждого источника света в приемник команд (Listener).
Предыдущая Следующая