Гораздо удобнее использовать «строчный» стиль:

sphere -р 0 0 0 -ах 0 1 0 -ssw 0 -esw 360 -г 1 -d 3 -s 8 -nsp 4 -ch 1; string $l[] = 'Is -si -cam'; Однако, традиционные функции типа rand, noise или sin по привычке удобно вызывать с помощью аргументов в скобках, поэтому я обычно смешиваю стили в своих программах. Если вы хотите придерживаться MEL-овского стиля, можете переписать наш цикл как

string $list[] = Is -si'; string $item; for($item in $list)

(

setAttr ($item+”.scaleY”) 'rand 3 7'; Комментарии Иногда удобно комментировать свои действия в самом скрипте. Для этого используются комментарии. Как только MAYA встречает в какой-нибудь строке скрипта две косые черты «//», она игнорирует всё, что написано после них и до конца строки. Если две косые черты стоят в начале строки, эта строка игнорируется, и вы можете писать в этой строке что угодно: полезные замечания или всяческие глупости.

Добавление вращения Если все кубы выбраны, вы всегда можете вернуть их в исходный размер просто задав в Channel Box значение scaleY=1.

Добавьте пару строк в наш мощный скрипт для добавления случайных размеров по осям X и Z.

string $list[] = 'Is -si'; string $item; for($item in Slist)

£

setAttr ($item+”.scaleY”) (rand(3,7)); setAttr ($item+”.scaleX”) (rand(0.3,0.8)); setAttr ($item+”.scaleZ”) (rand(0.3,0.8));

}

Теперь боковые размеры всех кубов случайным образом задаются в диапазоне от 0.3 до 0.8.

Добавим вращения нашим урбанистическим объектам. Вставьте еще одну строку в тело цикла:

string $list[] = 'Is -si'; string $item;

for($item in $list)

{

setAttr ($item+”.scaleY”) (rand(3,7)); setAttr ($item+”.scaleX”) (rand(0.3,0.8)); setAttr ($item+”.scaleZ”) (rand(0.3,0.8));

setAttr (Sitem-*-”. rotateY”) (rand(-30,30));

}

Объекты повернутся на случайный угол вокруг вертикали в диапазоне от -30 до 30.

Далее вы можете продолжать издеваться над полученным «микрорайоном» в соответствии с вашими архитектурными пристрастиями. Помните, что Undo работает даже для выполняемых скриптов.

Чтобы, например, немного подвигать объекты в горизонтальной плоскости, добавьте еще одну строку:

string $list[] = Is -si'; string $item; for($item in $list)

I

setAttr ($item+”.scaleY”) (rand(3,7)); setAttr ($item+”.scaleX”) (rand(0.3,0.8)); setAttr ($item+”.scaleZ”) (rand(0.3,0.8));

setAttr ($item+”.rotateY”) (rand(-30,30));

move -r (rand(-0.5,0.5)) 0 (rand(-0.5,0.5)) $item;

J

Пустые строки вставлены здесь для удобства чтения, MAYA же их просто игнорирует.

Так как команда setAttr задает абсолютные значения атрибутов, пришлось использовать команду move с флагом -г, чтобы задать смещение относительно текущей позиции объектов. Пытливые умы, конечно, сразу заметят, что весь скрипт можно было бы переписать в более компактной и даже более понятной форме:

string $list[] = Is -si’; string Sitem; for($item in Slist)

{

scale (rand(0.3,0.8)) (rand(3,7)) (rand(0.3,0.8)) Sitem; rotate 0 (rand(-30,30)) 0 Sitem;

move -г (rand(-0.5,0.5)) 0 (rand(-0.5,0.5)) $item;

}

Здесь сразу понятно, что с помощью команд move, rotate, scale трансформируется очередной объект в списке, имя которого содержится в переменной $item. Но если бы я сразу написал такой простой скрипт, как бы я тогда рассказал про составление имени произвольного атрибута с помощью склеивания строк типа: ($item+”.scaleY”)?l


⇐ вернуться назад | | далее ⇒