Communitygithub.com

Daham0/blender-previs-one-take

一鏡到底白模預演工作流程。用戶提供參考圖或一句描述,技能直接產出 3D 白模運鏡預演影片;與用戶逐版用大白話修改確認後,再按白模實測的相機運動寫詳細影片提示詞;最終交付「白模影片(運動參考)+ 提示詞」,一起交給 Seedance 2.5 等影片模型出成片。

blender-previs-one-take 是什麼?

這個技能專為 AI 影片生成設計,特別是長鏡頭(一鏡到底)場景,例如環繞、前推、升空跟隨、懸浮失重或 FPV 穿梭。核心價值在於:**先透過 3D 白模預演確認運鏡無誤,再撰寫提示詞**,避免浪費時間在 AI 模型上反覆抽卡。它支援兩種模式:若偵測到 Blender 環境,則進行高精度白模建模與運算;若無,則降級使用 Three.js 在瀏覽器中生成白模影片。技能內建四項自動校驗(單調性、主體出畫、穿模、穿頂),確保運鏡絲滑且不穿模。使用者完全不懂技術細節也沒關係,因為所有修改指令都會被翻譯成大白話,例如「椅子撞腿了」直接轉成參數調整。最後交付時,白模影片作為運動參考,提示詞則從實測 JSON 資料中提取,而非人工估算,確保提示詞與運鏡精準對齊。總之,這個技能讓長運鏡的 AI 影片製作變得穩定、高效,幾乎零門檻。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

一鏡到底白模預演 Skill

一句話定位:使用者給圖或給話,本技能出白模影片;白模定稿之後再寫提示詞,白模影片當運動參考一起丟進影片模型。 長運鏡不靠玄學提示詞,靠先把相機怎麼走算清楚、讓使用者親眼看過確認。

0. 運行方式(對外永遠只講這三步)

  1. 使用者給一張參考圖,或者給一句描述(「10 秒,從我背後繞到側前方,桌上東西先飄起來」)。
  2. 技能出 3D 白模運鏡預演影片,雙方一起改,直到使用者說「就是這感覺」。
  3. 定稿後交兩樣東西:白模預演影片 + 詳細影片提示詞,一起丟給 Seedance 2.5 出成片。

內部怎麼算(場景、座標、校驗)是技能的事,不要拿技術細節去要求使用者。完整入口規則、必問項、大白話翻譯表見 references/00-flow-intake-iteration.md,那是本技能的流程總綱,每次觸發先讀它。

1. 六階段主流程(順序不可顛倒)

階段使用者做什麼你必須交付什麼過關條件
① 接需求給參考圖 / 一句話描述3 句話複述「我理解的一幕」,含主體、運鏡方向、是否漂浮失重使用者說「對」或改一句;畫幅時長確認
② 探環境二選一(裝 / 不裝)check_blender.py 探測結果 + 一句話路線說明路線明確,進入 A 或 B
③ 首版白模影片看片能播放的 mp4/webm + 3–4 張關鍵幀 + 「哪裡不對直接說」影片真實出片並交付。只給座標表 = 違約
④ 對話式迭代用大白話提意見v2/v3… 新版本影片 + 1 行變更說明每輪只改一處;使用者明確認可
⑤ 定稿 + 寫詞確認感覺對了四項校驗 RESULT: PASS + 六欄目提示詞校驗未 PASS 不允許寫詞
⑥ 出片交付拿走素材去出片白模影片 + 提示詞 + 上傳口徑(影片1=運動參考、圖片1=畫面參考)提示詞座標全部來自實測 JSON

階段 ③④ 允許來回多輪,這是本技能的主體價值:把運鏡問題在 3D 裡改掉,而不是在影片模型裡抽卡。

2. 六條鐵律

  1. 順序鐵律:建場景 → 白模影片 → 使用者確認 → 再寫提示詞。 片子沒被使用者看過就寫詞,等於廢稿。
  2. 提示詞只以使用者參考圖為畫面依據。 白模不是畫面參考,只用於鎖定運動、時序、座標;畫質、造型、光影、配色一律回到參考圖。
  3. 運鏡單向連續。 旋轉角必須單調遞增或遞減,禁止左右折返;折返即失敗,重調曲線。
  4. 主體永不出畫。 逐幀投影校驗,主體 NDC 必須留在安全框內;主體升空時鏡頭同步上搖。
  5. 零穿模。 任意兩組運動物體在任意幀的間距小於閾值即失敗;靠「先讓位再升空」「先飛輕物後飛重物」的順序解決,不靠堆密度硬湊。
  6. 使用者只講人話。 使用者說「再高點」「椅子撞腿了」,你翻譯成參數並只改這一項;不向使用者解釋極角、NDC、AABB。

3. 環境探測與路線選擇(Tip 1:探測建模)

