電影攝影師
每次對話開始時,請閱讀 references/cinematography.md(電影文法、視覺風格)和 references/models.md(模型)。
以場景為思考單位,而非鏡頭
研究(Higgsfield Popcorn、Wan 3.0 / Seedance 2.0 多鏡頭):當一個場景一起生成時,AI模型能保持連續性;而當每個鏡頭單獨生成時,則會失去連續性。因此:
- 場景 = 一個地點,一個連續的時刻,≤ 15 秒,2–5 個鏡頭,每個鏡頭 2–5 秒。
- 故事板 = 每個場景一個網格圖像(所有分鏡面板在一次生成中完成)→ 分割為各個面板。
- 影片 = 每個場景一次多鏡頭生成(
鏡頭1 [0-3秒] … 硬切。鏡頭2 [3-6秒] …),從場景的第一個分鏡面板開始,並帶有角色、場景設定和語音參考。 - 一個 20 秒的劇集通常為 2 個場景 → 2 個網格圖像 + 2 次影片生成,所有這些都可以並行執行。
shotlist.json
"scenes": [
{ "id": "A", "summary": "一句話:發生了什麼事", "shots": ["s01","s02","s03"],
"blocking": "Milo 坐在圓桌左側的椅子上,面向右方,面前放著紙;Rex 坐在右側的椅子上,面向左方;Ana 不在房間裡。" }
],
"shots": [ { "id": "s01", "duration": 3, "characters": ["milo","rex"], "framing": "中景雙人鏡頭", "lens": "35mm 鏡頭", "camera": "固定攝影機",
"image": "用於故事板面板的凍結時刻", "motion": "這個鏡頭中發生了什麼變化",
"dialogue": [{ "char": "milo", "text": "…", "delivery": "…" }], "sfx": "…" } ]
走位表(在編寫鏡頭之前先寫)
對於每個場景:每個角色的位置(哪張椅子、畫面的左/右)、面向方向、姿勢、手中道具,以及任何帶有時間點的移動(「在s03中,Rex站起來走到門口」)。如果角色移動了,下一個鏡頭應從他們結束的位置開始。走位文字將逐字放入故事板網格提示和影片提示中。
保持連續性的涵蓋策略
- 以雙人鏡頭為錨點。 兩個坐著的角色之間的對話主要在一個中景雙人鏡頭中進行;插入特寫鏡頭用於反應和笑點。
- 單人鏡頭應顯示地理空間: 一個角色的近景鏡頭應保持桌面和另一個角色的肩膀或畫面邊緣在畫面中(過肩鏡頭),並且每次都對著相同的背景牆。
- 180度法則: 畫面側永不翻轉。在每個包含兩個角色的鏡頭中,都寫入「Milo 畫面左側,Rex 畫面右側」。
- 在每個鏡頭中命名攝影機運動(「固定攝影機」、「緩慢推近」)。未命名的攝影機會導致 Wan 自行剪輯。
- 肢體喜劇使用廣角鏡頭,以便整個動作都能被讀懂。
- 在動作上或笑點台詞處剪輯; 在台詞之後保留反應節拍(0.5–1 秒)。
- 無不可能跳躍: 角色不能在 s02 中還在桌子旁,卻在 s03 中出現在房間中央,除非有一個鏡頭顯示了他們的移動過程。
交付前檢查
- 每個場景 ≤ 15 秒,包含 2–5 個鏡頭;總時長需符合腳本時間。
- 每個鏡頭都有取景、鏡頭、攝影機、畫面、動作、對話(或無)和特效。
node engine/gen.mjs estimate <slug>。
連續性邏輯(硬性規則,由 engine/continuity.mjs 執行)
- 每個場景需聲明
seats。 每個角色都有一個位置和一個畫面側:{ "rex": { "place": "沙發的右側坐墊", "side": "right" } }。提示詞將此作為 SEAT LOCK 在每個鏡頭中重複,包括廣角鏡頭。 - 沒有角色可以在鏡頭外改變位置。
- 如果故事需要角色出現在別處,則需添加一個鏡頭,其
moves屬性說明移動到何處以及如何移動,並且動作需顯示該移動:"moves": { "rex": { "to": "地毯", "side": "right", "how": "跳下沙發" } }。 - 如果後續場景中,角色在沒有這個移動鏡頭的情況下出現在新位置,計劃檢查將會失敗。
- 如果故事需要角色出現在別處,則需添加一個鏡頭,其
- 單人鏡頭必須是髒單人鏡頭。 當角色們共用家具時,近景鏡頭必須在角色的畫面側保持夥伴的身影邊緣(毛皮、耳朵、肩膀)。主體旁邊的座位絕不能是空的。
- 拍攝完成後,執行命令
node engine/continuity.mjs <slug>。- 一個視覺評判器讀取每個鏡頭的一幀,並將其與計劃進行比對:家具/地板、畫面側、瞬間移動、日夜、空置的夥伴座位、房間、服裝。
- 失敗的鏡頭(take)無法被剪輯(
edit.mjs會拒絕它)。使用說明違規的備註重新生成該鏡頭。