
武打動作講不清楚,就給模型一支深度影片
腦子裡那套打法,寫成 Prompt 怎麼寫都不對。我們把自己破關 Sekiro 的錄影抽成深度影片,當動作參考送進 Seedance 2.5,看它照著打得到什麼程度。
腦子裡有一套武打,要寫成 Prompt 給模型,這件事難到不合理。
誰先出手、從哪個角度劈下去、對方往哪邊卸力、鏡頭這時候在哪裡、下一拍又換到誰身上。這些在腦子裡是連續的一段畫面,寫成文字要拆成十幾句,寫完還不確定對方讀到的是不是同一件事。生成出來不對,改一句再送一次,額度就這樣一輪一輪扣掉。
上一篇〈先用 Blender 排好動作,能省下影片生成的 Token 嗎?〉我們是自己在 Blender 裡把動作排出來。這次換一個更懶的做法:手邊已經有的影片,直接抽成深度影片,拿去當動作參考。
素材是我自己破關 Sekiro 的錄影。原本只是留著看的東西。
一句話說完這次的流程
錄影 → 用 Video Depth Anything 抽出深度影片 → 深度影片當動作參考送進 Seedance 2.5。
四個畫面同秒並排,左上是我的錄影,右上是抽出來的深度影片,左下是生成結果。
原片是我打葦名一心那場,畫面上下各一個角色。生成時兩個都換掉了:上面那個換成白髮角色,下面那個換成黑髮貓耳角色,各給一張參考圖。場地從雪原變成暗色的霧氣舞台。
這些外觀是我在 Prompt 裡指定的,不是模型自己長出來的。留給深度影片的只有一件事:兩個人怎麼動。而它確實照著動了——右邊那塊岩石還在原來的位置,角色走的路線也還在,該近身的時候鏡頭就近身。
只有 3 秒多那一小段跑掉了。那一段後面會講,它剛好是這次最有用的一段。
那份 Prompt 裡沒有一句在講怎麼打
下面是實際送出去的 Prompt,素材 UID 換成了看得懂的名字,其餘一字未改。
【生成目標】
生成一段好萊塢電影寫實的動作片視頻,鏡頭焦段為85mm。角色的動態動作參考動作指導視頻。角色表情需要符合角色當下動作的張力。
【動作指導視頻】
【深度影片】為深度視頻,作為角色的動作指導視頻。
【角色參考圖】
【角色1 參考圖】為角色1 ,替代畫面上方的角色。
【角色2 參考圖】為角色2 ,替代畫面下方的角色。
【一致性】
深度視頻為動作參考,連續影格若為畫面全灰,則應理解為是角色的前序動作的招式光影效果。
角色在視頻中的身體外觀需要嚴格按照角色參考圖。
模型可以自由發揮角色表情。
【禁止事項】
嚴禁發生角色錯位、角色手腳變形。嚴禁出現任何電玩遊戲的顯示介面、電玩遊戲介面的人物血條、電玩遊戲介面的蓄力條、電玩遊戲介面的扣血提示、電玩遊戲的角色狀態提示。嚴禁出現任何的所有畫面元素。嚴禁改變角色在參考圖中的身體外觀骨架或肌肉線條。
把它拆開看,講武打的只有一句:「角色的動態動作參考動作指導視頻。」
其他全部在交代別的事。風格一句(好萊塢寫實動作片、85mm),身分兩句(誰換成誰),一致性三句,禁止事項一整段。誰先出手、往哪裡劈、對方怎麼擋、鏡頭什麼時候推近——一個字都沒有,全部交給那支深度影片。
那如果真的要用文字寫,會寫成什麼樣
我試著把這 8.8 秒逐秒寫回去看看。注意這是照著已經生成出來的成片抄的,難度比從零想像低得多:
一開始鏡頭是全景,畫面右側有一塊高聳的岩石,兩個角色一上一下分立畫面兩側,下方那個持長柄兵器。第 1 秒角色向右移動,位置關係不變。第 2 秒走到岩石正前方,一道光從上方罩下來。第 3 秒壓低身體出招,畫面右側開始泛白。第 3.2 秒鏡頭推近到下方角色的臉部特寫,第 3.45 秒她轉向鏡頭,接著鏡頭往後拉,帶到肩線。第 3.8 秒切回全景,一道紫色光帶從左側橫掃過畫面。第 5 秒光帶收尾,角色回到畫面中段偏左。第 6 秒鏡頭拉遠,角色變小,站在光柱底下。第 7 秒角色站定,長柄兵器斜舉。第 8 秒角色朝鏡頭撲近,人物幾乎填滿畫面……
寫到這裡我還沒交代任何一個角色的重心怎麼移、手往哪個方向出、另一個人怎麼卸力、兩人之間距離多遠。而這些才是「武打」真正的內容。
然後是更麻煩的一件事:上面每一句我都是照著畫面抄的。 抄一段已經拍出來的東西都要寫成這樣,腦子裡那段還不存在的畫面,你連抄都沒得抄——你只能一邊想像一邊描述,還要祈禱對方腦補的方向跟你一樣。
實際送出去的 Prompt 裡,這一整段的位置只有一句話:「角色的動態動作參考動作指導視頻。」
原片也能當參考,為什麼要多繞一道深度
原片可以直接當參考嗎?可以,很多工具都收。但原片什麼都告訴模型了:雪的顏色、遊戲的 UI、血條、道具欄、天空的色調。我要的只有「東西在哪、誰離鏡頭多近、怎麼動」,其他都是雜訊,而且會把生成往原本那個畫面拉回去。
深度圖把畫面壓成一件事:近的亮,遠的暗。顏色沒了,材質沒了,剩下的是空間跟動作。
拿掉的東西比留下的多。剩下的那件事情,剛好就是文字最難描述、我又最想控制的那件事。
不過有個東西沒被拿掉,而且變得更麻煩:遊戲的 UI。
血條為什麼會變成離鏡頭最近的東西
我第一次抽卡的時候,生成出來的畫面裡有遊戲介面。
這件事當下滿費解的。深度影片我自己看過,灰灰的一片,血條那裡頂多是一條淡淡的白,你不特別找根本不會注意到。介面明明已經「不見了」,怎麼還會跑出來?
後來去翻深度圖的原理,才知道那條白不是殘留,是被推到最前面的一層。
Video Depth Anything 接在 Depth Anything V2 上做的,兩篇論文都在 arXiv 上(Video Depth Anything、Depth Anything V2,後者是 NeurIPS 2024)。這類模型叫 monocular depth estimation:只有一支鏡頭、沒有雙眼視差、沒有深度感測器,就要判斷畫面裡每個東西離鏡頭多遠。我們這次跑的參數 metric 是 false,出來的是相對深淺,不是公尺。
單靠一張平面圖判斷遠近,能用的只有畫面本身的線索:誰擋住誰、材質往遠處怎麼變密、透視線往哪裡收、熟悉的東西看起來多大。其中最強的是遮擋——A 蓋住 B,而且沒有東西蓋住 A,那 A 就在最前面。
遊戲 UI 剛好把這條規則吃滿。血條蓋住背景、蓋住角色、蓋住所有東西,自己不被任何東西蓋住,邊緣銳利、對比極高、沒有透視。照那條規則判,它就是全畫面離鏡頭最近的物件。
所以深度圖不是把 UI 洗掉,是把它升格。原本疊在畫面上、你看都懶得看的一條字,在深度圖裡成了整幀最亮、最前、訊號最強的東西。
裁一塊左上角並排就很清楚:上面是原片的血條跟「劍聖 葦名一心」,下面是同一幀的深度圖,兩條白帶就浮在最前面。