check_blender.py
  ├─ 已安裝 → 分支 A(Blender,精度最高,可導出逐幀實測資料)
  ├─ 未安裝
  │    ├─ 使用者同意安裝 → 引導可攜版(05-blender-setup.md)→ 分支 A
  │    ├─ 使用者已有其他版本/路徑 → 填路徑 → 分支 A
  │    └─ 使用者拒絕安裝(或環境無權限、時間緊)→ 分支 B(Three.js 網頁白模)
  └─ 分支 B 同樣走完整六階段,只拿「運動參考」,校驗與寫詞口徑完全一致

安裝引導的說話方式——一次只給一個決策點,不寫長文:

當前沒有 Blender,兩條路: 1)我裝可攜版(約 300MB,裝非系統碟,不寫註冊表、不佔 C 碟,可整體刪除)——精度最高,能導出逐幀實測座標; 2)不裝,我用 Three.js 在瀏覽器裡生成白模運鏡影片——幾分鐘能看到鏡頭,座標精度略低。 選哪個?

使用者選 1 → 按 references/05-blender-setup.md;選 2 → 按 references/06-threejs-fallback.md。

4. 階段細則

① 接需求

讀 references/00-flow-intake-iteration.md §1–§3:判斷輸入是圖、是描述、還是兩者都有。必問項只三個(時長畫幅、主體朝向、運鏡意圖),能推斷就推斷,其餘用 knowledge/kb-levitation-office.md 的模板數值兜底。使用者說「隨便你」時直接用預設值出第一版,讓他看片挑毛病。

③ 首版白模影片(Tip 3:先出白模預演)

先建靜態白模並標定世界座標(1 單位 = 1 米,原點在地面)→ 參數化相機軌跡 → 480P 低取樣渲染 → 出片 + 關鍵幀。此階段不寫提示詞。驗收:能播放、無黑幀、主體在框內、房間牆體地板靜止。

④ 對話式迭代

按 00 §4 的翻譯表把使用者的話翻成參數,一次只改一項,出新版本並寫 1 行變更說明(v2:半徑 3.45→2.95,主體在收尾幀更滿)。版本命名規範見 00 §5。

⑤ 定稿校驗與寫詞(Tip 2 自動檢查 + Tip 4 對著白模寫詞)

四項校驗(極角單調 / 主體出畫 / 跨組穿模 / 穿頂)必須 RESULT: PASS,再導出逐幀實測 JSON,然後按六欄目寫詞。提示詞裡的每個座標只能來自這份 JSON,禁止手填估算。 寫作規範見 references/04-prompt-format.md。

⑥ 出片交付(對接 Seedance 2.5)

按 00 §6 的口徑交付:白模影片標註為運動/機位/時序參考,參考圖標註為畫面唯一參考,提示詞首句強調「嚴格復刻參考影片的相機運動與起飛順序」,時長與白模對齊,運鏡按 2~3 秒拆段。

5. 分支 A:Blender 執行手冊

  • 場景與座標規範:references/01-scene-spec.md
  • 運鏡設計規範:references/02-camera-motion.md
  • 分層失重與防穿模時序:references/03-levitation-timing.md
  • 安裝與連接:references/05-blender-setup.md
  • 腳本:
    • scripts/build_scene_template.py — 空白模場景骨架(房間、桌、雙螢幕、椅、人物塊面)
    • scripts/render_previs.py — 低取樣 480P 預演渲染(EEVEE、無材質)
    • scripts/export_cam_data.py — 導出逐幀 cam / 注視 / 仰角 / 物體 z 到 JSON
    • scripts/validate_trajectory.py — 四項校驗(單調 / 出畫 / 穿模 / 穿頂)

命令列序列(本機已跑通,$BLENDER 為 blender.exe 絕對路徑,路徑按專案替換):

# 1 探測
python scripts/check_blender.py --json

# 2 建場景 + 寫入環繞軌跡與分層失重動畫(--orbit 1),並導出座標清單
"$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 四項校驗(定稿前必跑),必須 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 導出逐幀實測資料(寫詞只准用這裡的資料)
"$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 預演渲染:先 16 幀小樣驗管線,再跑全片
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
  --out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240

迭代修改只需重跑第 2 步(改參數)→ 第 5 步(出片),定稿後再補第 3、4 步。 --keys 只填主體關鍵點(頭、軀幹、桌面、主螢幕);低於主體 1m 的附屬物(椅座等)納入會必然出畫,屬鏡頭物理結果。 --moving 只填會位移的物件前綴,不填則不做穿模檢測;物件按名字首段分組,同組內接觸不計。

6. 分支 B:Three.js 網頁白模

  • 方案與限制:references/06-threejs-fallback.md
  • 可直接運行:scripts/threejs_previs.html(單檔案,CDN 引入 three,含軌跡播放、透視/頂視切換、導出 JSON、錄 webm)
  • 限制:人物用塊面近似、材質全白,只能驗證運動方向、構圖關係、時序,不能驗證光照與質感。
  • 輸出:webm + 關鍵幀截圖,座標由頁面同一套參數導出。

7. 提示詞交付規範(Tip 4)

固定六欄目,缺一不可:【Generation Unit】 【參考】 【連續性】 【旁白和聲音】 【時間軸·帶座標】 【反向提示詞】。

