Recently I've designed a splash screen animation for my Chroma game development framework in After Effects and wanted to export animation data directly to JSON, so I could procedurally replicate it without having to export the entire thing to a 10MB-large sprite sheet. My Google searches proved fruitless, so I set out to write my own script.
Catch, maybe it'll be of use to you.
Note: make sure the file writing permissions are set in your scripting settings.
function ExportGraphCurve() {
var comp = app.project.activeItem;
if (!comp || !(comp instanceof CompItem)) {
alert("Select a composition.");
return;
}
var duration = comp.workAreaDuration;
var fps = 60;
var timeStep = 1 / fps;
var frameData = [];
for (var i = 1; i <= comp.numLayers; i++) {
var layer = comp.layer(i);
frameData[i - 1] = [];
var currentTime = 0;
var rotation = layer.rotation;
var opacity = layer.opacity;
var scale = layer.scale;
while (currentTime < duration) {
frameData[i - 1].push({
r: rotation.valueAtTime(currentTime, false),
o: parseFloat((opacity.valueAtTime(currentTime, false) / 100).toFixed(4)),
s: parseFloat((scale.valueAtTime(currentTime, false)[0] / 100).toFixed(4)) // we only care about uniform scales here
})
currentTime += timeStep;
}
}
var jFile = new File("J:\\exported_animation.json");
var content = JSON.stringify(frameData);
jFile.encoding = "utf-8";
jFile.open("w");
jFile.write(content);
jFile.close();
}
ExportGraphCurve();