Как установить атрибут в узле экструзии выбранного объекта в MEL

Я хочу установить для атрибута subCurveExtrMax случайное число между x и y, но у меня возникают проблемы с выбором атрибута:

string $sel[] = `ls -sl`;
string $obj;

for ($obj in $sel) {
    float $ran = rand(0.972, 0.984);
    setAttr ($obj+".polyExtrudeFace.subCurveExtrMax") $ran;
}

person shfury    schedule 03.11.2014    source источник


Ответы (2)


Вы также можете указать случайную глубину выдавливания при первом вызове выдавливания:

 polyExtrudeFacet -lt $ranx $rany $ranz; // to specify all 3 offsets
 polyExtrudeFacet -ltz $ranz; // to specify just the extrusion depth
person theodox    schedule 03.11.2014

polyExtrudeFace не является атрибутом выбранного объекта. Это будет узел, который подключен к объекту.

Вам придется обращаться с ним как с узлом и устанавливать его атрибут с помощью setAttr. Допустим, имя узла было polyExtrudeFace1. Вы бы сделали:

string $extrudeNode = "polyExtrudeFace1";
setAttr ($extrudeNode + ".subCurveExtrMax") $ran;

Если вы хотите найти узел выдавливания динамически, вы можете использовать listConnections для выбранного объекта с типом «polyExtrudeFace», чтобы получить список подключенных узлов выдавливания.

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

В вашем случае может работать что-то вроде этого (изменение кода):

string $selObj[] = `ls -sl`;

for ($obj in $selObj) {
    string $selShape[] = `listRelatives -shapes -path`;
    string $conn[] = `listConnections -type "polyExtrudeFace" -source 0 -destination 1 $selShape[0]`;

    for ($extrudeNode in $conn) {
        setAttr ($extrudeNode + ".subCurveExtrMax") $ran;
    }
}

Тем не менее, это применит rand ко всем узлам extrudeNodes объекта. Если это не то, что вы хотите, вы можете применить свою логику, чтобы выбрать только узел выдавливания, к которому вы хотите применить ранд, внутри самого внутреннего цикла for.

Надеюсь, это помогло.

person kartikg3    schedule 03.11.2014