blender-previs · git:20260923.7a181c8 · 2026-09-23 · sha256 eb644f348a7c9726

blender-previs git:20260923.7a181c8A

Immutable. This exact content never changes and is served at /api/v1/blob/eb644f348a7c9726.

---
name: blender-previs
description: "Use when turning a story or shot list into a color-coded white-model previs video in Blender, producing placeholder blocking, exact cut timing, and a machine-readable geometry-to-role map for downstream Seedance video generation."
---

# Blender white-model previs

Previs answers three questions cheaply and deterministically: where the camera is,
when the cut happens, and where every subject stands and moves. Iterate those here,
in Blender, for free — never burn paid video-generation attempts on framing or timing
guesses. This Skill produces a previs package, not a final-quality film: placeholders
have no costume, texture, or limb articulation by design.

## When to use

- The user provides a story, script, or shot list and wants a blocking/timing preview.
- A downstream video request (Seedance/Dreamina) needs a camera-and-timing reference
  video instead of text-only prompting.
- An existing previs shot is rejected and must be re-blocked without touching the others.

Do not use this Skill for lookdev, final renders, or character performance. Route those
to `blender-design-render-compositing` and `blender-design-character-animation`.

## Workflow

1. **Read status first.** Call `blender_connection_status`. With no guarded Harness
   session connected, route to `blender-design-mcp-setup`; never assume Blender exists
   because this Skill was loaded.
2. **Fix the shot table.** Accept a structured shot table conforming to
   [previs-shot-table.schema.json](references/previs-shot-table.schema.json), or derive
   one from prose and get the derivation confirmed before building anything. Every shot
   needs a stable id, integer frame range at the project fps, shot size, camera intent,
   and per-subject position or motion beats. Frame arithmetic is the contract: the shot
   durations must sum to the project total exactly.
3. **Cast the placeholder scene.** One primitive per role, cast from the default
   convention table below unless the user overrides it. Colors must stay visually
   distinguishable from each other and from the environment; one role never shares a
   color with another. Name every placeholder `previs_role_<roleId>` and record the
   full mapping as [previs-map.schema.json](references/previs-map.schema.json) content.
   Add a ground plane and one neutral scale reference.
4. **Block, do not perform.** Keyframe only object location and orientation, with
   **linear interpolation on every fcurve**: default bezier AUTO handles let a
   neighboring key cliff (an explosion pop, a cut-boundary teleport) bend unrelated
   segments and drag a tracked subject off-center. Limb articulation, facial
   performance, and physics are intentionally absent; say so in the deliverable
   instead of approximating them.
5. **Camera per shot.** Follow `blender-design-cinematography` for placement, lens
   intent, and moves. A search/POV shot aims at what the character is looking for —
   key the tracking target onto the subject being found, not at empty space. Cuts
   are hard frame-range boundaries from the shot table; add a transition only when
   the table explicitly requests one.
6. **Render cheap, per shot.** Render each shot as its own frame-range job
   (`job.submit` with `RENDER_ANIMATION_FRAMES`, Workbench or low-sample EEVEE) so a
   rejected shot re-renders alone. Via `blender-design-background-jobs`.
7. **Stitch with exact cut frames.** Assemble the per-shot clips in the sequencer
   (`COMPOSE_VIDEO`, via `blender-design-sequence-editing`) and verify the composited
   duration equals the shot-table total in integer frames.
8. **Deliver the previs package:** the previs video, the shot table, the geometry-to-role
   map, and the downstream handoff prompt drafted from
   [seedance-handoff-prompt.md](references/seedance-handoff-prompt.md) — that prompt is
   what `codex-dreamina-3d-from-blender` or `dreamina-video-production` consumes to turn
   this previs into a real shot.
9. **Iterate in place.** A rejected shot keeps its id; re-block and re-render only that
   shot, restitch, and reissue the package. Never renumber shots: downstream references
   and approvals hang off the ids.

## Default color convention

Override as a set, per project, in the geometry-to-role map; never ad hoc per shot.

| Role class | Primitive | Color |
| --- | --- | --- |
| Protagonist | Cube | Light cyan `#7FD4C1` |
| Antagonists / pursuers | Cubes, one each | Dark gray `#4A4A4A` |
| Hero prop (rocket, weapon, macguffin) | Cylinder | Red `#D9483B` |
| Ground vehicle | Box | White `#F2F2F2` |
| Rail or large vehicle | Long box | Teal `#2E8B8B` |
| Environment landmark | Keep real blocking mass, untextured | Neutral gray |

## Never do

- Never claim the previs represents limb motion, performance, or final visuals.
- Never let two roles share one color, or change a role's color mid-project.
- Never move a cut or retime a shot without updating the shot table first.
- Never submit a paid video-generation request from this Skill; producing the handoff
  prompt is where it ends.
- Never treat a rendered previs as approval to skip the user's shot-table review.