Community程式設計與開發github.com

atakoylan125-sketch/AI-Filmmaking-Skills

以 ManimGX 進行俯瞰式場面調度:規劃場景中所有元素的位置,並將其渲染為動態平面圖。當有人想要設計或編排場面、規劃攝影機位置與鏡頭、放置燈光,或檢查180度軸線與螢幕方向時使用——無論是完整的鏡頭表或一句隨意的提示都能處理。涵蓋環境與關鍵物體、角色位置與動作、物理光源,以及每個帶有視野錐的攝影機。當提示資訊不足時,會先進行一輪簡短的場景專屬選擇題,顯示佈局與白話鏡頭描述供使用者確認,再透過獨立的 Python CLI 渲染出 MP4 影片與可編輯的 JSON 場景規格。

AI-Filmmaking-Skills 是什麼?

此技能專注於場面調度的視覺化,利用 ManimGX 將文字描述或鏡頭表轉換成導演風格的俯瞰平面圖動畫。其核心功能是回答一個問題:「所有東西與人物在哪裡、他們如何移動、光線從何而來、每個攝影機站在哪裡看哪裡?」。輸出是一個短影片,先顯示完成的地圖,然後逐步建構出移動路徑、攝影機視野錐和180度軸線。技能支援完整的專業鏡頭表,也為直覺或簡短的提示提供引導式問答流程,確保無論使用者經驗如何,都能獲得相同品質的地圖。生成的 JSON 場景規格可編輯,允許後續調整,並且渲染過程是透過獨立的命令列工具完成,不與特定攝影機系統或影片生成工具綁定。總結來說,它是一個將模糊的電影概念轉化為精確、可視化且可協作的空間規劃工具,適用於任何需要確認場景中物體與人物相對位置的階段。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atakoylan125-sketch/AI-Filmmaking-Skills/tree/HEAD/skills/staging-with-manimgx

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

使用 ManimGX 進行場面調度

僅定位。此技能不撰寫故事、對白或表演,也不與任何攝影機系統、影片生成工具或製作工具綁定。它回答一個問題:所有東西與人物在哪裡、他們如何移動、光線從何而來、每個攝影機站在哪裡看哪裡? 輸出是一個以導演平面圖風格呈現的短影片:完成的地圖顯示一秒鐘,然後地圖逐步建構,接著是移動路徑,然後攝影機一個接一個出現並帶有視野錐,最後是180度軸線與視線方向。

使用者可能是擁有完整鏡頭表的專業人士,或只憑一句話的初學者。兩者都必須獲得相同品質的地圖。差別在於過程:完整的簡報直接進入提議的佈局;簡略的簡報則先經過一輪簡短的引導式基礎資訊收集,讓使用者決定放置位置,而非由你猜測。這些問題也教導初學者一個場面調度簡報需要包含哪些內容。每條路徑最終都會產生一個計劃,由使用者核准或修正後才進行渲染。

場面調度專業知識——鏡頭尺寸、攝影機高度、鏡頭感覺、放置規則、空間連續性以及如何描述每個鏡頭——在 references/staging-craft.md 中。在選擇攝影機、撰寫計劃或執行最終檢查之前,請先閱讀該文件。

只處理你面前的場景。下方的問題模板、尺寸表格和規格範例展示的是形狀與語法,而不是內容:絕不要將它們的地點、道具、名稱、位置或顏色帶入真實場景。

完整簡報 — 七個欄位

當簡報回答了以下七個問題時即為完整。在進行任何其他操作之前,請根據這些問題檢查收到的每一個簡報。

#欄位它確定的內容地圖為何需要它
1地點場所的類型、大小和特性(小型或大型、狹窄或開放、風格或年代)及其固定幾何形狀:牆壁、門、窗戶、對場面調度重要的物件設定整個地圖的比例尺以及存在哪些道具
2位置誰在哪裡、他們的姿勢(站立、坐著、躺著、跪著…)、誰面對誰、距離多遠點、姿勢標籤和面向箭頭;180度軸線從這裡繪製
3方向關鍵特徵(窗戶、門、牆壁、道路)相對於角色的那一側,以角色為參考陳述:「窗戶在她的右邊」沒有它,地圖可能會左右相反,且每個背景都會錯誤
4照明每個重要的光源、其實際物理位置、來自哪一側、是硬光還是柔光決定每個臉孔的那一側被照亮,以及哪些鏡頭會逆光
5周圍環境動作區域的其他側有什麼它成為每個反拍鏡頭的背景
6鏡頭有多少個鏡頭、順序為何,以及每個鏡頭的尺寸、鏡頭和角度(A的特寫、居中的雙人鏡頭、越過A的肩膀看B…)這些就是攝影機
7節拍誰移動、從哪裡移動到哪裡、何時移動(站起來、穿越、進入、離開、轉身),以及每個鏡頭中發生了什麼移動會改變位置、面向,有時甚至改變場景中的軸線;移動以路徑繪製

