2017-09-11 102 views
0

我在Maya中編寫了一個MEL腳本。所以我想選擇一個關節,然後運行MEL腳本,並選擇該關節及其所有孩子。我對MEL非常陌生,所以在運行代碼時會拋出一堆錯誤。你能幫助我減少錯誤或更好地擺脫所有這些嗎?Maya - 用Maya選擇一個角色的所有關節MEL

腳本:

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; 
} 

謝謝!

回答

0

所以,我知道你的問題是關於MEL,我很抱歉無法幫助你,但我認爲我可以幫助你與蟒蛇和pymel。

試試這個代碼在腳本編輯器一個Python標籤:

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) 

我不知道爲什麼要使用MEL,我直接與pymel開始,它似乎更強大。你能告訴我爲什麼梅爾?......我想我可能會錯過某些東西。無論如何,我認爲這個簡短的代碼是有用的。祝你好運!請注意,那裏沒有故障保險箱。因此,請確保在運行腳本之前選擇一個聯合運行。