Применение модификаторов

Введение

Итак, вы уже умеете создавать геометрические объекты средствами MAXScript. В этой главе вы научитесь создавать и модифицировать источники света, камеры и материалы.

Приступая к работе в пользовательском интерфейсе 3dsMax, вы обычно настраиваете средство визуализации и пользуетесь его настройками в течение всей работы. В этой главе поясняется, как средство визуализации настраивается в MAXScript для автоматизации процесса визуализации.

Кроме того, вы ознакомитесь с обратными вызовами и методом вызова сценария, когда на сцене происходит определенное событие. И наконец, вы научитесь формировать случайные значения средствами MAXScript.

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

Сначала создается объект-модификатор, а затем устанавливаются его свойства. Для того чтобы создать и применить модификатор, выполните следующее уп­ражнение.

1. Установите 3dsMax в исходное состояние.

2. Создайте модификатор Bend с помощью конструктора bend и укажите угол сгибания, введя в приемнике команд следующую строку кода:

b = bend angle:90

Переменная b содержит ссылку на модификатор Bend, тогда как угол сгибания (angle) относится к свойствам данного модификатора. Теперь модификатор можно применить к любому трехмерному объекту.


 

Работа с объектами в MAXScript

 

3. Создайте цилиндр и установите число его сегментов по высоте равным 2C. чтобы лучше видеть воздействие на него модификатора. Для этого введите следующую строку кода:

c = cylinder height:50 heightsegs:20

4. Примените модификатор Bend к цилиндру. Для этого введите следующую строку кода:

addmodifier c b

В этой строке кода модификатор применяется к цилиндру с помощью метода addmodifier, после имени которого указываются ссылка на цилиндр и ссылка на данный модификатор. А поскольку конкретная ось действия модификатора не указывается, то по умолчанию в 3dsMax используется ось Z.

 

 

 

 


5. Этот же сценарий можно было бы написать короче. Введите следующий фрагмент кода:

cc = cylinder pos: [100, 0 ,0] height:50 heightsegs:20

addmodifier cc (bend angle:90)

В последнем пункте предыдущего упражнения конструктор модификатора был помещен в круглые скобки. Это еще один пример передачи выражения в виде аргумента функции. В данном выражении создается объект-модификатор, который затем применяется к цилиндру.

Свойства модификатора можно изменить тремя способами.

• Присвоить явную ссылку на модификатор. В приведенном выше упражнении переменной b была присвоена ссылка на модификатор. После этого свойства переменной b могут быть установлены с помощью таких выражений. как следующее:

b.angle = 80


Глава 6

При установке свойства объект автоматически обновляется в видовом окне. Так, в приведенном выше упражнении это оказало влияние не на новый, а на исходный цилиндр, поскольку к нему был применен модификатор Bend, ссылка на который делается в переменной b.

• Изменить свойства модификатора посредством объекта, к которому он применяется. Если используется метод addmodifier, модификатор исполняет роль свойства геометрического объекта. Изменения могут быть внесены в модификатор следующим образом:

cc.bend.angle = 75

Доступ в этой строке кода осуществляется сначала к свойству bend цилиндра cc, а затем к свойству angle модификатора Bend. Таким способом удобно пользоваться в отсутствие явной ссылки на модификатор, как в примере сокращенной записи кода сценария из п.5 приведенного выше упражнения.

• Получить доступ к массиву свойств модификаторов, применяемых к объекту. Каждый объект имеет свойство .modifiers, возвращающее массив модификаторов, применяемых к данному объекту. Первым элементом данного массива является модификатор, находящийся на вершине стека в том виде, в каком он представлен на панели команд Modify. Вторым элементом массива является следующий вниз по стеку модификатор и так далее до последнего элемента массива, который соответствует модификатору, находящемуся на дне стека. Если воспользоваться упоминавшимся ранее примером цилиндра, то можно написать следующее:

c.modifiers[1].angle

В этой строке кода осуществляется доступ к свойству angle модификатора Bend. Такой способ доступа к свойствам модификатора удобен для выполнения операций над всеми модификаторами, применяемыми к объекту.