在制作场景时,经常遇到使用关联复制的情况,如果需要将关联复制替换成普通复制呢?
选择其中一个关联复制的物体,执行以下代码:
import maya.cmds as mc sel = mc.ls(sl=True, l=True)[0] dup_list = mc.listRelatives(mc.listRelatives(mc.ls(sl=True), c=True, f=True), ap=True, f=True) dup_list = list(set(dup_list)) dup_list = [i for i in dup_list if i!=sel] for node in dup_list: pos = mc.xform(node, q=True, ws=True, t=True) ration = mc.xform(node, q=True, ws=True, ro=True) scales = mc.xform(node, q=True, ws=True, s=True) mc.delete(node) new_node = mc.duplicate(sel)[0] mc.xform(new_node, ws=True, t=pos) mc.xform(new_node, ws=True, ro=ration) mc.xform(new_node, ws=True, s=scales)
原理:
通过找到当前选择物体的子物体,再找到子物体的所有父物体(allParents参数
),然后删除除当前选择的所有物体,并从当前物体复制出物体,放置到删除物体的对应位置。
从而实现替换关联复制为普通复制的效果。
完~~~
没有帐号? 立即注册