为已设置动画的曲线创建关键帧
可以使用以下 Python 示例脚本来创建已设置动画的曲线并设定其关键帧:
import maya.OpenMaya as om
import maya.OpenMayaAnim as oma
def addkeys(plugName, times, values, changeCache):
# Get the plug to be animated.
sel = om.MSelectionList()
sel.add(plugName)
plug = om.MPlug()
sel.getPlug(0, plug)
# Create the animCurve.
animfn = oma.MFnAnimCurve()
animCurve = animfn.create(plug, oma.MFnAnimCurve.kAnimCurveTL)
# Copy the times into an MTimeArray and the values into an MDoubleArray.
timeArray = om.MTimeArray()
valueArray = om.MDoubleArray()
for i in range(len(times)):
timeArray.append(om.MTime(times[i], om.MTime.uiUnit()))
valueArray.append(values[i])
# Add the keys to the animCurve.
animfn.addKeys(
timeArray,
valueArray,
oma.MFnAnimCurve.kTangentGlobal,
oma.MFnAnimCurve.kTangentGlobal,
False,
changeCache
)
以上示例代码会将关键帧动画添加到通道(即栓)。如果不需要具有撤消更改的能力,则可以按以下方式进行调用:
addkeys('pCube1.tx', [1.0, 3.0, 5.0], [0.6, 1.2, 2.4], None)
但是,如果需要具有撤消更改的能力,那么请按以下方式进行调用:
changeCache = oma.MAnimCurveChange()
addkeys('pCube1.tx', [1.0, 3.0, 5.0], [0.6, 1.2, 2.4], changeCache)
然后执行以下脚本以撤消更改:
changeCache.undoIt()
注意
为简便起见,该函数假定由 plugName 指定的栓当前未设置动画。这种情况作为练习,以便您添加使假设不必要所需的检查。