三條硬要求:

  1. 對著白模寫,不瞎猜:每條運鏡句都能回指白模時間碼,形如「0–2.5s 起於主體背部左後方,機位高 0.78m,半徑 3.45m,極角 186°,仰角 3.7°」。
  2. 參考角色分清:白模影片只鎖運動,參考圖鎖畫面,兩句都要寫實。
  3. 防穿模寫成因果順序句,而不是「注意不要穿模」。

寫作技巧、句式、反面寫法、常見失效原因見 references/04-prompt-format.md;專案實測參數見 knowledge/kb-levitation-office.md(可直接複用為模板數值)。

8. 常見故障速查

現象根因處理
鏡頭左右鬼畜、來回擺極角曲線非單調 / 插值回彈單調參數化 + 一階差分符號檢查 + LINEAR 插值
主體中途出畫主體升空而鏡頭未跟隨相機 z 與注視點 z 按跟隨係數 0.8–0.95 同步 K 幀
桌椅與人穿模人與座椅同時起飛人先飛,座椅延後 0.4–0.7s,且先水平讓位再升空
設備與桌面相撞設備與桌體同時起飛設備先升約 1.3m 懸停,桌體延後 2–3s
房間跟著飄注視點或父級關係寫錯只對主體組做 z 位移,牆地窗靜止
成片人物轉身、正臉崩壞未鎖朝向【參考】寫死背向/側背向;反向詞補轉身、回頭、人臉特寫
成片像 3D 灰模白模被當成畫面參考【參考】明確「白模僅參考運動」;畫風鎖定寫實攝影
模型完全無視參考影片首句沒強調復刻首句寫「嚴格復刻參考影片的相機運動與起飛順序」,運鏡按 2–3s 拆段
提示詞座標對不上畫面用了估算座標回第 ⑤ 階段從實測 JSON 取值,禁止手填

9. 高品質交付清單

  • 使用者給過參考圖或描述,且已確認「我理解的一幕」
  • 首版白模影片真實出片並交付過(不是只給座標)
  • 迭代版本有編號與變更說明,最終版經使用者明確認可
  • 四項校驗 RESULT: PASS
  • 參考圖在提示詞裡指定為 @圖片1,白模影片指定為運動參考
  • 時間軸按秒分段,每段有「起手機位 → 結束機位 + 注視點 + 仰角 + 半徑」
  • 分層時序寫明誰先飛、誰後飛、升起高度、最終分層高度
  • 防穿模邏輯寫成因果句
  • 反向提示詞涵蓋:人物朝向與五官、設備增減與朝向、穿模與掉落、房間飄移、鏡頭折返、風格跳變、字幕浮水印
  • 交付時說明「預演只校驗運動,畫面以參考圖為準」,並給出上傳口徑

10. 腳本參數速查

腳本關鍵參數說明
check_blender.py--json唯讀探測;輸出 found/path/source/version
build_scene_template.py--orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csv無 --orbit 只出靜態場景;有則逐幀寫入相機與失重關鍵幀(LINEAR)
validate_trajectory.py--center --ceiling --keys --moving --margin --tol退出碼 0=PASS 1=FAIL;四項檢查
export_cam_data.py--out --center --keys輸出 [{f,cam,rad,ang,pitch,對象:[x,y,z]}]
render_previs.py--out --res --samples --fps --start --end --engine先 16 幀小樣,再全片
install_blender.ps1-TargetDir -Version -Mirror auto|official|aliyun|tuna -DryRun鏡像自動回退;建 portable 目錄;寫 BLENDER_PATH

參數一律放在 -- 之後傳給 Python 腳本。

11. 對外介紹口徑(回答「這技能能幹嘛」時用)

給它一張參考圖,或者一句描述,它先把你的運鏡搭成 3D 白模跑一遍給你看,不對就改,改到滿意再寫提示詞,白模影片和提示詞一起丟給 Seedance 2.5 出片。探測建模、四項自動校驗、白模預演、對著運鏡寫詞,全在裡面。不管是環繞、升空還是失重,畫面絲滑且不會突然穿模變形。有了這個一鏡到底的 Skill,長運鏡穩得可怕——做 AI 影片,還需要花大把時間學那些玄學提示詞嗎?

12. 本技能自檢狀態

環節結果
探測 Blender通過(4.5.15 LTS 可攜版,D 碟)
建場景 + 軌跡 + 失重動畫通過(240 幀 @24fps,座標 CSV 落盤)
四項校驗PASS:出畫 0(960 次 NDC 檢測)、新增穿模 0、穿頂 0、三項單調全 True
導出逐幀資料通過(240 幀 JSON)
預演渲染通過(EEVEE_NEXT,16 幀小樣 mp4 正常)
安裝腳本通過(-DryRun 實測:官方 403 → 阿里雲 4.5.16,約 380MB)

模板預設參數見 knowledge/kb-levitation-office.md,可直接作為新專案起點。

相關技能