我想設置的subCurveExtrMax屬性x和y之間的隨機數,但我有麻煩選擇屬性:如何設置所選對象的擠壓節點中的屬性在MEL
string $sel[] = `ls -sl`;
string $obj;
for ($obj in $sel)
{
float $ran = rand(0.972, 0.984);
setAttr ($obj+".polyExtrudeFace.subCurveExtrMax") $ran;
}
我想設置的subCurveExtrMax屬性x和y之間的隨機數,但我有麻煩選擇屬性:如何設置所選對象的擠壓節點中的屬性在MEL
string $sel[] = `ls -sl`;
string $obj;
for ($obj in $sel)
{
float $ran = rand(0.972, 0.984);
setAttr ($obj+".polyExtrudeFace.subCurveExtrMax") $ran;
}
polyExtrudeFace不是所選對象的屬性。它將是一個連接到該對象的節點。
您必須將其視爲節點並使用setAttr設置其屬性。假設節點的名稱是polyExtrudeFace1。你會做:
string $extrudeNode = "polyExtrudeFace1";
setAttr ($extrudeNode + ".subCurveExtrMax") $ran;
如果要動態地找到擠壓節點,你可以使用類型爲「polyExtrudeFace」您選擇的對象listConnections可以連接擠出節點列表。
此外,請注意拉伸節點連接到形狀節點而不是變換節點。所以我們必須確保我們在形狀節點上執行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;
}
}
這將適用蘭特對對象的所有extrudeNodes雖然。如果這不是你想要的,那麼你可以應用你的邏輯來挑選你想要應用rand的拉伸節點,在最內部的for循環內。
希望這有助於。
當你調用擠壓在第一時間你也可以提供一個隨機的擠壓深度:
polyExtrudeFacet -lt $ranx $rany $ranz; // to specify all 3 offsets
polyExtrudeFacet -ltz $ranz; // to specify just the extrusion depth