知道這件事之後,Prompt 裡那一整段禁止事項就不是囉唆了。血條、蓄力條、扣血提示要逐項點名禁掉,是因為它們在參考影片裡不但還在,還是模型最先看到的東西。加了禁令之後這次生成的成片一條都沒有。
要省掉這段麻煩也可以:抽深度之前先把 UI 裁掉或遮掉。我這次沒做,就用禁令補。
深度影片是怎麼抽的
用 Video Depth Anything 的 Large 版本(ViT-L),FP16,input size 518,max_res 1280。整段 90 秒、2160 幀跑完,推論加輸出花了 337.903 秒,不含部署、上傳、下載。顯存峰值 21859.8 MiB。輸出 1280×726、SAR 121:120、顯示比例 16:9、24 fps,沒有音軌。
同一批我切了四段(30–90、90–180、180–240、240–330 秒),耗時分別是 216.957、341.605、214.671、337.903 秒。
另外還有一段 307 秒的長片,失敗了。2026-09-08 晚上,VDA 子程序被 SIGKILL,53 GiB container 的 oom_kill 從 0 變成 1。是主記憶體不足,不是顯存不足——那段 job 已經把 max_res 降到 960 了,還是撐不住。原始剪輯沒受影響,但長片要嘛再降解析度,要嘛改記憶體處理方式,這件事我還沒回頭處理。
每段會輸出五種版本:gray、body-contrast、body-bright、body-visible、color。這次送進生成的是 body-visible。這些增強版是深度的視覺化,不是人物分割,也不是公尺深度或無損的數值深度,別把它當成量測資料在用。
實際送出的是 90 秒段裡的 50–60 秒,10 秒、240 幀。生成回來的原檔是 10.033 秒。下面所有對照都從深度片的第 1.25 秒開始,也就是 90 秒段的 51.25 秒,三軌對齊後各取 8.8 秒。
同一秒,三軌並排
用 FFmpeg 抽幀,同一秒排在同一欄。來源和深度是 24 fps,生成是 60 fps,所以同一秒的幀號不一樣,圖上都標了。

