5
$\begingroup$

Using Python to add a keyframe to an object seems easy (see here or here), but how can I add a keyframe to a scene property?

As a concrete example, take bpy.context.scene.gravity.

$\endgroup$

1 Answer 1

10
$\begingroup$

Even though the examples linked are to keyframe an object, there is in fact no difference and the same methods apply to both.

Simple:

scene = bpy.context.scene
scene.keyframe_insert(data_path="gravity", frame=10.0)

Advanced:

scene = bpy.context.scene
if not scene.animation_data:
    scene.animation_data_create()
if not scene.animation_data.action:
    scene.animation_data.action = bpy.data.actions.new("GravityAction")

fcurve = None
for fcurve in scene.animation_data.action.fcurves:
    if fcurve.data_path == "gravity":
        break
if not fcurve or fcurve.data_path != "gravity":
    fcurve = scene.animation_data.action.fcurves.new("gravity")
keyframe = fcurve.keyframe_points.insert(frame=10.0, value=20.0)
keyframe.interpolation = "LINEAR"
#keyframe.handle_left
#keyframe.handle_right
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .