
官方定位一句话:“Mask colors that stay visible, automatically.”(让遮罩颜色始终看得见——自动的。)
官方把问题说得非常直白:“Default mask colors love to vanish: green paths on grass, blue on sky, light yellow on a highlight.”(默认遮罩色特别爱消失:草地上的绿路径、天空上的蓝、高光上的淡黄。)“No more squinting at a barely-visible edge or manually cycling through the default color picker.”(不用再眯着眼找那条几乎看不见的边,也不用再手动一个个轮默认颜色。)
核心机制:“The moment you finish drawing a mask, Mask Color Pro samples the color underneath and assigns a high-contrast color.”(你画完一条遮罩的那一刻,它采样底下那块画面的颜色,然后分配一个高对比色。)而且是读每一条遮罩背后那一帧的真实像素来挑色。
作者 pattron,价格 $11.99,官方提供免费试用。
一、官方功能清单(原文逐条)
Everything in one small panel(全都在这一个小面板里):
- Automatically colors every new mask as you draw it——你一边画,它一边给每一条新遮罩上色
- Keeps nearby masks visually distinct from one another——让附近的遮罩彼此在视觉上区分开
- One-click recoloring for existing masks——已有遮罩一键重上色
- Lightness slider to fine-tune a mask’s color toward white or black——亮度滑杆,把遮罩色往白或往黑微调
- Manual color-sampling tools for full-frame or drag-selected regions——手动采样:可以采全画幅,也可以拖框选一块区域采
Built for real work(为真实工作而做):
- Works with the Pen tool and every shape tool (Rectangle, Ellipse, Polygon, Star)——钢笔工具与所有形状工具都支持
- One labeled undo step per action — batch recolors undo as a single step——每个动作只产生一个有名字的撤销步,批量重上色撤销时一步到位
- Handles 8/16/32-bpc and color-managed projects automatically——8/16/32 位每通道与色彩管理工程全部自动适配
- Native After Effects look, light and dark UI themes——原生观感,明暗两套主题
- Resilient by design: other extensions’ conflicts can’t take it down——设计上抗冲突,别的扩展出问题不会把它带崩
二、它的对比色算法(包内 contrastColor.js 未混淆,逐层拆)
包内有个自述为「独立的对比色算法——纯函数,不依赖 AE/CEP,因此可以在扩展之外做单元测试」的文件 contrastColor.js(11659 字节),注释把整套算法写得很清楚:
第 1 层:三档亮度带,不是黑白二值。DARK_SOURCE_THRESHOLD = 0.20(底子比这更暗 → 出亮遮罩)、BRIGHT_SOURCE_THRESHOLD = 0.65(底子达到这亮度 → 出暗遮罩)、NATIVE_LIGHTNESS = 0.50(中等、近峰值彩度的默认档)、BRIGHT_MASK_LIGHTNESS = 0.78、DARK_MASK_LIGHTNESS = 0.28。注释原文的理由:中间档(L=0.5,HSL 彩度 S×(1−|2L−1|) 在这个点取最大)匹配 AE 原生遮罩色轮换那种鲜明多变的样子,只有当底子真的需要时才推向极值——真正暗的底子(阴影/夜景)给亮遮罩,真正亮的底子或绿/蓝色键幕给暗遮罩,而且推得离中间足够远,才能在极端背景上保持清晰可读。
第 2 层:饱和度公式。saturation = 0.75 + (1 − 源饱和度) × 0.25(得到 0.75~1.0),暗遮罩那档再乘 DARK_MASK_SATURATION_BOOST = 1.25(例如 0.75 → 0.94,上限 1.0)。理由:无论底子如何,遮罩都要保持鲜明(低饱和的遮罩线很难看清),同时留一点变化,免得平坦/灰色区域全被映射成同一个颜色。
第 3 层:均值不够用,改用「面积占比」。LIGHT_AREA_FRACTION_THRESHOLD = 0.25、CHROMA_KEY_AREA_FRACTION_THRESHOLD = 0.25。注释原文:「均值对区域内一小块暗斑(或反过来一块亮斑)很脆弱——它会把平均值拖过暗/亮阈值,哪怕遮罩底下大部分像素明明是一边的。lightFraction(单独采样的像素里读作『亮』的比例,独立于平均值)就是来抓这种情况的:如果区域内超过这个比例是亮的,就按亮处理(出暗遮罩),不管均值本来会怎么判。」色键检测同理:把绿幕像素和人物皮肤/头发/衣服颜色一起平均,会把混合后的饱和度与色相稀释到阈值以下,哪怕区域里一大块明明就是绿幕。
三、色键(绿幕/蓝幕)的专门识别与色相分配规则
色键识别:
if (src.s <= 0.35) return false; 然后绿色区间 h ∈ [70, 180]、蓝色区间 h ∈ (180, 250],命中即判为色键。0.35 是饱和度门限。注释原文的解释:色键幕通常是明亮、高饱和的绿或蓝——遮罩如果不在那里压暗,就真的容易丢;而遮罩可能横跨屏幕的阴影区与亮区,采样区域的平均亮度就有可能在亮屏上仍然低于暗阈值。用「色相+饱和度」而不是「亮度」来识别,并强制出暗遮罩,就完全绕开了这个噪声。
文件里还留了一条很有意思的修正记录:绿色与蓝色区间在 180 度(青)处相接、中间没有空隙——「之前那里留了个空隙,结果偏青的绿幕(LED 屏或某些灯光下很常见)就漏检了」。
色相候选与「附近遮罩必须不一样」:HUE_CANDIDATE_STEP = 15(全色轮按 15 度固定步长取候选)、MIN_HUE_SEPARATION_FROM_SOURCE = 45(与源色相至少差 45 度)、REQUIRED_HUE_SEPARATION = 60(与附近历史遮罩至少差 60 度)。注释原文:色相不再需要保持与源接近互补才能看清——第 1 层的明暗分带已经把主要工作做完了——所以候选覆盖全色轮、按固定 15 度网格取(是绝对网格而不是相对源的,这样不同色相遮罩之间的历史比较才有意义)。
历史权重:recentColors 是 {r,g,b,cx,cy} 数组(cx/cy 是遮罩中心在合成像素空间的坐标),currentPos 是当前遮罩位置,proximityRadius(合成像素)是距离——超出这个距离的历史条目完全不产生影响,越近拉扯越强。于是重叠或相邻的遮罩会被推成不同颜色,而画面两端的遮罩则允许重复。若并列最优,平局会倒向经典的约 180 度互补色,这样一条孤立的、没有历史的遮罩也能得到一个合理且可复现的默认色,而不是色轮上随便一点。
四、二进制实证:它真的会渲染帧来采像素
宿主脚本 hostscript.jsx(40204 字节)里的函数名本身就是证据:
renderAndCropRegion()——渲染帧、裁剪区域sampleMaskRegionOnLayer()/sampleMaskRegionCore()/sampleFullFrame()setMaskColorAt()/setMaskColorCore()/setMaskColorRaw()/setMaskColorOnLayer()snapshotColorState()——快照工程的位深/色彩设置undoInAE()/redoInAE()/testConnection()
面板侧的报错串也印证这条路径:"failed: could not load rendered frame PNG."(失败:无法载入渲染出来的帧 PNG。)也就是说:把当前帧渲染成 PNG → 裁出遮罩所在区域 → 逐像素读 HSL → 跑上面那套算法 → 写回遮罩颜色。
snapshotColorState() 涉及的属性是 app.project.bitsPerChannel 与 app.project.linearizeWorkingSpace——操作前快照、操作后还原工程的位深与色彩管理状态,正是 1.7.2 修复的那条 bug 的对应实现。
撤销组名实证:app.beginUndoGroup("Mask Color Pro: Recolor Mask") 与 app.beginUndoGroup(items.length > 1 ? "Mask Color Pro: Recolor Masks" : "Mask Color Pro: Recolor Mask"),与官方说的「带明确标签的撤销步」对得上。另用到 app.findMenuCommandId / app.executeCommand(走 AE 菜单命令)、app.project.toolType(判断当前是不是钢笔/形状工具)。
五、1.7.2 版本历史(官方原文,逐条)
1.7.2 — Aug 13, 2026
- “Cleaner undo: drawing a mask now adds at most two clearly-labeled undo steps (“Recolor Mask” and “Sample Frame”) instead of up to seven unlabeled ones on high-bit-depth projects”——更干净的撤销:画一条遮罩现在最多产生两个带明确标签的撤销步,而在高位深工程里以前最多会产生七个没标签的撤销步。
- “Fixed: undoing mid-operation could leave a project’s bit depth or color settings in the wrong state”——修复:在操作中途撤销,可能把工程的位深或色彩设置留在错误状态。
- “Fixed “no response from After Effects” errors on machines where another installed extension conflicts with AE’s shared scripting engine — Mask Color Pro is now fully self-contained”——修复了在与 AE 共享脚本引擎的其他扩展冲突的机器上出现「After Effects 无响应」的问题,现在完全自包含。
- “Added a one-line engine health check to the panel Log for instant diagnostics”——面板日志里加了一行引擎健康检查,用于即时诊断。
本包版本与官方最新一致,都是 1.7.2。
六、面板与安装(CEP 扩展)
CSXS/manifest.xml 里的关键信息(实证):ExtensionBundleId = com.maskcolorpro.panel、ExtensionBundleVersion = 1.7.2、RequiredRuntime CSXS 11.0(CEP 11)、宿主 AEFT [18.4, 26.9](即 AE 2021 到 2026.x)、面板尺寸 300×420(MinSize 250×250)。
Windows:解压 install-as-admin.zip 以管理员运行,或用 Add Keys.reg 导入注册表后把 com.maskcolorpro.panel 整个文件夹放到 C:Users<用户名>AppDataRoamingAdobeCEPextensions(或 C:Program Files (x86)Common FilesAdobeCEPextensions)。
macOS:把 com.maskcolorpro.panel 放到 ~/Library/Application Support/Adobe/CEP/extensions/;若提示未签名,执行 defaults write com.adobe.CSXS.11 PlayerDebugMode 1 后重启 AE。
装完在 AE 菜单 窗口 > 扩展 > Mask Color Pro 打开面板。
面板里的 CEF 参数实证:--allow-file-access-from-files、--allow-file-access、--enable-nodejs、--mixed-context(启用 Node.js 与混合上下文,才能自己读渲染出来的帧 PNG)。
系统要求:Adobe After Effects 18.4(2021)或更新;Windows 或 macOS;官方提供免费试用。
价格与授权:$11.99,两种授权(Single User License / Floating Server License)。
兼容性:官方 COMPATIBILITY 为 After Effects 2026 / 2025 / 2024 / 2023 / 2022 / 2021。只支持 AE,不含 Premiere Pro / DaVinci Resolve 版本。
关于包内的 mcp-core.js:该文件 2983724 字节,是被 javascript-obfuscator 一类工具混淆过的授权/许可核心(里面大量 license、aescripts.com 字符串)。这部分没有反混淆,也不影响本文其它内容的实证——本文所有阈值、算法规则、撤销组名、套件依赖与 manifest 字段,均来自未混淆的 contrastColor.js、main.js、hostscript.jsx 与 manifest.xml。
本夸克目录内容:Mask Color Pro V1.7.2/(含 com.maskcolorpro.panel/ 扩展本体 13 个文件、install-as-admin.zip 1407 字节、Add Keys.reg 1938 字节)、cover.png(940×530)、README-中文.txt。共 16 个文件,与本地逐字节一致。
文案来源说明:官方定位语与全部功能清单七条、REQUIREMENTS、1.7.2 四条版本历史、COMPATIBILITY、官方标签、$11.99 与两种授权,均来自 aescripts 官方产品页原文;三档亮度带阈值、饱和度公式、面积占比阈值、色键色相区间与饱和度门限、色相候选步长与最小间隔、历史权重与平局规则、渲染采样路径、撤销组名、AEGP/PF 套件依赖、manifest 全部字段与文件字节数,均来自包内源码与二进制的实证。以上均非推测。
原产品页:https://aescripts.com/mask-color-pro/
封面图片来自作者官方产品页。本文为中文整理,功能与兼容性信息以作者官方页面与包内说明为准。资源仅供学习交流,商业使用请购买正版授权。















暂无评论内容