본문으로 건너뛰기
cccskills
무료GitHub에 공개

scenario-blender-blockout

Use when a text brief or a reference image must become a Blender blockout whose playblast guides a render-to-real video pass (a video model that takes a reference clip, such as Seedance, or the Render Video lane of the Scenario Blender Plugin): graybox or previs built for a video model, color-coded proxies at metric scale from rough to detailed, density levels from a simple shot to an expert scene with crowds, traffic and many cuts, character stand-ins chosen per video model (colored capsules, capsules with signature features, rigged gray mannequins), a camera locked to the timeline, rail or tracking camera rigs, lens per shot, framing and occlusion checks, a playblast, a hand-off sheet for the video prompt. Also when a render-to-real pass renders the proxies as boxes, reads one figure as two people, gives runners a stiff, lockstep or sliding gait, swaps a car's front and rear, drifts at the end, or the guide camera pops on a cut.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Blender
설치 방법 보기

포함된 파일(15)

  • SKILL.md18.0 KB
  • references/audits.md7.6 KB
  • references/cast.md11.4 KB
  • references/contract.md15.1 KB
  • references/examples.md8.8 KB
  • references/handoff.md13.0 KB
  • references/levels.md9.2 KB
  • references/plugin.md4.2 KB
  • scripts/bx_blockout.py34.8 KB
  • scripts/bx_kits.py57.8 KB
  • scripts/examples/ex_common.py4.1 KB
  • scripts/examples/ex1_watchmaker.py8.5 KB
  • scripts/examples/ex2_saltflat.py8.7 KB
  • scripts/examples/ex3_bridge.py12.3 KB
  • scripts/examples/ex4_sky_islands.py13.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Blender blockout for a render-to-real video pass

The blockout is the guide clip: the video model copies the camera path, framing, lens feel, easing, cut points, shot lengths, the position and scale of every mass, figure facing and every trajectory, and it invents the rest from text and images (materials, light, weather, what each proxy really is, faces, wardrobe, extras, sound). So the blockout has full authority over motion and layout and none over look. Ambiguity ruins the pass; crudeness does not: a bent lamppost comes back as a snake, loose limb blocks as extra people, an unmarked car driving backward. Fix identity in geometry first, in prompt text second, and judge the result on a synced side-by-side of playblast and video, never in the viewport alone. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.

REQUIRED BACKGROUND: scenario-blender-expert (execution channel, review loop, 5.2 API changes). Video generation: scenario-blender (the plugin's quote, generate and place flow), the scenario skill (connection, uploads, jobs) and scenario-seedance (reference-video fields).

Toolkit: scripts/bx_blockout.py: import sys; sys.path.insert(0, "<this skill>/scripts"); [sys.modules.pop(m, None) for m in ("bx_blockout", "bx_kits")]; import bx_blockout as B, where <this skill> is the installed folder's absolute path. The pop drops a copy an earlier run left in Blender's one Python. Builders are get-or-create by name, so a call can run again, and they refuse a name the user's own work already holds (names are global to the file). An empty audit result is a pass. The module docstring shows the call order. scripts/bx_kits.py (import bx_kits as K, same rules) adds buildings, stalls, trees, lamps, rocks and vehicles at three fidelity tiers, figures in four cast styles, crowds, traffic, color schemes and K.audit_budget. Four worked scenes, simple to expert, with render-pass results: examples (harness, 1, 2, 3, 4).

Which skill. This one: guides for a video model. Story previs and animatics judged by a director and an editor: scenario-blender-previs-storyboard; an approved animatic that must guide a video model is rebuilt here.

1. Restate the brief as a build plan

Before any call, write down:

  • Elements and their primitive: "bus = long box with a marked front", "figures = colored capsules". Never model past what the brief names.
  • Dimensions in meters for everything; when the brief is silent, take them from the contract tables and say so.
  • Format: integer fps, aspect, seconds. The range is 1 to fps x seconds (8 s at 24 fps: 1..192).
  • Shots: count, move, lens, framing invariants ("hero always in frame, full figure"), cut style; beats pinned to seconds, converted to frames now.
  • Levels: density (simple, medium, advanced, expert: footprint, elements, heroes, extras, shots), fidelity (rough, shaped, detailed) and color scheme, read off the brief and set apart: levels. Where the brief is silent (naming only heroes and shots is silent): advanced, shaped, category colors, and say so; drop to simple or medium only for one actor in one place. Expert means many elements, movers and cuts, never finer blocks.
  • Video model, now: cast style and prompt grammar depend on it (list_models on the plugin lane, recommend on the hosted route).
  • Cast style per character (cast): a stand-in with limbs hands the model a gait to copy; one without limbs lets it invent body and motion. Default heroes to colored capsules, featured (two or three signature features: goggles, a hood, a held lantern) when characters must stay apart or carry the story's object; a rigged gray mannequin only when the blockout must own limb motion. Tell the user the style chosen, what it costs in control, and that the others can be A/B tested on a short window.
  • Identity colors: hero red, then blue, green, yellow, purple, cyan.
  • Deliberate gaps the video model fills, and acceptance tests the brief states: they become mandatory audits.

Decide what the brief leaves open and record the decision; do not stop to ask. Spending is the exception: Scenario prices are shown and approved by the user (section 3). With a reference image: list its masses, block them at plausible scale, match camera height and lens, render_still from the camera, compare, adjust until the composition matches, and only then animate.

2. Output contract

Four deliverables: the scene, a locked camera timeline, the playblast, the hand-off sheet.

  • Scene hygiene. Role prefixes (ENV_, FIG_, PRP_, CAM_, CRV_, RIG_, NULL_target_, full table in the contract), one root collection with role sub-collections. Park the default Cube, Light and Camera with B.park, never delete. If the file holds other work, build in a new scene (B.make_scene) and touch nothing existing; every object must trace to one of your stages.
  • Scale. Meters, Z up, ground at z = 0, figure roots at the feet. The model keeps every mass where it is at its size, mistakes included. Nothing familiar for scale: add a REF_ figure.
  • Color separates masses and names identities. One saturated color per hero (B.PALETTE, hero red), the set in one K.scheme (category hues by default, identity grays, or material colors), extras in mid grays, one light, a dark world. B.paint and the kits set object color and materials; a kit carries several colors, so Solid view needs color type Material (B.solid_view()'s default and the playblast's). An all-gray playblast has lost identity. Recolor a kit through its arguments: its materials are shared per color. Grid or checker texture only where the camera travels and depth must read, declared "replace, never inherit" in the sheet.
  • Timeline. B.lock_format before any geometry: integer fps, frames 1 to fps x seconds, 1920x1080 (2520x1080 for 21:9) at 100 %. One camera per shot, bound to a CUT_ marker on its first frame (B.bind_cuts), hard cuts, zero transition frames.
  • Camera rigs. Rail: B.rail_camera (curve, dolly on Follow Path, aim with Track To, camera). Handheld tracking, straight push-in and multi-shot masters: recipes in the contract. Reframe by moving the aim target, never by rotating the camera.
  • Lens. One lens per shot from shot size (B.lens_for_coverage; 28 mm orbits, 42 to 45 mm over-the-shoulder, 24 to 30 mm interiors, 85 mm macro), clip_start 0.05. A cut changes lens only by changing camera: never key a lens step on a cut frame. A lens may ease inside a shot (a deliberate zoom), never jump.
  • Easing. Bezier keys with auto-clamped handles (B.smooth_keys); speed is key spacing on the rail (B.key_rail), a pause is two near-equal values. LINEAR only for per-frame baked travel (vehicles, wheels). Keys run past every cut so nothing stops on the boundary.
  • Handheld is NOISE F-curve modifiers, never keyed jitter. Measure the result with B.audit_handheld against the budget in the contract; animation_data_clear() removes the modifiers, so re-add them after rekeying.

3. Channel: the Scenario Blender Plugin

The live channel is the plugin's local Scenario MCP server, scenario-blender (the guide at blender.scenario.com calls the plugin Scenario for Blender). Tool table, call limits and recovery after a timeout: plugin. The two that bite first: execute_python stays off until the user enables Allow connected agents to run Python (a PermissionError means ask), and a call stops after 120 s, so send one stage piece per call and run B.stage_backup(label) after each stage.

Where the plugin's own tools fit (details in plugin): its paid Blockout (estimate_blockout, approve_blockout, then the user's Build plan button) suits Stage 2 for a generic set and makes no figures, cameras or identity colors; camera_path keys one camera around a static center for a single shot, never a tracking or multi-shot sequence (those use B.rail_camera); Render Video is the video pass, section 6.

4. Build order

Back up after every stage; a reset is recovered from the last backup (contract). Every execute_python call starts with B.guard(expected_file=..., scene=...): queued calls land in whatever file is open.

  1. Probe, read-only: scene_summary, datablocks_summary. Other work present: new scene.
  2. Format and scaffolding: B.make_scene, B.lock_format, B.collection tree, B.park, dark world.
  3. Set: kits at the chosen fidelity (K.building, K.stall, K.tree) or thick boxes (B.box) at true scale, repeats as linked duplicates (K.instance). Or the plugin Blockout for a generic set.
  4. Figures: K.figure(..., style=, features=) per hero in the chosen cast style, root at the feet, facing along travel (cast). Travel with K.walk_path from a table of (frame, position), stride 0.42 x height for a walk, about 0.7 for a run; gestures with K.pose; extras with K.crowd(style=...).
  5. Props and vehicles: literal primitives at true position. Mark a vehicle's front in geometry (light blocks and grille in front, dark red at the rear); wheels at z = radius, separate with one spin channel only when a close shot reads rotation (kit wheels are body mesh). No loose blocks near a figure.
  6. Light: one area light; named key, fill, rim only when the brief designs light.
  7. Cameras: rigs and lenses per shot, B.bind_cuts.
  8. Motion polish: B.key_rail and B.smooth_keys, keys past cuts, handheld, vehicle travel as one monotone curve keyed per frame.
  9. Audit (section 5) until clean. When set dressing hides the hero, move the blockers and keep the camera plan.
  10. Finalize: frame 1, shot 1's camera, B.audit_frames, B.state_audit, final backup, then playblast and hand-off sheet.

5. Audits: numbers judge, then look

CheckHelper
Frame math and resolutionB.audit_frames(seconds, fps)
Markers bound, switches, lens, jumpsB.audit_cuts() (same_lens_across_cuts=True when the brief wants one lens)
Subjects in frame per shotB.audit_framing({"CAM_s1": ["FIG_red"]}, whole=True) for full figures
Head never hiddenB.audit_occlusion("FIG_red")
Too close, outside the legal volumeB.audit_distance(subject, volume=...) (full-figure shots only)
InterpenetrationB.audit_intersections(names)
Feet and wheels on the groundB.audit_ground(names)
Handheld amplitudeB.audit_handheld("CAM_s1")
Census before hand-offB.state_audit()

Audit each shot's own subject (the wheel for a macro, the hand for an insert). Then look: set_frame and render_still at the first, middle and last frame of every shot, and check what numbers miss: a vehicle's front, connected figures, rigid props without organic curves, nothing stray at frame edges, an ending as locked as the opening. Thresholds and readings: audits. An audit samples every step frames; on a long shot raise step to stay under the call limit.

6. Playblast, hand-off sheet, video pass

Playblast. Headless, on the latest B.stage_backup copy, with scenario-blender-expert's bx_review.playblast(out_path, res_pct=100): an H.264 MP4 of the scene camera over the frame range in Workbench, cuts following the bound markers. Use the session's binary (bpy.app.binary_path): an older blender on PATH refuses the file. With no shell, the same call through execute_python blocks Blender while it renders: keep it to short clips, and after a timeout look for the file before running it again. Add camera stills at each shot's start, middle and end.

Hand-off sheet, built from the scene (template): color legend tied to reference images, K.cast() rows, the cut list from B.cut_list() with exact times, which entities are blocked and which exist only in words, every artifact with its timecode, each motion state in words ("creeps", "stands still"), and tie-break clauses ("if text and video disagree about motion, the video wins").

Video pass, always through Scenario, after the user approves the exact price. Unattended, stop at the quote (estimate_cost or dry_run), report it, and skip local uploads that need the user's file choice:

  • Plugin, Render Video lane: B.solid_view() so the capture shows identity colors, force_solid false (it turns everything one gray), a timeline length the model accepts, then list_models, model_schema, render_form (configure with parameters {"duration": <clip seconds>}, prepare, inspect), estimate_cost, generate, wait_for_job and the result application, step by step in handoff Route 1. The capture is a silent 1280x720 clip.
  • Hosted Scenario MCP, for the full-resolution playblast: upload the playblast as the scenario skill shows, discover a model that takes a reference video, model_schema_get, model_run with dry_run first, jobs_wait, asset_download.

Write the prompt motion-first: the clip is rehearsal footage, the cast is described by role and motion, never by the proxies' shapes, and style comes from a four-panel style board rather than one restyled frame. A capsule cast adds a stand-in clause (the capsules only mark position, height, pace and heading) and a gait clause (cast). On the plugin lane the plugin states the clip's and images' roles itself, so look holds only cast and style. Grammar, clauses and tested limits: handoff.

Worked example

Brief: "10 s, 24 fps: a red runner sprints between crate rows toward camera in a warehouse; a blue guard steps out at second 6; handheld 35 mm backing away."

  1. scene_summary {"fields": ["type"], "limit": 100}: the file holds other work, so build beside it.
  2. execute_python: B.make_scene("BLK_warehouse"); next call B.guard(scene="BLK_warehouse"), B.lock_format(24, 10) (1..240), collections, backup.
  3. Floor 34 x 20 m, 7 m walls, two rows of 1.2 m crates with B.box; backup.
  4. K.figure("red", 1.8, (0, 15, 0), style="featured", features=("hood",)), then K.walk_path to (0, 1) by frame 200 with a sprint's stride (1.3 m); the blue guard, a capsule, steps into the aisle over frames 144 to 156; backup.
  5. B.rail_camera("s1", [(0, 3, 1.5), (0, -1, 1.5), (0, -4, 1.5)], follow="FIG_red", target_offset=(0, 0, 1.2), lens=35), B.key_rail("RIG_dolly_s1", [(1, 0), (260, 1)]), B.bind_cuts([(1, "CAM_s1")]), handheld noise within budget.
  6. B.audit_frames(10, 24), B.audit_cuts(), B.audit_framing({"CAM_s1": ["FIG_red", "FIG_blue"]}, whole=True), B.audit_occlusion("FIG_red"), B.audit_handheld("CAM_s1"); move crates until clean.
  7. set_frame 1, 120, 240 with render_still each, and look. Backup, headless playblast, B.cut_list() into the sheet.

Common mistakes and downstream misreads

  • Identity not in geometry: a floating head or slab arms; loose blocks near a figure read as extra people; a car with no marked front driven in reverse; an occupant behind an opaque cabin vanishes (give the cabin alpha).
  • Camera grammar: a key on the cut frame freezes motion there; an overhead orbit read as a cut; seats mirrored on a reverse camera; invented reverse shots in dialogue; drift in the last seconds.
  • Ambiguous motion: slow proxy motion reads as either rolling or still; the sheet decides.
  • Copied limbs: on a reference-video model, stepped or looped legs come back stiff, in lockstep or sliding; switch that character to a capsule (cast).
  • Fragile detail: sub-pixel parts change identity between restyles; a style that implies text invents gibberish lettering.
  • Opening-frame fiction: "starts at the door" needs a doorway behind frame 1; high shots over flat ground read flat.
  • State drift: render probes that leave resolution or file path changed; pre-existing objects adopted as your own; Blender 5 slotted actions hiding F-curves (use B.fcurves).

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Handle review comments received on GitHub for the current branch's PR or a given PR number or URL, by triaging each unresolved thread, fixing what is warranted, pushing, and replying in each thread, when asked to address, fix or answer PR comments. Works in any Scenario repository.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Generate one short Conventional Commits squash message describing only the net diff between the PR's base and head, set its header as the PR title, validate it with the repository's commitlint and both copy its description to the clipboard and display it, when asked for a squash message. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Refresh the current pull request description from its net changes, following the repository's PR template, when asked to update or write the PR summary. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario

무료

Use when connecting an AI agent to Scenario (scenario.com) through MCP, or when a task involves generating images, video, 3D, audio, sprites, textures, or game assets. Also when picking a Scenario model, running a LoRA, refining a generation prompt, uploading reference images, waiting on generation jobs, checking credits or quota, hitting Scenario auth, scope, or Forbidden errors, or setting up mcp.scenario.com in Claude Code, Cursor, VSCode, or another agent.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating or handling 3D assets through the Scenario MCP server, including text-to-3D or image-to-3D meshes, GPT-6 Astra 3D or Claude Opus 5.5 3D, GLB, FBX, OBJ, STL, or VOX files, PBR-textured or game-ready models, voxel models, multi-view reconstruction, editing a mesh by prompt, retexture, remesh, UV unwrap, auto-rigging a biped or quadruped, or retargeting an animation, previewing a mesh in the 3D viewer, or downloading a model for import into Unity, Unreal, Godot, or Blender.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating navigable 3D worlds or Gaussian splat scenes on Scenario via MCP: text-to-world, image-to-world, a 360 panorama or skybox turned into a walkable splat, multi-view photos or a video walkthrough reconstructed as a splat, or one object photo to splat. Keywords: World Labs Marble 1.1, 1.1 Plus, 1.0 Draft, Hunyuan World, HY World, image-to-skybox, skybox-to-splat, multiview-to-splat, TripoSplat, gaussian splatting, 3DGS, spz, world generation, explorable scene, VR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario-labs의 스킬 모두 보기

이 스킬의 문제 신고