在OpenMaya中驱动动画曲线

时间:2018-08-21 20:24:03

标签: python maya

尝试使用OpenMaya创建驱动(无单位)animCurves时,我有些困惑

我正在使用OpenMaya api 2.0进入Maya 2017

我正在尝试使用MFnAnimCurve同时创建多个关键帧。这在使用定时曲线类型(使用MTimeArray作为第一个参数)时似乎有效,但在使用无单位曲线和第一个参数使用MDoubleArray时失败。 我想念什么吗?我应该为第一个参数使用其他类型吗?

import maya.api.OpenMaya as om
import maya.api.OpenMayaAnim as oma

graph_modifier = om.MDGModifier()

m_object = om.MFnDependencyNode().create('transform', 'locator1')
node = om.MFnDependencyNode(m_object)

m_plug = node.findPlug(node.attribute('translateX'), True)
out_plug = node.findPlug(node.attribute('translateY'), True)


mfn_anim_curve = oma.MFnAnimCurve()
curve_type = mfn_anim_curve.unitlessAnimCurveTypeForPlug(m_plug)
#curve_type = mfn_anim_curve.timedAnimCurveTypeForPlug(m_plug)


anim_curve_m_object = oma.MFnAnimCurve().create(m_plug, animCurveType=curve_type)
anim_curve = oma.MFnAnimCurve(anim_curve_m_object)

in_plug = anim_curve.findPlug(anim_curve.attribute('input'), True)

graph_modifier.connect(out_plug, in_plug)
graph_modifier.doIt()


in_values = om.MDoubleArray()
out_values = om.MDoubleArray()
for x in range(5):
    in_values.append(float(x))
for x in range(5):
    out_values.append(float(x))

print in_values, out_values

anim_curve.addKey(1.0, 1.0)
anim_curve.addKey(2.0, 2.0)

#This Fails
anim_curve.addKeys(in_values, out_values)

1 个答案:

答案 0 :(得分:0)

有人向我指出,MFnAnimCurve.addKeys()的文档确实指定了它仅适用于kAnimCurveTA,kAnimCurveTL和kAnimCurveTU。而unitlessAnimCurveTypeForPlug()返回的类型是kAnimCurveUL