
本文目录
绿幕背景从动画里消失后,发丝、披风或运动模糊的轮廓上仍可能留着一圈绿色。此时文件往往已经有透明度,问题出在半透明像素仍保存着被绿幕污染的颜色。
我们用一张专门为 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 视图把遮罩调干净,再切换几种背景检查颜色,最后保留能通过多帧和目标运行环境检查的设置。