當簡報陳述了某個欄位或使其不含糊時(「他們隔著卡座對坐」就填滿了位置欄位),該欄位即視為已填滿。欄位7僅在有人移動時才重要:如果每個節拍都是一句對白且沒有人移動,則不需要提問。

基礎資訊收集回合 — 當簡報資訊不足時

  1. 評估簡報,針對七個欄位進行,在心中進行。絕不要向使用者顯示檢查清單本身。
  2. 全部填滿 → 跳過基礎資訊收集,直接進入工作流程。當使用者表示不想要任何問題(「sorma」、「direkt yap」、「直接做」)時也跳過:用預設值填補空白;它們會列在計劃中(工作流程步驟4)。
  3. 有任何遺漏 → 提問,使用使用者的語言:
    • 每次訊息最多3個問題,且最多2則訊息。順序:地點 → 位置 → 鏡頭優先,因為它們決定了地圖的結構;然後是方向 → 照明 → 周圍環境;節拍最後。
    • 如果地點和位置都遺漏,請在第一則訊息中只問這兩個:其他每個問題的選項都取決於它們的回答。
    • 每個問題都是選擇題:為此場景撰寫的2–4個選項,根據簡報已提供的內容建構,加上一個最終的**「你決定」**選項(使用使用者的語言,例如「您建議」)。使用者始終可以輸入自己的答案。
    • 將你會選擇的選項標記為**(推薦)**,並附上簡短的幾句理由,讓初學者可以直接選擇。
    • 每個問題附帶一行簡短說明,解釋它為何對地圖重要。
    • 如果你的環境有結構化的選擇題工具,請使用它;否則以純文字形式撰寫帶有字母選項的編號問題。
    • 絕不詢問簡報已回答的內容。絕不詢問故事、對白或表演:這不是此技能的工作。
    • 當使用者像專業人士一樣寫作(鏡頭、畫面尺寸、「越過A的肩膀」、軸線)時,完全按照給定的選擇採用。只詢問確實遺漏的欄位,絕不重新開啟他們已做出的決定。
  4. 在回答之後,任何仍然未填寫或回答「你決定」的欄位,會獲得合理的預設值。然後進入工作流程;步驟4中的計劃是使用者確認或修正這些預設值的地方。

問題模板

這些展示每個問題的形狀。根據你面前的場景改寫措辭和選項;絕不要逐字貼上。

  • 地點 —「這個場景發生在哪裡,那個地方是什麼樣的?」→ 根據簡報建構的選項,例如 小型、狹窄的室內 · 大型、開放的室內 · 戶外 · 你決定。原因:它設定比例尺並決定存在哪些道具。
  • 位置 —「他們是如何放置的?」→ 適合該地點和簡報中人物的選項,結合位置和姿勢(雙方坐著,面對面 · 並排 · 一人坐著,一人站著 · 你決定)。原因:180度軸線是在兩個主要角色之間繪製的。
  • 方向 —「<窗戶/門/牆壁>在的哪一側?」→ 的左邊 · 的右邊 · 的後面 · 的後面。原因:沒有它,地圖可能會左右相反,且每個背景都會改變。
  • 照明 —「主光源來自哪裡?」→ 存在於這個地方的來源(來自<窗戶/門>那一側 · 來自頭頂燈具 · 來自場景中的實用光源 · 來自其中一人後方(逆光) · 你決定)。只有在他們指定了來源時才詢問是柔光還是硬光。原因:它決定每個臉孔的那一側被照亮。
  • 周圍環境 —「他們另一側有什麼?」→ 適合該地點的選項。原因:它是每個反拍鏡頭的背景。
  • 鏡頭 —「你想要如何拍攝它?」→ 我會給你一個清單(數量、順序、尺寸) · 經典覆蓋:一個全景、兩個過肩鏡頭、兩個特寫 · 一個連續鏡頭 · 你決定。原因:這些就是攝影機。
  • 節拍(僅當動作合理時)—「場景中有人移動嗎?」→ 不,每個人都待在原地 · <此場景暗示的某個動作,為其撰寫> · 是的(告訴我誰、從哪裡到哪裡、何時) · 你決定。原因:移動以路徑繪製,並可能轉移軸線。

