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

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

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

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

//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(粘贴代码没有缩进好沙雕,有啥办法把缩进粘进去吗)

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