将关联复制替换成普通复制
关联复制 普通复制 替换    2018-07-11 14:48:24    55    0    0

在制作场景时,经常遇到使用关联复制的情况,如果需要将关联复制替换成普通复制呢?

选择其中一个关联复制的物体,执行以下代码:

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参数),然后删除除当前选择的所有物体,并从当前物体复制出物体,放置到删除物体的对应位置。 

从而实现替换关联复制为普通复制的效果。


完~~~

上一篇: 删除无效的表达式节点

下一篇: 数据文件提交步骤

55 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航