hou.Keyframe

How to set keyframe by python

setKey = hou.Keyframe()

setKey.setFrame(10)

setKey.setValue(5)

testCh = hou.parm("obj/geo1/tx")

testCh.setKeyframe(setKey)

How to Get Param at Frame

hou.parm("../../obj/parm").evalAtFrame(frame)

Key baker Script

sel = hou.selectedNodes()

parms = sel[0].parms()

keyedParmList = []

parmNames = []

for i in parms:

if i.isTimeDependent() == 1:

keyedParmList.append(i)

parmNames.append(i.description() + "(" + i.name() + ")")

bakes = hou.ui.selectFromList(parmNames, message='Select Parms to bake key')

framerange = range(int(hou.expandString('$RFSTART')), int(hou.expandString('$RFEND')) + 1 )

for i in bakes:

keyVals = {}

for kf in framerange:

keyVals[kf] = keyedParmList[i].evalAtFrame(kf)

keyedParmList[i].deleteAllKeyframes()

for kf in framerange:

setKey = hou.Keyframe()

setKey.setFrame(kf)

setKey.setValue( keyVals[kf] )

keyedParmList[i].setKeyframe(setKey)

xmlmenu

<?xml version="1.0" encoding="UTF-8" ?>

<menuDocument>

<menu>

<separatorItem />

<scriptItem id="IE_bake_key_id">

<label>IE Bake Key</label>

<scriptCode>

<![CDATA[

parm = kwargs["parms"]

framerange = range(int(hou.expandString('$RFSTART')), int(hou.expandString('$RFEND')) + 1 )

for i in parm:

if i.isTimeDependent() == 1:

keyVals = {}

for kf in framerange:

keyVals[kf] = i.evalAtFrame(kf)


i.deleteAllKeyframes()


for kf in framerange:

setKey = hou.Keyframe()

setKey.setFrame(kf)

setKey.setValue( keyVals[kf] )


i.setKeyframe(setKey)

]]>

</scriptCode>

</scriptItem>

</menu>

</menuDocument>