欢迎光临散文网 会员登陆 & 注册

[MAYA脚本]简单无聊的合并与分离

2020-07-16 02:01 作者:小小の我  | 我要投稿

没什么大用的脚本,就是最近整理模型的时候合并分离来回删历史,处理过的物体还在层级里乱跑比较烦人,为了少点几次鼠标写的

合并的物体会自动放到最后选择的物体的那个层级里,如果层级里只有它一个物体的话会自动清除组

Simple Merge

分离物体只要选择想要分离出来的壳的其中一个面片就可以直接把模型按照链面的连接掰开,并且永远只会把物体分离成两个,省着默认的那个分离会把选择的部分全部碎开变成单独的物体

Simple Separate

执行过后都是自动删除历史的

除非操作会造成子集只有一个物体,不然会自动把物体合到最后一个选择物体的大纲层级

//Simple merge selected objects


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


string $parentGrp[] = `listRelatives -p $objs[(size($objs)-1)]`;

polyUnite -ch 0 -n ($objs[(size($objs)-1)]+"_merged") $objs;


if($parentGrp[0] != ""){

    if(`objExists $parentGrp[0]` == 1){

        parent ($objs[(size($objs)-1)]+"_merged") $parentGrp[0];

    }else{

        print "The Parent contains no objects has been removed, object moved below the word";

        };

};

上面是合并,下面是分离

//Simple Separate shell from selected object


SeparatePolygon;

DeleteHistory;


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

select -d $_objs[size($_objs)-1];

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

string $parent_Grp[] = `listRelatives -p $_objs[0]`;


if (size($extractObj) > 1){

    polyUnite -ch 0 -mergeUVSets 1 -centerPivot -name ($parent_Grp[0]+"_Separeted") $extractObj;

    parent ($parent_Grp[0]+"_Separeted") $parent_Grp[0];

}else{

    rename $extractObj[0] ($parent_Grp[0]+"_Separeted");

};

rename $_objs[size($_objs)-1] ($parent_Grp[0]+"_Origin");

都是mel,不是python


另外那个自动根据材质分离的脚本完善了一下,这两天用的时候发现竟然有物体可以被赋予一个不在任何面上的材质,会导致脚本失效,惊了

#The selected item must be OBJ by imported


import maya.cmds as cmds


def seperateObj(merger):

    mergerShape = cmds.listRelatives(merger, s=1)[0]

    allSG = cmds.listSets(o=mergerShape, type=1)

    

    for sg in allSG:

        locals()[sg]=[]

    

    components = cmds.polySeparate(merger, ch=0)

    grp = cmds.listRelatives(components[0], p=1)

    

    for element in components:

        sgname = cmds.listSets(o=cmds.listRelatives(element, s=1)[0])[0]

        locals()[sgname].append(element)

    

    for sg in allSG:

        if len(locals()[sg])==1:

            cmds.sets(locals()[sg][0], e=1, forceElement = sg)

            cmds.rename(locals()[sg][0], (merger+"_"+sg))

        elif len(locals()[sg])==0:

           pass

        else:

            part = cmds.polyUnite(locals()[sg], ch=0, n=(merger+"_"+sg))

            cmds.sets(part, e=1, forceElement = sg)

            cmds.parent(part, grp)


for obj in cmds.ls(sl=1):

    seperateObj(obj)

这回是python(粘贴代码没有缩进好沙雕,有啥办法把缩进粘进去吗)

再想想还有啥大佬们不屑于写的垃圾功能我可以写点


[MAYA脚本]简单无聊的合并与分离的评论 (共 条)

分享到微博请遵守国家法律