今天動畫發生瞭如題所示的詭異問題。其實動畫節點是在的,只是連接丟了。出現這種情況的原因是導入了引用的資產造成了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)