| 秒 | 我的錄影 | 深度影片 | 生成結果 |
|---|---|---|---|
| 0 | 角色在畫面中央偏左,右側一塊高聳岩石 | 岩石是一整塊近景亮區,角色是細瘦亮條 | 岩石在同一位置,角色持長柄兵器站在左側 |
| 1 | 角色向右移動 | 亮條跟著往右 | 角色也往右,位置對得上 |
| 2 | 角色走到岩石前方 | 兩塊亮區靠在一起 | 角色走到岩石前方,被打光從上方罩住 |
| 3 | 開始出招,畫面右側泛白 | 結構開始變糊 | 角色低身出招 |
| 4 | 整個畫面被閃光蓋掉 | 幾乎全平 | 環狀光效,岩石不見了 |
前三秒很穩。位置、走位、景別都對得上,我沒有另外寫任何一句運鏡。

| 秒 | 我的錄影 | 深度影片 | 生成結果 |
|---|---|---|---|
| 5 | 閃光散掉,角色在畫面中段 | 一大塊近景亮區偏左 | 角色在同一側,光效還在收尾 |
| 6 | 雪原,角色偏小 | 亮區縮小 | 角色縮小站在打光下,構圖對得上 |
| 7 | 角色站定 | 一小塊亮區居中 | 角色站定,長柄兵器斜舉 |
| 8 | 角色貼近鏡頭 | 右下一大片近景亮區 | 同樣是近身大特寫,人物幾乎填滿畫面 |
第 8 秒最值得看。原片那一下是角色朝鏡頭撲過來,深度圖右下就是一大塊「非常近」,生成片給的也是近身特寫。景別是從深度讀出來的,我一個字都沒寫。
生成片整支放在這裡,可以自己看一遍再往下。
那 22 幀,參考影片變成一片空白
遊戲裡放大招的時候畫面會被特效打白。這件事我事先知道,Prompt 的一致性段還特地寫了一句去交代:
深度視頻為動作參考,連續影格若為畫面全灰,則應理解為是角色的前序動作的招式光影效果。
道理跟血條那段是同一條。深度模型讀的是畫面裡的線索,而一片均勻的白什麼線索都沒有——沒有遮擋、沒有材質梯度、沒有透視線。沒東西可讀,輸出就是一張平的。
那一段到底多長、多平,我用 FFmpeg 量了。三支片各自解成 320×180 灰階、統一 24 fps,逐幀算兩個數:深度圖的空間梯度(同一幀裡相鄰像素差的絕對值平均,代表這幀還剩多少結構),跟原片的亮度平均。兩個都換算成「佔自己中位數的百分比」,放同一張圖。

