Maya - 使用Maya MEL选择角色的所有关节

问题描述 投票:0回答:1

我在Maya写了一个MEL脚本。所以我想选择一个关节,然后运行MEL脚本,它选择该关节及其所有子节点。我对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;
}

谢谢!

mel
1个回答
0
投票

所以,我知道你的问题是MEL,我很抱歉没有能够帮助你,但我想我可以用python和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开始,它看起来更强大。你能告诉我MEL的原因吗?...我想我可能会错过一些东西。无论如何,我认为这个简短的代码可以解决问题。祝好运!请注意,那里没有故障保险箱。因此,请确保在运行脚本之前选择一个要运行的联合。

© www.soinside.com 2019 - 2024. All rights reserved.