3ds Max 2008. Секреты мастерства
Шрифт:
5. В области Controller Range (Диапазон контроллера) увеличьте значение параметра Max (Максимум) до 5. Данное значение можно впоследствии скорректировать с таким расчетом, чтобы колебания уровней анализатора звука длительное время не превышали максимального значения.
6. Установите переключатель Channel (Канал) в положение Mix (Смешивание). Для строящегося анализатора звука мы возьмем один смешанный канал, хотя можно было бы использовать все три.
7. В области Sample (Выборка) задайте параметру Oversampling (Усреднение) значение 500 (рис. 8.107). Для имитации анализатора частотных характеристик звука мы используем кривую уровня звука, поэтому увеличение значения этого параметра позволит частично сгладить пороговые значения кривой.
Рис. 8.107. Настройки
8. Закройте окно Audio Controller (Контроллер звука).
В окне редактора кривых присвоим флагу LevelMask карты улучшенного градиента, используемого в канале прозрачности, контроллер Float Expression (Выражение с плавающей точкой). Для этого в левой части редактора кривых выберите из иерархического списка объект analyzer_wave и, передвигаясь по его компонентам, перейдите к параметру Position (Положение) флага LevelMask из канала прозрачности первого материала (рис. 8.108).
Рис. 8.108. Окно редактора с активным параметром Position (Положение) флага LevelMask
Щелкните на выбранном параметре Position (Положение) правой кнопкой мыши и выберите строку Assign Controller (Назначить контроллер) в контекстном меню. В появившемся окне Assign Float Controller (Назначить контроллер с плавающей точкой) выберите из списка строку Float Expression (Выражение с плавающей точкой). В области Create Variables (Создать переменную) открывшегося окна Expression Controller (Контроллер управления по алгоритмическому выражению) введите в поле Name (Имя) имя создаваемой переменной (например, wave) и щелкните на кнопке Create (Создать). В результате будет создана пользовательская переменная, которой необходимо присвоить значение контроллера звука. Для этого щелкните на кнопке Assign to Controller (Назначить контроллеру) и укажите в открывшемся окне Track View Pick (Выбрать трек) на трек с именем созданного нами атрибута sound_wave (рис. 8.109).
В поле Expression (Выражение) запишите формулу, которая будет управлять поведением флага LevelMask согласно звуковой волне: floor(wave/0.05)*0.05 (рис. 8.110). Щелкните на кнопке Evaluate (Оценить) для присвоения функции анимируемому параметру.
Разберем записанную формулу. Начнем с параметров. Несмотря на то что в настройках диапазона звукового контроллера мы задали максимальное значение равным 5, позиция флага градиентной карты использует значение от 0 до 1. Кроме того, наш анализатор звука имеет 20 сегментов, и смещение значений положения флага должно происходить с учетом количества этих сегментов. Таким образом, первое, что мы делаем в этой функции, – округляем в меньшую сторону значение звукового контроллера (присвоенное переменной wave), деленное на 20 частей (floor(wave/0.05)). Для округления необходимо, чтобы значение было больше нуля, что мы и делаем, используя для деления значение, уменьшенное в 100 раз, но для возврата к прежнему уровню уже округленного значения нам необходимо умножить полученный результат на 0,05. Таким образом, полностью выражение выглядит как floor(wave/0.05)*0.05. В результате расчетов значение положения флага LevelMask в каждом кадре анимации становится кратным 0,05.
Рис. 8.109. Окно Track View Pick (Выбрать трек)
Рис. 8.110. Окно Expression Controller (Контроллер управления по алгоритмическому выражению) после выполнения всех настроек
Теперь следует в настройках многокомпонентного материала анализатора в окне Material Editor (Редактор материалов)
СОВЕТ
Прежде чем копировать созданную анимацию, желательно убедиться в том, что все сделано правильно. Для этого можно воспользоваться одним из двух способов. Первый способ: задать отображение анимации карты улучшенного градиента в окне проекции (для этого перейдите в редакторе материалов к этой карте и щелкните на кнопке Show Map in Viewport (Показать карту в окне проекции)
Второй способ: выполнить эскиз анимации текстуры, используя кнопку редактора материалов Make Preview (Создать эскиз)
Для создания копий настроенного материала перейдите к верхнему уровню многокомпонентного материала. В свитке Multi/Sub-Object Basic Parameters (Базовые параметры многокомпонентного материала) щелкните на кнопке с именем первого материала и, не отпуская кнопку мыши, перетащите ее на кнопку с именем второго материала. После того как вы отпустите кнопку мыши, появится окно, в котором в качестве метода копирования выберите Copy (Независимая копия объекта). Новый материал для второго канала создан. Теперь необходимо изменить настройки этого материала, чтобы анимация уровней каналов отличалась друг от друга. Для этого обратитесь к редактору кривых и выберите из иерархического списка анимированный флаг LevelMask для градиентной карты второго материала (рис. 8.111).
Перейдите к параметру Position (Положение) этого флага и, щелкнув на нем правой кнопкой мыши, выберите из контекстного меню строку Properties (Свойства). В результате откроется окно Expression Controller (Контроллер управления по алгоритмическому выражению). После копирования это окно содержит функцию и параметры анимации первой карты. Изменить значения анимации можно следующим образом:
изменить время, задаваемое в поле Tick Offset (Смещение в тиках) области Variable Parameters (Параметры переменной) для созданной нами переменной;
изменить значение переменной wave в записанной формуле.
На рис. 8.112 представлен пример измененного контроллера Expression Controller (Контроллер управления по алгоритмическому выражению) с использованием описанных выше способов.
Повторите копирование и настройку анимации для оставшихся восьми материалов. В результате вы получите готовый анализатор частотного спектра, а точнее, его имитацию. На рис. 8.113 представлен кадр из получившейся анимации.
Рис. 8.111. Редактор кривых с выделенным флагом LevelMask второго материала
Рис. 8.112. Окно контроллера Expression Controller (Контроллер управления по алгоритмическому выражению) с измененными параметрами для второго материала
И в завершение несколько советов к данному упражнению.
Кривая звука имеет нерегулярную форму, что вызывает изменения значений в каждом кадре анимации. Контроллер, который мы использовали, округляет значения кривой до цифры, кратной 0,05 (это необходимо для того, чтобы маска всегда открывала полные сегменты анализатора), но не отслеживает частые скачки значений. Частично сгладить кривую и сделать более плавную анимацию можно при помощи контроллера Float Script (Сценарий, использующий значения с плавающей точкой). В этом случае можно получать значения из кадров до и после текущего и усреднять их. Такой код может выглядеть, как на рис. 8.114. Аналогичным способом можно написать более сложный код, который будет не только получать значения кривой звука в определенные промежутки времени, но и строить собственную кривую на основе этих значений.