原片亮度在 3.333 秒衝到自己中位數的 151%。深度圖的結構跟著垮下去:3.167 到 4.042 秒之間有 22 幀掉到中位數的一半以下,最低點在 3.583 秒,只剩 21.2%。
有意思的是這 22 幀也不是全空。角色和岩石都糊掉之後,畫面上唯一還剩結構的東西,就是那條我明令禁止出現的血條。
我還量了一個數:把每幀的動量(幀間差值)當權重,算出「動作發生在畫面水平方向的哪個位置」,再比原片跟生成片差多少。結構正常的區間,兩邊平均差 6.6% 的畫面寬度;坍塌那 22 幀裡,差到 12.6%。差不多是兩倍。
參考影片在那 22 幀裡沒有話講。那模型做了什麼?
唯一沒人交代的那顆鏡頭
它拍了一段表情運鏡。
大約 3.2 秒推近到角色 2 的臉,3.45 秒她轉向鏡頭,接著鏡頭再拉開,帶到肩線與胸前的吊墜,3.8 秒岩石重新浮出來,它立刻跳回全景,紫色光帶橫掃過畫面。前後不到 0.6 秒。

這顆鏡頭在參考影片裡不存在。深度圖那幾幀也沒有任何東西長得像一張臉。但它不是憑空捏的:那張臉就是角色 2 參考圖的臉,五官、耳朵、頸環上那顆眼睛都對得上。身分它守住了,鏡頭是它自己決定的。
而且它挑的時間點很準——大招爆閃的那一拍,剛好切到臉。
回頭看 Prompt,這件事其實是我准的。開頭那句「角色表情需要符合角色當下動作的張力」,一致性段那句「模型可以自由發揮角色表情」。整支影片裡,這是唯一一段深度影片沒在管構圖的地方,而我給的那點自由,就整包花在這裡。
這才是我覺得這次最有意思的地方。深度參考綁住模型,也劃出了它能動手的地方:參考影片留白的地方,就是你給的自由會被花掉的地方。 想讓它自己來一段,就在那裡留白;不想要它自己來,光寫一句叮嚀不夠,那裡得有結構。
這條路我還沒驗的部分
沒有做對照組。 我沒有把同一段用純文字再生成一次來比。所以「用深度影片比較快、比較省」這句話,我只能說我這次的體感,不能拿數字給你。要真的證明,得同一段、同樣設定、只差有沒有深度參考,各跑幾輪。這件事還沒做。
沒有算錢。 生成次數、token、實際費用都沒量。深度那邊的成本倒是清楚的:一段 90 秒的片要 337.903 秒 GPU 時間,加上一張跑得動 22 GiB 顯存的卡。這不是免費的,只是它跟影片生成的計費是兩回事。
深度輸出沒有逐幀驗收。 我只核了時長、幀數、FPS、尺寸和顯示比例,沒有整支解開來一幀一幀看。
什麼時候值得這樣做
這不是唯一的路,也不會是最好的路——影片生成的做法多得很,這只是其中一種。但有兩個條件同時成立的時候,它特別划算:
你腦子裡已經有一段很具體的動作。 越具體,用文字描述的成本越高,深度參考省下來的就越多。反過來,如果你只是想要「兩個人打一架,帥一點」,那寫句話就好,給參考反而綁手綁腳。
你手上已經有一段動作接近的影片。 自己的遊戲錄影、自己拍的、自己在 Blender 裡排的都算。抽深度圖是機械動作,跑一次就有;從零排一段動作才是真的花時間。
Blender 那條路是自己排,控制得細,但要花時間。深度影片這條路是拿現成的,快,但你拿到的就是素材裡有的那些動作——素材沒講到的地方,模型會自己補,而它補在哪裡,看的是參考影片哪裡留了白。兩條路解的是同一個問題:把「我想要的動作」變成模型看得懂的東西,而不是繼續在 Prompt 裡描述它。
