Код работает в половине случаев. Я не понимаю, почему он останавливается и начинает вести себя как ожидалось.
Импортирует карту рисования на деформер, например, blendshape или deltaMu sh. Использование Maya 2019.
def import_paint_weights(node, painted):
default_ctx = cmds.currentCtx()
node_type = cmds.objectType(node)
art_attr = cmds.artAttrCtx(oaa="%s.%s.weights" % (node_type, node))
cmds.setToolTo(art_attr)
cmds.artAttrCtx(art_attr, importfileload=painted,
ifm='luminance', edit=True)
cmds.dgeval(node)
cmds.setToolTo(default_ctx)
neutral = 'head_neutral'
painted = 'c:/scans/bls_painted/delta_mush_inner_mouth_zone.iff'
emotion = cmds.ls(sl=True, fl=True)
bl = cmds.blendShape(neutral, emotion)[0]
cmds.select(emotion)
import_paint_weights(bl, painted)
Этот код работал, но проблема не решена.
def import_paint_weights(node, painted):
data_attr_map = {'blendShape':'baseWeights', 'deltaMush':'weights'}
default_ctx = cmds.currentCtx()
node_type = cmds.objectType(node)
node_attr = data_attr_map.get(node_type, None)
if not node_attr:
print 'Not recognized node. Use blendshape and deltamush only now'
return
mel.eval('artSetToolAndSelectAttr("artAttrCtx", "%s.%s.%s")' % (node_type, node, node_attr))
curr_ctx = cmds.currentCtx()
cmds.artAttrCtx(curr_ctx, selectedattroper='absolute', edit=True)
cmds.artAttrCtx(curr_ctx, edit=True, value=0)
cmds.artAttrCtx(curr_ctx, edit=True, clear=True)
cmds.artAttrCtx(curr_ctx, importfileload=painted,
ifm='luminance', edit=True)
cmds.setToolTo(default_ctx)