Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Blender Replay

Blender Replay records Blender operators, selection/mode context, object and scene changes, materials, and mesh geometry checkpoints. On replay, it runs the original operators and repairs recorded state only when the result diverges.

The extension targets Blender 5.2 and remains compatible with Blender 4.2 LTS and newer.

Why this exists

Blender exposes most commands as bpy.ops operators, but it does not expose a global Python callback containing every UI action. Operator-only recorders therefore miss important modeling context: selected vertices, edges, faces, active elements, modes, and direct RNA property edits. A transform can be captured perfectly while still acting on the wrong face during replay.

Blender Replay uses five capture layers:

  1. Completed operators and all serializable RNA properties from WindowManager.operators.
  2. Active object, mode, object selection, mesh component selection, and bone selection.
  3. Object transforms, visibility, parenting, and modifier values after dependency-graph changes.
  4. Material nodes, material slots, cameras, lights, world settings, and render/view settings.
  5. Optional mesh checkpoints containing coordinates, edges, faces, selection, material indices, and smoothing.

This is broader than an operator macro, but "every Blender action" is not literally possible from a Python extension. View navigation, modal mouse motion, sculpt/paint strokes, simulation caches, arbitrary add-on internals, and some editor-only state may not be reconstructable. Blender Replay records the resulting supported state where possible and reports skipped checkpoints.

Install

Build the extension with Blender 5.2:

blender --command extension build \
 --source-dir /path/to/blender-replay \
 --output-dir /path/to/blender-replay/dist

In Blender, open Edit → Preferences → Get Extensions, use the menu in the top-right, choose Install from Disk, and select blender_replay-0.4.0.zip.

Open 3D Viewport → Sidebar (N) → Replay.

Prebuilt packages are available from GitHub Releases.

Platform compatibility

Blender Replay is a pure-Python extension with no native libraries or operating-system-specific paths. One universal package supports:

  • Windows x64 and ARM64 wherever Blender 4.2 or newer is available.
  • macOS on Apple Silicon, plus Intel Macs running a compatible Blender release.
  • Linux x64.

Automated tests install and exercise the packaged extension on Windows x64, macOS Apple Silicon, and macOS Intel. The manifest deliberately omits a platforms restriction, which is Blender's standard way to mark an extension as available on every supported operating system.

Use

  1. Set a recording name and press Start Recording.
  2. Model normally. Use Capture State Now after an operation from an unusual add-on if you want an explicit checkpoint.
  3. Press Pause to end the current capture segment. Commands performed while paused are not recorded individually.
  4. Press Resume to start another segment. Blender Replay stores a full bridge checkpoint so replay reaches the current scene state before continuing. Paused recordings are saved in the blend file and can be resumed after reopening it.
  5. Press Stop when all segments are complete.
  6. Use Restore Baseline + Replay for the most deterministic replay. This removes objects created after recording started, so Blender Replay asks for confirmation.
  7. Use Replay Here when the recording is meant to operate on the current selection instead.

Recordings are saved as hidden Blender text data-blocks and can be exported as human-readable .chronicle.json files. Each recording can contain any number of pause-delimited capture segments. Import never evaluates Python source. File-opening, factory-reset, quit, and arbitrary Python-file operators are blocked during replay.

Performance and persistence

Blender Replay waits 250 ms for dependency-graph changes to settle, then combines continuous direct edits into one latest-state checkpoint. Repeated mesh snapshots are content-addressed, so identical geometry is stored once.

Embedded recordings use compressed text data. Legacy plain-JSON recordings remain readable. Recording data is persisted when recording starts, pauses, resumes, or stops; when Capture State Now is pressed; and before the .blend file is saved. This avoids rewriting the complete action history every few seconds while modeling.

MESH_OT_loopcut_slide is replayed through its following geometry checkpoint instead of executing its interactive modal macro in a non-interactive context. The replay summary reports this as a checkpoint fallback, not a dropped command. Checkpoints also remove stale modifiers that are absent from the recorded state.

Verified replay demo

Low-poly airport scene recorded by Blender Replay

The included airport verification records 65 simulated UI operators that construct 68 objects. Restoring the baseline and replaying produces the same scene digest and a pixel-identical render, with no warnings or geometry repairs. The full metrics are in verification_report.json.

Existing alternatives checked in July 2026

  • ActionRecorder is free and received Blender 5.0 compatibility work in February 2026. It remains centered on captured operators and commands.
  • SMS Macros V2 records operators, right-clicked properties, assets, and Info-editor entries. It is the strongest maintained off-the-shelf option found.
  • Macro Mimic 0.0.3 is a low-cost experimental recorder whose author still recommends Info-editor copy/paste for heavy scenes.
  • M.A.C.R.O. targets Blender 5.1, but its own product page excludes physics simulations and scene settings.

If right-click-to-add property macros are enough, try SMS Macros V2 before adopting custom code. Blender Replay is aimed at modeling sequences where selection and topology fidelity matter.

Development

Pure Python tests:

python -m unittest discover -s tests

Blender integration test:

blender --background --factory-startup --python scripts/test_blender.py

Live UI operator-capture test:

blender --factory-startup --enable-event-simulate --python scripts/test_ui_capture.py

End-to-end airport scene build, record, replay, and render comparison:

blender --factory-startup --enable-event-simulate --python scripts/verify_airport_scene.py

Validate the extension manifest:

blender --command extension validate .

License

GPL-3.0-or-later, matching Blender extension requirements.

About

Record and deterministically replay Blender actions with context and geometry checkpoints

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /