Communitygithub.com

Daham0/blender-previs-one-take

一镜到底白模预演工作流。用户给一张参考图或一句描述,技能直接产出 3D 白模运镜预演视频;与用户逐版用大白话修改确认后,再按白模实测的相机运动写详细视频提示词;最终交付「白模视频(运动参考)+ 提示词」,一起交给 Seedance 2.5 等视频模型出成片。适用:一镜到底、伪一镜到底、环绕、前推、升空跟随、悬浮失重、FPV 穿梭等长运镜,要求丝滑不折返、不穿模、主体不出画。内置环境探测(有 Blender 走高精度白模,无则引导便携版或降级 Three.js 网页白模)、四项自动校验(单调 / 出画 / 穿模 / 穿顶)、大白话修改指令翻译,用户几乎零门槛。

blender-previs-one-take 是什么?

blender-previs-one-take is a Claude Code agent skill that 一镜到底白模预演工作流。用户给一张参考图或一句描述,技能直接产出 3D 白模运镜预演视频;与用户逐版用大白话修改确认后,再按白模实测的相机运动写详细视频提示词;最终交付「白模视频(运动参考)+ 提示词」,一起交给 Seedance 2.5 等视频模型出成片。适用:一镜到底、伪一镜到底、环绕、前推、升空跟随、悬浮失重、FPV 穿梭等长运镜,要求丝滑不折返、不穿模、主体不出画。内置环境探测(有 Blender 走高精度白模,无则引导便携版或降级 Three.js 网页白模)、四项自动校验(单调 / 出画 / 穿模 / 穿顶)、大白话修改指令翻译,用户几乎零门槛。.

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Daham0/blender-previs-one-take/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

One-Take White-Box Previsualization Skill

One-liner: User provides an image or a description, this skill outputs a white-box video; after the white-box is finalized, it writes prompts, and the white-box video is used as a motion reference alongside the prompts for the final video model. Long takes don't rely on mystical prompts; they rely first on precomputing the camera path and having the user visually confirm it.

0. Execution Method (We Only Talk About These Three Steps Externally)

  1. User provides a reference image, or a description ("10 seconds, orbit from behind me to the front-side, objects on the desk float up first").
  2. The skill generates a 3D white-box camera preview video; both parties iterate together until the user says "This is the feeling."
  3. After finalization, deliver two items: White-box preview video + detailed video prompts, both fed to Seedance 2.5 for final rendering.

What happens internally (scene, coordinates, validation) is the skill's business; don't bother the user with technical details. Full intake rules, required questions, and plain-language translation table are in references/00-flow-intake-iteration.md, which is the master flow document for this skill. Read it first on every trigger.

1. Six-Stage Main Process (Order is Fixed)

StageUser ActionYour DeliveryPass Condition
① IntakeProvide reference image / description3-sentence restatement of "the scene I understand," including subject, camera movement direction, whether floating/weightlessUser says "yes" or changes one sentence; confirm aspect ratio and duration
② Env CheckBinary choice (install / don't install)check_blender.py result + one-line route explanationRoute is clear, proceed to A or B
③ First White-Box VideoWatch the videoPlayable mp4/webm + 3–4 keyframes + "Tell me what's wrong directly"Video is delivered and viewable. Providing only coordinate table = breach of contract
④ Conversational IterationGive feedback in plain languagev2/v3... new versions of the video + 1-line change descriptionEach round changes only one thing; user explicitly approves
⑤ Finalization + Prompt WritingConfirm the feeling is rightFour validations RESULT: PASS + six-section promptsDo not write prompts if validations have not PASSED
⑥ DeliveryUser takes assets for final renderingWhite-box video + prompts + upload description (video1 = motion reference, image1 = visual reference)All prompt coordinates come from measured JSON

Stages ③ and ④ can loop multiple times. This is the core value of the skill: fix camera issues in 3D, not by rolling dice with video model prompts.

2. Six Ironclad Rules

  1. Order rule: Build scene → White-box video → User confirmation → Write prompts. Writing prompts before the user has seen the video is a failed draft.
  2. Prompts use the user's reference image as the sole visual basis. The white-box is not a visual reference; it is only for locking motion, timing, and coordinates; quality, shaping, lighting, and color must all revert to the reference image.
  3. Camera movement must be unidirectional and continuous. Horizontal angle must be monotonically increasing or decreasing; reversing left/right is a failure; readjust the curve.
  4. Subject must never leave the frame. Validate frame-by-frame projection; the subject's NDC must stay within a safe margin; when the subject rises, the camera must tilt up simultaneously.
  5. Zero interpenetration. If the distance between any two moving objects in any frame is below a threshold, it is a failure; solve by prioritizing "clear space before rising" and "light objects fly first, then heavy objects," not by cramming density.
  6. User only speaks plain language. User says "higher" or "the chair hits my leg"; you translate that into parameters and change only that one thing; don't explain polar angles, NDC, or AABB to the user.

3. Environment Detection and Route Selection (Tip 1: Detect and Build)

check_blender.py
  ├─ Installed → Branch A (Blender, highest precision, can export frame-by-frame measured data)
  ├─ Not installed
  │    ├─ User agrees to install → Guide to portable version (05-blender-setup.md) → Branch A
  │    ├─ User has other version/path → Fill in path → Branch A
  │    └─ User refuses installation (or no permissions, time constraints) → Branch B (Three.js web white-box)
  └─ Branch B also goes through the full six stages, just uses "motion reference"; validation and prompt writing standards are identical

Installation guide phrasing — give one decision point at a time, no long paragraphs:

Currently, there's no Blender installed. Two options:

  1. I install the portable version (about 300MB, installs on a non-system drive, no registry edits, doesn't use C drive, can be deleted entirely) — highest precision, can export frame-by-frame measured coordinates;
  2. Don't install, I'll generate a white-box preview video using Three.js in the browser — you'll see the camera path in a few minutes, slightly lower coordinate precision. Which do you choose?

User chooses 1 → follow references/05-blender-setup.md; chooses 2 → follow references/06-threejs-fallback.md.

4. Stage Details

① Intake

Read references/00-flow-intake-iteration.md §§1–3: Determine if input is an image, a description, or both. Only three mandatory questions (duration/aspect ratio, subject orientation, camera intention); infer if possible, otherwise use template values from knowledge/kb-levitation-office.md as fallbacks. If user says "whatever you think," use defaults for the first version and let them watch to point out issues.

③ First White-Box Video (Tip 3: Output White-Box Preview First)

First build a static white-box and calibrate world coordinates (1 unit = 1 meter, origin at ground level) → parameterize camera trajectory → 480P low-sample render → output video + keyframes. Do not write prompts at this stage. Acceptance criteria: playable, no black frames, subject stays in frame, room walls/floor are static.

④ Conversational Iteration

Use the translation table from 00 §4 to translate user's speech into parameters, change one thing at a time, output a new version with a 1-line change description (e.g., v2: radius 3.45→2.95, subject fuller in final frames). Version naming follows 00 §5.

⑤ Finalization, Validation, and Prompt Writing (Tip 2 Auto-Check + Tip 4 Write Prompts Against White-Box)

All four validations (polar angle monotonicity / subject out-of-frame / cross-group penetration / ceiling collision) must be RESULT: PASS, then export the frame-by-frame measured JSON, then write prompts according to the six-section structure. Every coordinate in the prompts must come from this JSON; manual estimation is forbidden. Writing standards are in references/04-prompt-format.md.

⑥ Delivery (Integration with Seedance 2.5)

Follow the delivery format from 00 §6: tag the white-box video as motion/camera/timing reference, tag the reference image as the sole visual reference, start the prompts with an emphasis on "strictly replicate the camera motion and takeoff sequence of the reference video," align duration with the white-box, and break camera movement into 2–3 second segments.

5. Branch A: Blender Execution Manual

  • Scene and coordinate standards: references/01-scene-spec.md
  • Camera motion design standards: references/02-camera-motion.md
  • Layered levitation and anti-penetration timing: references/03-levitation-timing.md
  • Installation and connection: references/05-blender-setup.md
  • Scripts:
    • scripts/build_scene_template.py — Creates empty white-box scene skeleton (room, desk, dual monitors, chair, human block)
    • scripts/render_previs.py — Low-sample 480P preview rendering (EEVEE, no materials)
    • scripts/export_cam_data.py — Exports frame-by-frame cam/lookat/elevation/object z to JSON
    • scripts/validate_trajectory.py — Four validations (monotonicity/out-of-frame/penetration/ceiling collision)

Command-line sequence (tested locally; $BLENDER is absolute path to blender.exe, replace paths per project):

# 1 Probe
python scripts/check_blender.py --json

# 2 Build scene + write orbit trajectory and layered levitation animation (--orbit 1), and export coordinate list
"$BLENDER" -b --python scripts/build_scene_template.py -- \
  --orbit 1 --center 0.0 0.15 --dur 10 --fps 24 \
  --a0 186 --a1 300 --r0 3.45 --r1 2.45 --z0 0.78 --z1 1.20 --l0 1.05 --l1 1.45 \
  --out "Z:/project/scene.blend" --csv "Z:/project/coords.csv"

# 3 Four validations (must run before finalization), must be RESULT: PASS
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/validate_trajectory.py -- \
  --center 0.0 0.15 --ceiling 2.75 \
  --keys Person_Head,Person_Torso,Desk_Top,Monitor_H_Body \
  --moving Minion_,Monitor,PC_Case,Keyboard,Mouse,Person_,Desk_,Chair_

# 4 Export frame-by-frame measured data (only use this data for writing prompts)
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/export_cam_data.py -- \
  --out "Z:/project/cam.json" --center 0.0 0.15 --keys Person_Head,Desk_Top,Chair_Seat

# 5 Preview rendering: first a 16-frame sample to verify pipeline, then full sequence
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
  --out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240

For iterative changes, just re-run step 2 (modify params) → step 5 (render); add steps 3 and 4 after finalization. --keys only includes subject key points (head, torso, desktop, main monitor); adding accessories below 1m from the subject (chair seat, etc.) will inevitably fail out-of-frame validation — this is a physical result of the lens. --moving only includes prefixes of objects that will move; if not set, no penetration detection is performed; objects are grouped by the first part of their name; contact within the same group is not counted.

6. Branch B: Three.js Web White-Box

  • Plan and limitations: references/06-threejs-fallback.md
  • Runnable directly: scripts/threejs_previs.html (single file, CDN-imported three.js, includes trajectory playback, perspective/top view toggle, JSON export, webm recording)
  • Limitations: Human modeled as block approximations, all white materials; can only verify motion direction, composition relationship, and timing; cannot verify lighting or texture.
  • Output: webm + keyframe screenshots; coordinates exported from the same set of parameters in the page.

7. Prompt Delivery Standards (Tip 4)

Fixed six sections, all required: 【Generation Unit】 【Reference】 【Continuity】 【Narration and Audio】 【Timeline with Coordinates】 【Negative Prompts】.

Three hard requirements:

  1. Write against the white-box, don't guess: Every camera movement sentence must refer back to the white-box timecode, e.g., "0–2.5s Starts at the subject's lower left back, camera height 0.78m, radius 3.45m, polar angle 186°, elevation angle 3.7°."
  2. Distinguish reference roles clearly: The white-box video locks only motion, the reference image locks only visuals; both must be written explicitly.
  3. Write anti-penetration logic as causal order sentences, not "be careful not to penetrate."

Writing techniques, phrasing, negative examples, and common failure causes are in references/04-prompt-format.md; project-measured parameters are in knowledge/kb-levitation-office.md (can be directly reused as template values).

8. Common Fault Diagnosis

SymptomRoot CauseResolution
Camera oscillates left-right erraticallyPolar angle curve is non-monotonic / interpolation bouncesMonotonic parameterization + first-order difference sign check + LINEAR interpolation
Subject leaves frame mid-shotSubject rises but camera doesn't followKeyframe camera z and lookat z synchronously with a follow coefficient of 0.8–0.95
Desk/chair penetrates personPerson and chair take off simultaneouslyPerson flies first; chair is delayed by 0.4–0.7s, and clears horizontally before rising
Equipment collides with deskEquipment and desk take off simultaneouslyEquipment rises about 1.3m and hovers; desk is delayed by 2–3s
Room drifts alongLookat point or parent relationship is wrongOnly apply z-displacement to the subject group; walls, floor, windows are static
Final video character turns around, face is brokenOrientation not lockedWrite in 【Reference】 to lock back/side-back orientation; add turning around, looking back, face close-up to negative prompts
Final video looks like 3D gray modelWhite-box was treated as visual referenceSpecify clearly in 【Reference】 that "white-box references motion only"; lock visual style to realistic photography
Model completely ignores the reference videoOpening sentence didn't emphasize replicationWrite the first sentence as "Strictly replicate the camera motion and takeoff sequence of the reference video"; break camera movement into 2–3s segments
Prompt coordinates don't match the visualUsed estimated coordinatesGo back to stage ⑤, get values from the measured JSON; manual estimation is forbidden

9. High-Quality Delivery Checklist

  • User has provided a reference image or description, and confirmed "the scene I understand"
  • First white-box video was actually rendered and delivered (not just coordinates)
  • Iteration versions are numbered with change descriptions; the final version was explicitly approved by the user
  • Four validations RESULT: PASS
  • Reference image is specified as @image1 in prompts; white-box video is specified as motion reference
  • Timeline is broken down by second; each segment has "start camera pose → end camera pose + lookat point + elevation + radius"
  • Layered timing specifies who flies first, who flies later, rise height, and final layer heights
  • Anti-penetration logic is written as causal sentences
  • Negative prompts cover: Character orientation and facial features; equipment changes and orientations; penetration and falling; room drift; camera reversal; style jumps; subtitles and watermarks
  • Delivery includes note: "Preview only validates motion; visuals follow the reference image," along with upload description

10. Script Parameter Quick Reference

ScriptKey ParametersDescription
check_blender.py--jsonRead-only probe; outputs found/path/source/version
build_scene_template.py--orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csvWithout --orbit, only outputs static scene; with it, writes frame-by-frame camera and levitation keyframes (LINEAR)
validate_trajectory.py--center --ceiling --keys --moving --margin --tolExit code 0=PASS 1=FAIL; four checks
export_cam_data.py--out --center --keysOutputs [{f,cam,rad,ang,pitch,对象:[x,y,z]}]
render_previs.py--out --res --samples --fps --start --end --engineFirst a 16-frame sample, then full sequence
install_blender.ps1-TargetDir -Version `-Mirror autoofficial

Parameters are always passed after -- to the Python script.

11. External Talking Points (When Asked "What Can This Skill Do?")

Give it a reference image, or a description. It first builds your camera movement as a 3D white-box and runs it for you to watch. If something's wrong, modify it. Once satisfied, it writes the prompts. The white-box video and prompts are then fed together to Seedance 2.5 for the final rendering. Environment detection and modeling, four automatic validations, white-box preview, and writing prompts against the camera path — all included. Whether it's an orbit, a rise, or weightlessness, the visuals are smooth without sudden penetrations or deformations. With this one-take Skill, long takes are terrifyingly stable — do you still need to spend a huge amount of time learning those mystical prompts for AI video generation?

12. Skill Self-Check Status

StepResult
Detect BlenderPassed (4.5.15 LTS portable, D drive)
Build scene + trajectory + levitation animationPassed (240 frames @24fps, coordinate CSV saved)
Four validationsPASS: Out-of-frame 0 (960 NDC checks), new penetration 0, ceiling collision 0, all three monotonicity checks True
Export frame-by-frame dataPassed (240 frames JSON)
Preview renderingPassed (EEVEE_NEXT, 16-frame sample mp4 normal)
Installation scriptPassed (-DryRun tested: official 403 → Aliyun 4.5.16, ~380MB)

Template default parameters are in knowledge/kb-levitation-office.md and can be used directly as a starting point for new projects.

相关技能