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

Можете выделить полученный скрипт и гордо перетащить его на полку. Для его дальнейшего использования достаточно выделять объекты и нажимать на кнопку на полке.

Кроме того, запомните в уме и сохраните в текстовом файле конструкцию получения списка выбранных объектов и циклический перебор их в цикле

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

{

}

Вы неоднократно еще будете использовать эти команды как шаблон для написания новых скриптов, так как данная конструкция является совершенно стандартной и встречается в половине программ, написанных пользователями MAYA.

Создание Noise Deformer

Разберем теперь, как еще можно использовать вышеполученный универсальный скрипт для работы с выделенными объектами. Оказывается, он легко адаптируется для работы с выделенными компонентами.

Создайте в новой сцене сплайновую сферу.

Задайте для нее в Channel Box: sections=30, spans=30.

Выделите часть контрольных вершин, например с левого края.

В Script Editor отредактируйте предыдущий скрипт, убрав из него команды scale и rotate (какой смысл вращать вершины?) и добавив перемещение по вертикали:

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

for($item in Slist)

{

move -r (rand(-0.1,0.1)) (rand(-0.1,0.1)) (rand(-0.1,0.1)) $item;

}

Выполните его, в надежде на то, что скрипт пробежит по списку выбранных вершин и сдвинет каждую из них немного в случайном направлении.

Однако вершины сдвинутся как-то странно, целыми группами. Нажмите Undo. Выделите снова часть вершин и загляните в Script Editor. Там должна появиться команда типа:

select -г nurbsSpherel .cv[4][13:16] nurbsSpherel .cv[5:6][12:17] nurbsSpherel ,cv[6][18] nurbsSpherel. cv[7][11:18] nurbsSpherel .cv[8][10:19] nurbsSpherel .cv[9] [9:19] nurbsSpherel .cv[10:25][8:19] nurbsSpherel.cv[26] [9:18] nurbsSpherel .cv[27][9] ; Очевидно, что MAYA формирует список выделенных вершин, группируя их в «кучки» по степени близости друг к другу.

Если выделить и выполнить команду Is -si, она выдаст в точности этот же список и, следовательно, наш цикл будет случайным образом двигать целые «кучки» вершин.

Выбирать их по одной, нажимая Shift - это, естественно, не вариант. Но, к счастью, у команды Is есть флаг, который возвращает список выбранных объектов (или компонент) в «длинной» форме, где каждая компонента перечислена индивидуально. Подправьте первую строчку скрипта, добавив в команду Is флаг -fl.

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

{

move -r (rand(-0.1,0.1)) (rand(-0.1,0.1)) (rand(-0.1,0.1)) $item;

}

Теперь цикл пробегает по каждой выделенной вершине и сдвигает ее немного.

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

float $d=0.05; string $list[] = ' Is -si -fT; string Sitem; for($item in $list)

{

move -r (rand(-$d,Sd)) (rand(-$d,$d)) (rand(-$d,$d)) $item;


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