
本文目錄
綠幕背景從動畫裡消失後,髮絲、披風或運動模糊的輪廓上仍可能留著一圈綠色。此時檔案往往已經有透明度,問題出在半透明像素仍儲存著被綠幕汙染的顏色。
我們用一張專門為 AnimGen 產生、版權歸專案所有的銀髮角色復現了這個問題。來源影片為 640 × 640 H.264,像素格式是帶色度抽樣的 yuv420p。匯出範圍為四秒、24 FPS,共 96 影格;下文選用第一影格做單變數對照。所有圖片都使用同一張來源影格、#00ff00 鍵色、clean plate 和生產摳圖流程,只改變圖中標出的一個參數。
0.00 時,銀髮、披風和鞋底周圍都有明顯綠邊;預設值 1.20 在這張素材上更接近自然邊緣;提高到 2.50 後,輪廓越過中性位置,開始偏品紅。這組三檔圖同時呈現了去色不足和去色過度,比只有“處理前/處理後”的對照更容易判斷參數的有效區間。
透明度與邊緣顏色需要分開檢查
RGBA 像素同時儲存紅、綠、藍和 Alpha。Alpha 決定這個像素在合成畫面裡顯示多少,RGB 決定顯示出來的部分是什麼顏色。
髮絲和抗鋸齒輪廓包含大量半透明像素。綠幕來源影片裡的這些像素,通常混合了角色顏色與綠色背景。Alpha 把背景變透明以後,混在 RGB 裡的綠色不會自動變成中性色。動畫放到深色場景上時,這部分殘色就會顯得格外明顯。
成熟的摳像工具也會把這兩類工作分開。Adobe 的 Ultra Key 參數文件分別設定遮罩產生、遮罩清理和溢色抑制;Blender 的 Keying 節點同樣提供遮罩、邊緣與 despill 參數。
來源影片編碼也會影響邊緣。本次檔案使用 yuv420p,色度資訊的空間解析度低於亮度。高飽和綠色緊貼銀色細發時,壓縮和子像素覆蓋會把顏色帶到相鄰取樣中,即使人物輪廓看起來仍然清晰。
調顏色前先看 Alpha 遮罩
AnimGen 的 Alpha 檢視用白色表示不透明、黑色表示透明、灰色表示部分透明。角色顏色被暫時隱藏後,背景噪點和主體內部的透明洞會更容易發現。
下面這組圖只改變背景清除閾值。主體不透明閾值、收邊、羽化以及三項去色設定全部保持預設值。
背景清除閾值為 0.00 時,來源影格與 clean plate 之間的微小差異遍佈整張畫面,在遮罩中形成斑駁的暗灰背景。預設值 25.92 已能把空白區域壓成黑色,同時保留髮絲輪廓。提高到 55.00 後,更多邊緣像素被清除,細線區域隨之收緊。
合適的數值取決於來源影片。平整穩定的背景可以使用更緊的閾值;壓縮噪點、會變化的產生背景、煙霧、輝光和細發需要更寬鬆的過渡。實際調整時,把閾值增加到空白區域剛好乾淨,再回頭檢查角色的細小輪廓。
主體不透明閾值控制同一過渡的另一端。降低它,會讓更多主體區域變成完全不透明;提高它,會保留更寬的半透明區。調整時要同時看臉、衣服、武器等內部區域,避免外輪廓已經乾淨,角色內部卻出現透明破洞。
收邊和羽化負責輪廓形狀
遮罩已經把角色與空白背景分開後,再用兩項參數修整幾何輪廓:
- 邊緣收縮把輪廓向內移動。少量收邊可以清掉亮邊或殘色邊,數值過大會吞掉髮絲、布料尖端、武器邊緣和細小空隙。
- 邊緣羽化讓透明到不透明的過渡更平滑。它可以緩解生硬的剪紙感,用得太多則會形成模糊光暈。
AnimGen 按 480 像素參考尺寸顯示這兩個數值,再根據實際匯出解析度換算有效像素半徑。這樣,同一段動畫換一個輸出尺寸時,參數不會完全失去尺度意義。
背景與主體閾值進入合理範圍後,再使用收邊。用收邊掩蓋髒遮罩,會直接切掉真實角色像素。羽化則應在最終交付尺寸下判斷:放大 400% 看起來很柔和的邊緣,縮成 96 像素遊戲角色後可能只剩一圈模糊線。
七個控制項分擔兩類工作
透明度面板把遮罩形狀和顏色修復放在同一處,但每個控制項的作用範圍仍然很明確。
| 控制項 | 改變的內容 | 常見調整原因 | 數值過大時的風險 |
|---|---|---|---|
| 背景清除閾值 | 遮罩的透明端點 | 清理背景噪點或背景色波動 | 丟失淺淡邊緣細節 |
| 主體不透明閾值 | 遮罩的不透明端點 | 讓主體內部更實,或保留更多半透明 | 邊緣過硬或內部發虛 |
| 邊緣收縮 | 遮罩輪廓半徑 | 清除貼著輪廓的殘邊 | 侵蝕髮絲和細線結構 |
| 邊緣羽化 | 遮罩過渡的柔和程度 | 緩解鋸齒或生硬剪邊 | 形成模糊光暈 |
| 邊緣去色強度 | 輪廓附近的鍵色修復 | 去掉綠色或品紅色邊緣 | 輪廓轉向互補色 |
| 內部去色強度 | 遠離輪廓區域的鍵色修復 | 清理主體內部反射的鍵色 | 改變角色原有顏色 |
| 去色範圍 | 邊緣強度過渡到內部強度的寬度 | 限制強去色作用的區域 | 把錯誤修正擴散到更大範圍 |
前四項主要處理 Alpha 形狀,後三項主要處理 RGB 顏色。Alpha 檢視仍然斑駁時,應繼續調遮罩參數;輪廓已經乾淨,只是帶著綠色時,再進入去色參數。
邊緣去色存在有效區間
邊緣去色改變輪廓附近的 RGB,不會改變 Alpha 遮罩。下面三張區域性圖使用完全相同的座標裁切,並保持原始寬高比放大。
左圖的輪廓形狀已經成立,但髮絲周圍的 RGB 仍然偏綠。中間圖清掉了大部分殘色,同時保留淺色、接近中性的過渡。右圖去掉了過多綠色,紅色和藍色相對變強,於是出現品紅線。
因此,最大去色強度通常不適合作為預設選擇。觀察淺色輪廓和半透明發絲,緩慢增加數值;鍵色不再搶眼時即可停下。如果邊緣已經轉向互補色,應向回收一點。
另外兩項控制項決定顏色修正如何分佈:
- 內部去色強度在遠離邊緣的位置使用獨立強度。角色本身含有接近鍵色的顏色,或者皮膚、金屬和布料開始偏色時,應降低它。
- 去色範圍決定邊緣強度向內部強度過渡的寬度,不會改變兩端強度本身。
在本次範例中,預設邊緣去色 1.20、內部去色 0.84、去色範圍 26 是三檔邊緣測試中最自然的一組。它們描述的是這張來源圖和目前摳圖流程,可以當作起點,不能替代對自己動畫的檢查。
下面是中間檔範例使用的完整參數。把七項數值放在一起,方便先復現同一基準,再逐項做單變數調整。
背景清除閾值:25.92
主體不透明閾值:70.00
邊緣收縮:0.50
邊緣羽化:0.70
邊緣去色強度:1.20
內部去色強度:0.84
去色範圍:26
這張參數卡適合用來跟隨本文測試。自己的動畫仍要根據 Alpha 檢視、輪廓顏色和運動幅度最大的幾個影格來確定最終數值。
用棋盤格、淺色和深色背景輪流檢查
只看一種預覽背景,很容易漏掉與它顏色接近的缺陷。下面三張圖使用完全相同的 RGBA 像素,只替換了合成背景。
- 棋盤格適合確認 Alpha 覆蓋範圍,也容易發現大塊半透明背景。
- 淺色背景更容易暴露暗色汙染、過度收邊和主體內部透明洞。
- 深色背景更容易暴露淺色亮邊,以及銀髮周圍的綠色、藍色或品紅殘色。
本文使用同一影格製作參數對照,是為了保證變數只有一個。正式匯出還要檢查整段動畫:拖到開頭、運動幅度較大的中段和結尾,尋找髮絲或衣襬與鍵色交界的影格,再分別在三種背景上播放迴圈。壓縮噪點和產生背景的輕微變化會隨時間移動,第一影格乾淨不代表後面 95 影格都乾淨。
一套可以重複執行的調參順序
透明動畫出現髒邊時,可以按下面的順序處理:
- 恢復預設參數,確認鍵色正確,然後開啟 Alpha 檢視。
- 只把背景清除閾值提高到空白區域變黑的位置。
- 調整主體不透明閾值,同時確認角色內部保持完整。
- 輪廓仍有殘邊時,加入儘可能少的邊緣收縮。
- 只有最終交付尺寸下仍顯得生硬時,才增加邊緣羽化。
- 回到正常合成預覽,提高邊緣去色,直到鍵色不再搶眼。
- 用內部去色和去色範圍限制顏色修正區域,再抽查多個影格,並切換棋盤格、淺色和深色背景。
確定最終交付格式前,可以先匯出幾張 PNG。PNG 能直接檢查 Alpha 和邊緣像素,不會把影片解碼器引入排查過程。影格圖確認正常後,剪輯與網頁交付可以參考 WebM Alpha、ProRes 4444 與 PNG 序列實測;2D 遊戲執行時可以繼續比較精靈圖與 PNG 序列。
邊緣清理中常見的幾個問題
為什麼透明 PNG 仍然有綠色輪廓?
透明度和顏色分別儲存。原綠幕中的半透明像素可能繼續攜帶綠色 RGB,放到新背景上合成時,這些顏色仍會參與畫面。
加大邊緣去色能清掉更多背景嗎?
邊緣去色修復的是 RGB,不會清理 Alpha。背景殘留、主體內部透明和輪廓形狀問題,應使用背景閾值、主體閾值、收邊和羽化處理。
為什麼邊緣變成了品紅色?
輪廓像素中的綠色被去除過多,紅色和藍色相對變強。降低邊緣去色,或者縮小使用較強邊緣修正的範圍即可。
其他動畫可以直接照抄本文數值嗎?
不建議。本次參數來自一段 640 × 640 綠幕來源影片。鍵色、壓縮、角色自身顏色、運動模糊、輸出尺寸和產生背景穩定性都會改變有效區間。
已經有一張包含有效透明度的角色 PNG 時,可以從 AnimGen 透明動畫工作流產生動作,並在匯出前使用這些控制項。先用 Alpha 檢視把遮罩調幹淨,再切換幾種背景檢查顏色,最後保留能通過多影格和目標執行環境檢查的設定。




