【发布时间】:2016-01-20 09:15:52
【问题描述】:
我不确定这是否有一个术语,也许是帧偏移?但我试图每 4 帧在控制器上设置关键帧。例如。如果我的时间滑块在 1 到 23 的范围内,那么第 1、5、9、13、17、21 帧就会有关键帧。 我需要这个来制作动画,因为我在数百帧中拥有大量的绑定,有时它非常疯狂地计算并确保我没有超过 4 帧
但是我不知道如何编写脚本来告诉 Maya 每 4 帧设置一次。有人可以帮我吗?
【问题讨论】:
我不确定这是否有一个术语,也许是帧偏移?但我试图每 4 帧在控制器上设置关键帧。例如。如果我的时间滑块在 1 到 23 的范围内,那么第 1、5、9、13、17、21 帧就会有关键帧。 我需要这个来制作动画,因为我在数百帧中拥有大量的绑定,有时它非常疯狂地计算并确保我没有超过 4 帧
但是我不知道如何编写脚本来告诉 Maya 每 4 帧设置一次。有人可以帮我吗?
【问题讨论】:
如果该范围内已经有关键帧并且您想要规则的中间帧,您可以在现有曲线上使用bakeResults 以获得规则间隔的关键帧
cmds.bakeResults('pCube1.tx', sampleBy = 4, preserveOutsideKeys=1, sparseAnimCurveBake = 0, time = (1,100))
将在 pCube1 的 translate x 上烘焙现有曲线,在第 1 帧和第 100 帧之间每 4 帧添加一个关键点 此处的文档:http://help.autodesk.com/view/MAYAUL/2015/ENU/?url=http://help.autodesk.com/cloudhelp/2015/ENU/Maya-Tech-Docs/CommandsPython/bakeResults.html
【讨论】:
这是实现它的方法,我尝试避免使用多个 for 循环并尽可能多地使用标志来保持代码简洁。选择要应用密钥的节点并执行此代码。
SET_KEY_STEP = 4 #This is the step
NODES_LIST = cmds.ls(sl=True) #Apply keys to the selected nodes
ATTRS_LIST = ("tx", "ty", "tz") #Feel free to complete this attribute list
playbackStartTime = int(cmds.playbackOptions(query=True, min=True)) #Start frame
playbackEndTime = int(cmds.playbackOptions(query=True, max=True)) #End frame
TIMES_LIST = [i for i in range(playbackStartTime, playbackEndTime+1, SET_KEY_STEP)] #Creates the list 1,5,9,13,17,21...
result = cmds.setKeyframe( NODES_LIST, attribute=ATTRS_LIST, time=TIMES_LIST) #Set all the keys at the same time
print result, "keys added."
【讨论】: