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.