Here’s a basic one.
Export:
rollout ExportKeys "Export Keyframes"
(
Button SetOutFile "Set output Filename" align:#right width:150
Button ExportAnim "Export Animation" align:#right width:150
on setoutfile pressed do
(
Global OutFile = getSaveFileName caption:"Choose the output filename" filename:"h:\\Databases\\"
SetOutFile.text = OutFile
)
Fn WriteAnimData Keyarray destfile =
(
for k = 1 to Keyarray.count do
(
Format "%," Keyarray[k].time to:DestFile
Format "%," Keyarray[k].value to:DestFile
Format "%," Keyarray[k].intangenttype to:DestFile
Format "%," Keyarray[k].intangent to:DestFile
Format "%," Keyarray[k].outTangentType to:DestFile
Format "%," Keyarray[k].outTangent to:DestFile
Format "%," Keyarray[k].inTangentLength to:DestFile
Format "%," Keyarray[k].outTangentLength to:DestFile
)
)
on ExportAnim pressed do
(
MyOutFile = OutFile
AnimFile = CreateFile MyOutFile
MyObjects = Selection as array
format "%
" MyObjects.count to:AnimFile
for i = 1 to myObjects.count do
(
XposKeys = MyObjects[i].position.x_position.controller.keys
YPosKeys = MyObjects[i].position.y_position.controller.keys
ZPosKeys = MyObjects[i].position.Z_position.controller.keys
XrotKeys = MyObjects[i].rotation.x_rotation.controller.keys
YrotKeys = MyObjects[i].rotation.y_rotation.controller.keys
ZrotKeys = MyObjects[i].rotation.z_rotation.controller.keys
-- Object Name
format "%
" MyObjects[i].name to:AnimFile
-- Key Counts
format "%
" XposKeys.count to:AnimFile
format "%
" YposKeys.count to:AnimFile
format "%
" ZposKeys.count to:AnimFile
format "%
" XrotKeys.count to:AnimFile
format "%
" YrotKeys.count to:AnimFile
format "%
" ZrotKeys.count to:AnimFile
-- Output keys
WriteAnimData XposKeys AnimFile
WriteAnimData YposKeys AnimFile
WriteAnimData ZposKeys AnimFile
WriteAnimData XrotKeys AnimFile
WriteAnimData YrotKeys AnimFile
WriteAnimData ZrotKeys AnimFile
Format "
" "" to:AnimFile
)
Close AnimFile
)
)
CreateDialog ExportKeys width:250
And the corrosponding import:
Rollout ImportExportKeys "Import / Export Keyframes"
(
Group "Import Animation"
(
Button importAnim "Import Animation" align:#right width:150
)
Group "Export Animation"
(
Button SetOutFile "Set output Filename" align:#right width:150
Button ExportAnim "Export Animation" align:#right width:150
)
Fn ReadAnimData TargetKeys KeyCount sourcefile =
(
for k = 1 to KeyCount do
(
TempKeyTime = readValue sourcefile
addNewKey TargetKeys TempKeyTime
TempKeyValue = readValue sourcefile
TargetKeys[k].value = TempKeyValue
TempInType = readValue sourcefile
TargetKeys[k].intangenttype = TempInType
TempIn = readValue sourcefile
TargetKeys[k].intangent = TempIn
TempOutType = readValue sourcefile
TargetKeys[k].Outtangenttype = TempoutType
TempOut = readValue sourcefile
TargetKeys[k].Outtangent = Tempout
TempInLength = readValue sourcefile
TargetKeys[k].inTangentLength = TempInLength
TempOutLength = readValue sourcefile
TargetKeys[k].OutTangentLength = TempOutLength
)
)
Fn WriteAnimData Keyarray destfile =
(
for k = 1 to Keyarray.count do
(
Format "%," Keyarray[k].time to:DestFile
Format "%," Keyarray[k].value to:DestFile
Format "%," Keyarray[k].intangenttype to:DestFile
Format "%," Keyarray[k].intangent to:DestFile
Format "%," Keyarray[k].outTangentType to:DestFile
Format "%," Keyarray[k].outTangent to:DestFile
Format "%," Keyarray[k].inTangentLength to:DestFile
Format "%," Keyarray[k].outTangentLength to:DestFile
)
)
on importanim pressed do
(
Global MyInFile = getOpenFileName caption:"Choose an animation file:" filename:"H://Databases//"
MyFile = OpenFile MyInFile
ObjCount = readline MyFile as integer
For i = 1 to objcount do
(
SourceObj = readline MyFile as string
TargetObj = execute ("$" + SourceObj)
TargetXCont = TargetObj.position.x_position.controller.keys
TargetYCont = TargetObj.position.y_position.controller.keys
TargetZCont = TargetObj.position.z_position.controller.keys
TargetXRotCont = TargetObj.rotation.x_rotation.controller.keys
TargetyRotCont = TargetObj.rotation.y_rotation.controller.keys
TargetzRotCont = TargetObj.rotation.z_rotation.controller.keys
XKeyCount = readline MyFile as integer
YKeyCount = readline MyFile as integer
ZKeyCount = readline MyFile as integer
XRotKeyCount = readline MyFile as integer
YRotKeyCount = readline MyFile as integer
ZRotKeyCount = readline MyFile as integer
ReadAnimData TargetXCont XKeyCount MyFile
ReadAnimData TargetYCont YKeyCount MyFile
ReadAnimData TargetZCont ZKeyCount MyFile
ReadAnimData TargetXRotCont XRotKeyCount MyFile
ReadAnimData TargetYRotCont YRotKeyCount MyFile
ReadAnimData TargetZRotCont ZRotKeyCount MyFile
)
)
on setoutfile pressed do
(
Global OutFile = getSaveFileName caption:"Choose the output filename" filename:"h:\\Databases\\"
SetOutFile.text = OutFile
)
on ExportAnim pressed do
(
MyOutFile = OutFile
AnimFile = CreateFile MyOutFile
MyObjects = Selection as array
format "%
" MyObjects.count to:AnimFile
for i = 1 to myObjects.count do
(
XposKeys = MyObjects[i].position.x_position.controller.keys
YPosKeys = MyObjects[i].position.y_position.controller.keys
ZPosKeys = MyObjects[i].position.Z_position.controller.keys
XrotKeys = MyObjects[i].rotation.x_rotation.controller.keys
YrotKeys = MyObjects[i].rotation.y_rotation.controller.keys
ZrotKeys = MyObjects[i].rotation.z_rotation.controller.keys
-- Object Name
format "%
" MyObjects[i].name to:AnimFile
-- Key Counts
format "%
" XposKeys.count to:AnimFile
format "%
" YposKeys.count to:AnimFile
format "%
" ZposKeys.count to:AnimFile
format "%
" XrotKeys.count to:AnimFile
format "%
" YrotKeys.count to:AnimFile
format "%
" ZrotKeys.count to:AnimFile
-- Output keys
WriteAnimData XposKeys AnimFile
WriteAnimData YposKeys AnimFile
WriteAnimData ZposKeys AnimFile
WriteAnimData XrotKeys AnimFile
WriteAnimData YrotKeys AnimFile
WriteAnimData ZrotKeys AnimFile
Format "
" "" to:AnimFile
)
Close AnimFile
)
)
CreateDialog ImportExportKeys Width:250
It’s only working on simple things right now - no list controllers etc but it might be of help.