2017-09-11 3 views
0

Ich schrieb ein MEL-Skript in Maya. Also möchte ich ein Gelenk auswählen, dann das MEL-Skript ausführen und es wählt dieses Gelenk und alle seine Kinder aus. Ich bin sehr neu in MEL, also mit dem Ausführen des Codes, es wirft eine Reihe von Fehlern. Kannst du mir helfen, Fehler zu reduzieren oder besser alle zu beseitigen?Maya - Wählen Sie alle Gelenke eines Charakters mit Maya MEL

Das Script:

string $joints[]; 
string $current[] = 'ls -selection'; 

proc selectJoints(){ 
    if ('searchJoints($joints)' == 0){ 
     $joints['size($joints)'] = $current[0]; 
     pickWalk -d down; 
     $current[0] = 'ls -sl'; 
     selectJoints(); 
    } 
    else{ 
     pickWalk -d right; 
     $current[0] = 'ls -sl'; 
     if('searchJoints($joints)' == 0){ 
      selectJoints(); 
     } 
     else{ 
      pickWalk -d up; 
      $current[0] = 'ls -sl'; 
      if($current[0] == $joints[0]){ 
       selectJoints(); 
      } 
     } 
    } 
    return; 
} 

select ($Joints); 

proc int searchJoints (string $jns[]){ 
    int $result = 0; 
    for ($joint in $jns[]){ 
     if ($current[0] == $joint){ 
      return 1; 
     } 
    } 
    return 0; 
} 

Dank!

Antwort

0

Also, ich weiß, dass Ihre Frage über MEL ist, und es tut mir leid, dass ich Ihnen nicht helfen konnte, ABER ich denke, ich kann Ihnen mit Python und Pymel helfen.

diesen Code in einem Python-Registerkarte im Script-Editor Versuchen:

import pymel.core as pm 

# get selected joint 
selectedJoint = pm.selected()[0] 

#get all children from the selected joint and puts it in a list 
joints = selectedJoint.listRelatives(allDescendents = True) 

#adds first selected joint to same list 
joints.append(selectedJoint) 

#clears selection 
pm.select(clear = True) 

#loop thru list of joints 
for item in joints: 
    #toggle selection on selected joint and all its descendents 
    pm.select(item, tgl = True) 

Ich bin nicht sicher, warum MEL zu verwenden, begann ich direkt mit pymel und es scheint mächtiger. Kannst du mir sagen, warum MEL? ... Ich denke, ich verpasse etwas. Wie auch immer, ich denke, dass dieser kurze Code den Trick macht. Viel Glück! Seien Sie sich bewusst, dass es dort keine Ausfallsicherungen gibt. Stellen Sie daher sicher, dass Sie EINEN Join auswählen, bevor Sie das Skript ausführen.