今天动画发生了如题所示的诡异问题。其实动画节点是在的,只是连接丢了。出现这种情况的原因是导入了引用的资产造成了namespace混乱,所有的动画曲线全部连接到了placeholder节点上,需要重新连接到控制器上。
鉴于碰到多次这种情况,这里就说两点吧,一是劝戒动画师们规范操作,二是我提供这段代码作为解决方法或者抛砖引玉给TD们填坑指个思路:
用的时候记得替换里面的字符串(如果不知道什么事名称空间的话建议百度一下):
import re
import maya.cmds as cmds
anim_curve_nodes = cmds.ls(type="animCurve")
cnn_list = []
for each in anim_curve_nodes:
if not ":" in each:
continue
try:
attr = each.split(':')[-1]
attr_name = attr.split('_')[-1]
num = ''
if re.findall('\d+', attr_name):
num = str(re.findall('\d+', attr_name)[0])
attr_name = attr_name[:-1]
# 下面字符串是名称空间,把丢动画的角色名称空间名替换到下边
ctrl_name = '08_018_ly_V20:sds_aaa_RIG:'+attr.replace('_'+attr_name+num, '')+"."+attr_name
cnn_list.append((each, ctrl_name))
except:
continue
miss = []
for cnn in cnn_list:
try:
cmds.connectAttr(cnn[0]+'.output', cnn[1])
except:
miss.append(cnn)