Это дополнительный (но не обязательный) трюк для выращивания волос точно в центре граней.

Жмите Create.

Задайте «для красоты» следующие параметры для системы волос hairSysteml: Hair Per Clump=20; Clump Width=1.2.

Форму Clump Width Scale можно сделать уже к основанию и шире к концам.

Выберите сферу и положите на канал Color материала lambertl какую-нибудь цветастую текстуру, например Ramp. Задайте для текстуры rampl значение Noise=1.

Задача состоит в том, чтобы назначить тот же самый цвет и на волосы, растущие на сфере.

Сохраните файл (texturedHairStart.ma).

Выберите hairSysteml, а в Script Editor выполните следующие строки:

// перевод выбранной системы волос в отдельные кривые

convertHairSelection “follicles”;

// получение списка кривых

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

// цикл no всем кривым

for ($it in $list) {

// получение UV координат основания кривой

float $u = getAttr ($it+”.parameterU”)'; float $v = getAttr ($it+”.parameterV”)';

// запрос цвета в точке с такими коодинатами на текстуре rampl float $col[] = 'colorAtPoint -о RGB -u $u -v $v rampl';

// назначение полученного цвета на кривую

setAttr ($it+”.color”) -type double3 ($col[0]) ($col[1 ]) ($col[2]);

// задание полного индивидуального цвета setAttr ($it+".colorBlend”) 1; i

Естественно, вместо текстуры rampl можно использовать любую карту. Следует также отметить, что цвет унаследовали не отдельные волосы, а целые пучки, внутри которых все волосы имеют одинаковый цвет. Чтобы написать более изысканный скрипт, окрашивающий отдельные волосины внутри пучков в цвет текстуры, понадобится полторы страницы книги и немного времени, поэтому я оставлю это за рамками изложения.

Данный скрипт может быть моментально модифицирован для выполнения следующей задачи: предположим, что надо удалить все волосы там, где текстура имеет черный цвет, поставить там, где цвет белый. Такая возможность аналогична картам для атрибута Baldness системы MAYA Fur.

Измените зеленый цвет текстуры rampl на белый, а синий и красный - на черный. Задайте lnterpolation=None.

Выберите hairSysteml, а в Script Editor выполните новые строки:

// перевод выбранной системы волос в отдельные кривые

convertHairSelection “follicles”;

// получение списка кривых

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

pickWalk -d down;

string Sit;

// цикл по всем кривым

for ($it in Slist) {

// получение UV координат основания кривой

float $u = getAttr ($it+”.parameterU”)'; float $v = getAttr ($it+”.parameterV”)';

// запрос цвета в точке с такими коодинатами на текстуре rampl float $col[] = 'colorAtPoint -о RGB -u $u -v $v rampl';

// удаление кривой, если цвет(красный) меньше 0.9 if($col[0]<0.9) delete ('listConnections -t “nurbsCurve” Sit') $it;

} '

Вместо наследования цвета, кривые просто удаляются, если цвет текстуры около их основания меньше, чем 0.9 (в черном-белом варианте достаточно сравнивать красный канал цвета).


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