使用 ManimGX 進行場面調度
僅定位。此技能不撰寫故事、對白或表演,也不與任何攝影機系統、影片生成工具或製作工具綁定。它回答一個問題:所有東西與人物在哪裡、他們如何移動、光線從何而來、每個攝影機站在哪裡看哪裡? 輸出是一個以導演平面圖風格呈現的短影片:完成的地圖顯示一秒鐘,然後地圖逐步建構,接著是移動路徑,然後攝影機一個接一個出現並帶有視野錐,最後是180度軸線與視線方向。
使用者可能是擁有完整鏡頭表的專業人士,或只憑一句話的初學者。兩者都必須獲得相同品質的地圖。差別在於過程:完整的簡報直接進入提議的佈局;簡略的簡報則先經過一輪簡短的引導式基礎資訊收集,讓使用者決定放置位置,而非由你猜測。這些問題也教導初學者一個場面調度簡報需要包含哪些內容。每條路徑最終都會產生一個計劃,由使用者核准或修正後才進行渲染。
場面調度專業知識——鏡頭尺寸、攝影機高度、鏡頭感覺、放置規則、空間連續性以及如何描述每個鏡頭——在 references/staging-craft.md 中。在選擇攝影機、撰寫計劃或執行最終檢查之前,請先閱讀該文件。
只處理你面前的場景。下方的問題模板、尺寸表格和規格範例展示的是形狀與語法,而不是內容:絕不要將它們的地點、道具、名稱、位置或顏色帶入真實場景。
完整簡報 — 七個欄位
當簡報回答了以下七個問題時即為完整。在進行任何其他操作之前,請根據這些問題檢查收到的每一個簡報。
| # | 欄位 | 它確定的內容 | 地圖為何需要它 |
|---|---|---|---|
| 1 | 地點 | 場所的類型、大小和特性(小型或大型、狹窄或開放、風格或年代)及其固定幾何形狀:牆壁、門、窗戶、對場面調度重要的物件 | 設定整個地圖的比例尺以及存在哪些道具 |
| 2 | 位置 | 誰在哪裡、他們的姿勢(站立、坐著、躺著、跪著…)、誰面對誰、距離多遠 | 點、姿勢標籤和面向箭頭;180度軸線從這裡繪製 |
| 3 | 方向 | 關鍵特徵(窗戶、門、牆壁、道路)相對於角色的那一側,以角色為參考陳述:「窗戶在她的右邊」 | 沒有它,地圖可能會左右相反,且每個背景都會錯誤 |
| 4 | 照明 | 每個重要的光源、其實際物理位置、來自哪一側、是硬光還是柔光 | 決定每個臉孔的那一側被照亮,以及哪些鏡頭會逆光 |
| 5 | 周圍環境 | 動作區域的其他側有什麼 | 它成為每個反拍鏡頭的背景 |
| 6 | 鏡頭 | 有多少個鏡頭、順序為何,以及每個鏡頭的尺寸、鏡頭和角度(A的特寫、居中的雙人鏡頭、越過A的肩膀看B…) | 這些就是攝影機 |
| 7 | 節拍 | 誰移動、從哪裡移動到哪裡、何時移動(站起來、穿越、進入、離開、轉身),以及每個鏡頭中發生了什麼 | 移動會改變位置、面向,有時甚至改變場景中的軸線;移動以路徑繪製 |
當簡報陳述了某個欄位或使其不含糊時(「他們隔著卡座對坐」就填滿了位置欄位),該欄位即視為已填滿。欄位7僅在有人移動時才重要:如果每個節拍都是一句對白且沒有人移動,則不需要提問。
基礎資訊收集回合 — 當簡報資訊不足時
- 評估簡報,針對七個欄位進行,在心中進行。絕不要向使用者顯示檢查清單本身。
- 全部填滿 → 跳過基礎資訊收集,直接進入工作流程。當使用者表示不想要任何問題(「sorma」、「direkt yap」、「直接做」)時也跳過:用預設值填補空白;它們會列在計劃中(工作流程步驟4)。
- 有任何遺漏 → 提問,使用使用者的語言:
- 每次訊息最多3個問題,且最多2則訊息。順序:地點 → 位置 → 鏡頭優先,因為它們決定了地圖的結構;然後是方向 → 照明 → 周圍環境;節拍最後。
- 如果地點和位置都遺漏,請在第一則訊息中只問這兩個:其他每個問題的選項都取決於它們的回答。
- 每個問題都是選擇題:為此場景撰寫的2–4個選項,根據簡報已提供的內容建構,加上一個最終的**「你決定」**選項(使用使用者的語言,例如「您建議」)。使用者始終可以輸入自己的答案。
- 將你會選擇的選項標記為**(推薦)**,並附上簡短的幾句理由,讓初學者可以直接選擇。
- 每個問題附帶一行簡短說明,解釋它為何對地圖重要。
- 如果你的環境有結構化的選擇題工具,請使用它;否則以純文字形式撰寫帶有字母選項的編號問題。
- 絕不詢問簡報已回答的內容。絕不詢問故事、對白或表演:這不是此技能的工作。
- 當使用者像專業人士一樣寫作(鏡頭、畫面尺寸、「越過A的肩膀」、軸線)時,完全按照給定的選擇採用。只詢問確實遺漏的欄位,絕不重新開啟他們已做出的決定。
- 在回答之後,任何仍然未填寫或回答「你決定」的欄位,會獲得合理的預設值。然後進入工作流程;步驟4中的計劃是使用者確認或修正這些預設值的地方。
問題模板
這些展示每個問題的形狀。根據你面前的場景改寫措辭和選項;絕不要逐字貼上。
- 地點 —「這個場景發生在哪裡,那個地方是什麼樣的?」→ 根據簡報建構的選項,例如 小型、狹窄的室內 · 大型、開放的室內 · 戶外 · 你決定。原因:它設定比例尺並決定存在哪些道具。
- 位置 —「他們是如何放置的?」→ 適合該地點和簡報中人物的選項,結合位置和姿勢(雙方坐著,面對面 · 並排 · 一人坐著,一人站著 · 你決定)。原因:180度軸線是在兩個主要角色之間繪製的。
- 方向 —「<窗戶/門/牆壁>在的哪一側?」→ 的左邊 · 的右邊 · 的後面 · 的後面。原因:沒有它,地圖可能會左右相反,且每個背景都會改變。
- 照明 —「主光源來自哪裡?」→ 存在於這個地方的來源(來自<窗戶/門>那一側 · 來自頭頂燈具 · 來自場景中的實用光源 · 來自其中一人後方(逆光) · 你決定)。只有在他們指定了來源時才詢問是柔光還是硬光。原因:它決定每個臉孔的那一側被照亮。
- 周圍環境 —「他們另一側有什麼?」→ 適合該地點的選項。原因:它是每個反拍鏡頭的背景。
- 鏡頭 —「你想要如何拍攝它?」→ 我會給你一個清單(數量、順序、尺寸) · 經典覆蓋:一個全景、兩個過肩鏡頭、兩個特寫 · 一個連續鏡頭 · 你決定。原因:這些就是攝影機。
- 節拍(僅當動作合理時)—「場景中有人移動嗎?」→ 不,每個人都待在原地 · <此場景暗示的某個動作,為其撰寫> · 是的(告訴我誰、從哪裡到哪裡、何時) · 你決定。原因:移動以路徑繪製,並可能轉移軸線。
工作流程
-
閱讀場景 — 簡報加上任何基礎資訊收集的回答。提取出:
- 地點、其固定幾何形狀以及對場面調度重要的道具(牆壁、門、窗戶、家具、車輛、路徑);
- 每個角色:他們在哪裡、姿勢、他們面向什麼;
- 每個動作:誰、從哪裡、經過哪裡、到哪裡、結束時的面向和姿勢;
- 每個重要的光源(太陽、窗戶、燈、實用光源):其實際物理位置、來自哪一側、照到誰;
- 主要關係——交談或互相注視最多的那一對。那一對定義了180度軸線。如果動作改變了幾何形狀,則為其後的鏡頭決定軸線;
- 鏡頭。如果使用者把鏡頭交給你或選擇了經典覆蓋,則自行建立它們(參見覆蓋)。
在開始佈局之前,先為自己回答三個問題:場景中實際發生了什麼物理變化(誰移動、什麼被撿起、什麼被打開);觀眾必須同時看到什麼(兩人在一個畫面、一張臉和其後的門);哪些東西必須在鏡頭間保持固定(被照亮的窗戶、桌子、場景所圍繞的物體)。這些答案決定哪些道具需要命名、哪些鏡頭必須是雙人鏡頭、以及軸線必須保持在何處。
-
以公尺為單位進行佈局,使用真實世界的大小(見下方表格)。地圖慣例:+y 是「進入場景」的方向,從主攝影機/開場攝影機看過去,+x 是右邊。將主攝影機放在動作區域的南邊,向北觀看。
-
撰寫場景規格(JSON,結構見下方;完整 JSON Schema 在
references/scene.schema.json)到工作目錄,然後在不渲染的情況下進行驗證:uv run <技能目錄>/scripts/staging_render.py scene.json --check(<技能目錄>是包含此 SKILL.md 的資料夾)。它會印出解析報告(攝影機位置、警告)或一行規格錯誤:…;修正並重新檢查直到通過為止。 -
預覽並取得核准 — 在渲染之前。 執行
uv run <技能目錄>/scripts/staging_render.py scene.json -o <名稱>.mp4 --preview(耗時幾秒鐘)。它會寫出<名稱>.preview.png(完成的地圖)和<名稱>.report.json。先自己檢查預覽圖並修正明顯的問題(如果你無法查看圖片,則檢查報告並告知使用者你無法檢查影像)。然後向使用者展示預覽圖和一份以他們語言撰寫的精簡計劃:- 環境 — 空間大小、關鍵物體及其位置(相對詞加上公尺);
- 角色 — 位置、姿勢、面向;然後每個動作依序說明;
- 照明 — 每個光源、其位置、照亮了誰的哪一側;
- 攝影機 — 一個表格:編號、尺寸、鏡頭、它站在哪裡(例如「A 前方偏右 2.9 公尺,眼睛高度」)、它看到了什麼,以及一行說明為什麼用這個攝影機(它在覆蓋中的工作);
- 鏡頭描述 — 對於每個攝影機,一個簡短的白話框架描述,根據規格和報告中的
frame資料,使用references/staging-craft.md中的模板建構:畫面中有誰和什麼、在哪一側、他們後面是什麼、光線從哪一側來、視線方向和軸線側。中立且事實性:沒有風格或情緒詞彙,不為任何特定影像或影片工具措辭; - 180度軸線 — 哪一對、攝影機保持在那一側、是否有任何鏡頭是鏡像或越軸的;
- 假設 — 你所選擇而非使用者提供的每個數值,並標記為此;
- 替代方案 — 兩個或三個使用者未提及的攝影機選項,每個一行說明其取捨(參見
references/staging-craft.md中的「提供替代方案」)。只有當他們選擇時才應用其中一個。 要求他們核准或修正任何部分(「把門放在另一面牆上」、「把鏡頭3改成特寫」、「她保持坐著」)。將修正應用到規格,再次預覽並顯示更改後的計劃;重複直到他們核准為止。只有在核准後才渲染。僅在使用者明確要求不經審查直接渲染時跳過此步驟;那麼在交付時列出假設。
-
使用內建引擎渲染,
scripts/staging_render.py(路徑相對於此技能資料夾;不要改寫或複製它):uv run <技能目錄>/scripts/staging_render.py scene.json -o <名稱>.mp4 --quality h。 使用--quality l可快速草稿。影片以完成的地圖顯示 1 秒鐘(--poster 1.0,預設值)開始,然後交叉淡入逐步建構過程。該第一幀畫面也是社交平台上的縮圖,因此它必須顯示完整結果;僅在使用者要求純粹的建構過程時使用--poster 0。 它會印出一份 JSON 報告,包含每個角色、燈光和攝影機(位置、距離、水平視野,以及一個frame區塊,列出在畫面中以及畫面哪一側的人和物,以及每個光源來自畫面的哪一側)和warnings(也儲存為<名稱>.report.json),並儲存<名稱>.last.png,即完成的地圖。 -
**在交付前檢查結果。**打開
<名稱>.last.png並查看(如果你無法查看圖片,則依賴報告並說明):每個標籤可讀、沒有攝影機圖示壓在人物上、視野錐指向正確的主體、移動路徑可讀、圖例未被裁切。然後執行references/staging-craft.md中的最終空間檢查:所有鏡頭間左右和視線方向一致、每個進場和出場皆可能、固定物體和關鍵光線在每個鏡頭中都在相同的物理位置、沒有未標記的越軸。閱讀warnings——任何自動鏡像的鏡頭或跨越軸線的攝影機都必須向使用者提及。修正規格並重新渲染(最多兩輪)。 -
交付影片加上規格 JSON(以便佈局可以透過更改數字來編輯)以及核准的鏡頭描述,並更新至最終規格。以使用者的語言,用兩三行說明哪些預設值仍然存在(僅指基礎資訊收集留下的或使用者交回的內容),以及任何軸線警告。地圖標籤使用英文,除非使用者要求使用其他語言。
覆蓋(當鏡頭交由你決定時)
建立能夠覆蓋場景的最小集合,按拍攝腳本順序,最多 8 個:
- 建立全景 — 所有人在畫面中(
target: 所有名稱列表,size: "wide",lens: 35,from: "S")。 - 對於主要角色 A/B: 每個角色一個過肩鏡頭(
over_shoulder: B, target: A及其反向)。選擇肩膀使兩個攝影機都位於軸線的同一側;引擎會鏡像任何不符合的並報告。 - 單人鏡頭 用於關鍵節拍:
size: "cu"或"mcu",lens: 85/50,from: "front-left"/"front-right"(相對於角色的面向),同一側的軸線。 - 插入鏡頭 用於動作依賴的任何道具(
size: "insert",lens: 85,height: "high"用於桌子上的物品)。 - 移動之後: 覆蓋結束位置(
target: "A@1"),並為移動後的鏡頭賦予它們自己的軸線("axis": "A@1-B@1"),註記在報告中。