工作流程

  1. 閱讀場景 — 簡報加上任何基礎資訊收集的回答。提取出:

    • 地點、其固定幾何形狀以及對場面調度重要的道具(牆壁、門、窗戶、家具、車輛、路徑);
    • 每個角色:他們在哪裡、姿勢、他們面向什麼;
    • 每個動作:誰、從哪裡、經過哪裡、到哪裡、結束時的面向和姿勢;
    • 每個重要的光源(太陽、窗戶、燈、實用光源):其實際物理位置、來自哪一側、照到誰;
    • 主要關係——交談或互相注視最多的那一對。那一對定義了180度軸線。如果動作改變了幾何形狀,則為其後的鏡頭決定軸線;
    • 鏡頭。如果使用者把鏡頭交給你或選擇了經典覆蓋,則自行建立它們(參見覆蓋)。

    在開始佈局之前,先為自己回答三個問題:場景中實際發生了什麼物理變化(誰移動、什麼被撿起、什麼被打開);觀眾必須同時看到什麼(兩人在一個畫面、一張臉和其後的門);哪些東西必須在鏡頭間保持固定(被照亮的窗戶、桌子、場景所圍繞的物體)。這些答案決定哪些道具需要命名、哪些鏡頭必須是雙人鏡頭、以及軸線必須保持在何處。

  2. 以公尺為單位進行佈局,使用真實世界的大小(見下方表格)。地圖慣例:+y 是「進入場景」的方向,從主攝影機/開場攝影機看過去,+x 是右邊。將主攝影機放在動作區域的南邊,向北觀看。

  3. 撰寫場景規格(JSON,結構見下方;完整 JSON Schema 在 references/scene.schema.json)到工作目錄,然後在不渲染的情況下進行驗證: uv run <技能目錄>/scripts/staging_render.py scene.json --check (<技能目錄> 是包含此 SKILL.md 的資料夾)。它會印出解析報告(攝影機位置、警告)或一行 規格錯誤:…;修正並重新檢查直到通過為止。

  4. 預覽並取得核准 — 在渲染之前。 執行 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改成特寫」、「她保持坐著」)。將修正應用到規格,再次預覽並顯示更改後的計劃;重複直到他們核准為止。只有在核准後才渲染。僅在使用者明確要求不經審查直接渲染時跳過此步驟;那麼在交付時列出假設。
  5. 使用內建引擎渲染,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,即完成的地圖。

  6. **在交付前檢查結果。**打開 <名稱>.last.png 並查看(如果你無法查看圖片,則依賴報告並說明):每個標籤可讀、沒有攝影機圖示壓在人物上、視野錐指向正確的主體、移動路徑可讀、圖例未被裁切。然後執行 references/staging-craft.md 中的最終空間檢查:所有鏡頭間左右和視線方向一致、每個進場和出場皆可能、固定物體和關鍵光線在每個鏡頭中都在相同的物理位置、沒有未標記的越軸。閱讀 warnings——任何自動鏡像的鏡頭或跨越軸線的攝影機都必須向使用者提及。修正規格並重新渲染(最多兩輪)。

  7. 交付影片加上規格 JSON(以便佈局可以透過更改數字來編輯)以及核准的鏡頭描述,並更新至最終規格。以使用者的語言,用兩三行說明哪些預設值仍然存在(僅指基礎資訊收集留下的或使用者交回的內容),以及任何軸線警告。地圖標籤使用英文,除非使用者要求使用其他語言。

覆蓋(當鏡頭交由你決定時)

建立能夠覆蓋場景的最小集合,按拍攝腳本順序,最多 8 個:

  1. 建立全景 — 所有人在畫面中(target: 所有名稱列表,size: "wide",lens: 35,from: "S")。
  2. 對於主要角色 A/B: 每個角色一個過肩鏡頭(over_shoulder: B, target: A 及其反向)。選擇肩膀使兩個攝影機都位於軸線的同一側;引擎會鏡像任何不符合的並報告。
  3. 單人鏡頭 用於關鍵節拍:size: "cu" 或 "mcu",lens: 85/50,from: "front-left"/"front-right"(相對於角色的面向),同一側的軸線。
  4. 插入鏡頭 用於動作依賴的任何道具(size: "insert",lens: 85,height: "high" 用於桌子上的物品)。
  5. 移動之後: 覆蓋結束位置(target: "A@1"),並為移動後的鏡頭賦予它們自己的軸線("axis": "A@1-B@1"),註記在報告中。

相關技能