SceneCast is a Blender add-on that records your modeling session — mesh edits, selection, 3D cursor, pivot changes, viewport angles, and keystrokes — and replays it as a smooth, scrubbable timeline. Export the session as an MP4 or PNG sequence to show the evolution of a scene, build tutorials, or create progress videos.
- Step recording — every settled edit becomes a step: geometry, transforms, which object was active, what was selected, where the 3D cursor was, which pivot/orientation/select-mode was set, and the keys you pressed.
- Multi-object — captures every visible mesh object; objects added mid-session hide when you scrub before their creation. Objects that didn't change share one snapshot between steps, so a busy scene costs what you edited, not what's in it.
- Modifier stacks — the modifier list, its order and its settings are recorded per step and rebuilt on replay, so a Mirror or Bevel added mid-session shows up in the video.
- Edit-mode replay — steps recorded in Edit Mode replay with the edit cage and the original selection highlighted (bmesh rebuild path).
- Smooth camera — playback and export glide between recorded viewport angles (quaternion slerp + smoothstep easing) instead of hard cuts.
- Keystroke overlay — screencast-style key display at the bottom of the viewport, live while recording and per-step during playback.
- Collection isolation — recorded objects are gathered into a dedicated collection on Record and restored on Clear.
- Export — MP4 (H.264) or PNG sequence via the viewport OpenGL renderer, with per-step frame holds and optional recorded-view camera. Pick the output size in the panel — 720p through 4K, 1080x1920 vertical for Shorts and Reels, square, or custom — without touching Output Properties.
- Memory budget — the panel shows what the session is holding and stops recording at a limit you set, rather than letting Blender run out of memory and take the unsaved file with it.
Requires Blender 4.2 or newer. Download scenecast-<version>.zip, then:
Edit → Preferences → Get Extensions → ⌄ (top right) → Install from Disk… and pick the zip. Enable it if it isn't already.
SceneCast installs as an extension, so it appears under Extensions and not in the legacy Add-ons list. That is expected — nothing has gone wrong. Installing from disk works without the add-on being listed on Blender's extensions platform.
The UI lives in the 3D viewport sidebar (N) under the SceneCast tab.
Legacy Add-ons install
python scripts/build.py also emits scenecast-<version>-legacy.zip, which
nests the files under scenecast/ for Edit → Preferences → Add-ons →
Install. Since the minimum supported Blender is 4.2 — the release that
introduced extensions — every supported version can use the extension flow
above, and that is the one to hand to users. The legacy variant exists only
for anyone who specifically wants the old install path.
- Open the N-panel > SceneCast tab.
- Hit Start Recording and model. Steps accumulate live.
- Stop, drop to Object Mode, and scrub or play the timeline.
- Use the Export box to render the session to video.
Pure-logic modules are testable without Blender:
pip install pytest
pytest tests/
tests/stubs/ contains bpy/bmesh/blf/mathutils stand-ins so the
package can be imported and its logic exercised in CI. The mathutils stub
does real arithmetic -- several behaviours under test are about how a
camera interpolates, which a Quaternion that cannot slerp cannot answer.
viewnav.register_view_filter(fn) is the extension point for anything that
wants the last word on the viewport: filters run after the view has been set,
on scrub, playback and export alike, and are handed the step index and how
far between that step and the next the frame is.
scenecast/
__init__.py registration hub (bl_info, register/unregister)
state.py session store + config constants
meshdata.py packed topology, content digests, session size accounting
modifiers.py modifier-stack capture and replay
viewnav.py viewport discovery, view classification, view interpolation
capture.py snapshots, change detection, depsgraph handler, watchdog
replay.py mesh rebuilds, context restore, playback clock
exporter.py frame-mapped export, render settings stash/restore
overlay.py keystroke capture (modal op) + on-screen drawing
ops.py user-facing operators
ui.py N-panel
props.py scene property registration
- Sessions are in-memory only; closing the file discards the recording.
- Memory grows with mesh size × changed steps. Unchanged objects and unchanged steps are shared rather than copied, and topology is stored as int32 buffers, but a long session on a dense mesh still has a ceiling — hence the memory budget. Quantised coordinate deltas are the next step (see ROADMAP).
- Modifier capture stores plain settings and datablock links by name. Curve mappings, hook vertex lists and other collection-valued settings are skipped rather than guessed at, and replaying a stack rebuilds it on the live object.
- Deleted objects can't be resurrected on rewind (they hide instead).
- Objects are tracked by name; renaming mid-session breaks the thread.
- Menu popups cannot be reproduced. A Blender menu is a transient UI popup
with no data trace: nothing reports that one is open or what it contains,
it is not an entry in
wm.operators, and popups are not drawn into an OpenGL render. This is an architectural ceiling, not a gap to close. What is shown instead is the shortcut that opened the menu (Shift+A) and the operator that was chosen from it ("Add Cube"), which conveys the action without the chrome. - Keys pressed inside a running modal operator (the
Z5of aGZ5move) are consumed by that operator and never reach aPASS_THROUGHmodal handler. Steps are labelled from the operator's own keymap shortcut instead, which is deterministic. Catching those keystrokes for real needs an aggressive event grab of the kind the Screencast Keys add-on implements. - Keys cannot ride the viewport overlay into exported video, because
render.opengldoes not run Python draw handlers. Two routes exist, chosen with Keys in Video: Bottom Centre renders the frames first and composites the text over them through the sequencer (two passes, slower, screencast placement), while Top Left uses Blender's render stamp in a single pass — the stamp's corner position is fixed by Blender. - Smooth Motion only blends objects whose topology is unchanged between two steps; a vert-count change snaps (you can't morph 8 verts into 12).
- "Edit Mode in Export" is experimental; mode switching during render can be fragile.
GPL-3.0-or-later. (Blender add-ons that import bpy are GPL-derived works;
GPL does not prevent selling the add-on — Blender Market, Gumroad and
FlippedNormals all distribute GPL add-ons commercially.)