文件
paintfcp-fxplug/docs/analysis/V脸下颌区域修复.md
T

3.9 KiB
原始文件 Blame 文件历史

V 脸下颌区域修复

2026-10-22,针对用户报告「V 脸作用到眼睛,应作用于下颌」。目标为本机 MSE18V2 2.4.0(20260724150000),产品修复版本为 1.3.1(16)。

原因与修改

1.3.0 仍使用脸框上的宽范围高斯带及纵向位移近似 V 脸。它不依赖真实下颌轮廓,在真实人像上能测到眼区变化。不是面板标签或参数 ID 接错;本次只替换 V 脸几何场。

新版目标的 AIR 按 69→39、65→35、70→26、64→34 顺序执行四组局部逆向采样。起点都是下颌轮廓,锚点都是外唇。每步使用前一步更新后的 q:

r = length(anchor − origin)
if r > 0.0001:
    weight = clamp(1 − length(q − origin) / r, 0, 1)
    q = clamp(q − (anchor − origin) × ratio × weight, 0, 1)

CPU 函数 0x10002fb74 从参数 +0x90 读取 V 值,乘位于 0x100085ea0 的 double 0.065 和公共强度,再转 float 写入 shape 结构的 +8。新版三个 shader helper 都没有旧版的 280/尺寸 增益;本项目 V 使用 clamp(faceV,0,1)×0.065,整体混合沿用现有产品链。公共强度各调用方的完整来源尚未追踪,不将整体混合宣称为原版该参数的等价重建。

生产实现复用局部 pin 核心,四步严格顺序更新,与图像/四张支持蒙版共享同一坐标场;完整 76 点缺失或不合法时安全直通。Core Image 坐标和关键点一起转换到 Y 向下的全图 UV,结束后一起转回,支持非零图像原点、横竖画幅和歪头。

静态证据与复现

原始 APP、metallib、完整 AIR 与用户帧仅留本机 build,不是构建依赖。源码没有嵌入目标二进制、私有模型或授权逻辑。

  • 原 APP 嵌套 Mach-O(fat)SHA-256:577303e0de72e07feb576c882e82382b3f056b023a7e987d990ffb37f6b16109。
  • arm64 切片 SHA-256:afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df。
  • metallib SHA-256:856849c45cea2c8f083eeba06a9e318c450f4a56694b438d1a5ba8ef752a0ee0。
  • xcrun metal-objdump --metallib --disassemble 输出 SHA-256:1d5bd8d5a3917afbb3b4fe1c40b44480760614102685ac826e84ad2e30a450f9;V 分支 3364–3431 行,四组点索引在 3374、3376、3378、3380 行。
  • 精简 AIR 摘录:vface-air.txt;CPU 字段/系数与分析条件:vface-findings.json;REA CPU 汇编和常量证据:rea-vface-evidence.json。REA 操作为只读,未运行原 APP 或原 shader。

验证

修改前隔离 V 测试复现:NASA 人像瞳孔 6 的位移约 0.031493 像素;宿主物理行序测试四种原点组合的 V 输出与独立 upright 参考均不符。原宿主输出两眼区像素变化量分别为 12824、19304,下颌为 195206。

修改后瞳孔检查通过;宿主四种原点组合的 V 眼区像素变化量均为 0,下颌为 39246,独立 upright 对照最大差 1/255、均差 0.000124/255。数值场覆盖 4 种画幅、正侧脸和歪头、半强度、小脸不带旧增益、顺序组合、缺点/坏点以及四张蒙版同步。独立的真实解剖位置检查要求下颌有位移且两瞳孔位移小于 0.002 像素,避免只用复制实现的数值公式验收。

完整自动回归:1901 项通过(57 Beauty、116 Face、1033 几何、370 Host ASan、98 OSC ASan、227 Inspector ASan)。真实用户帧专项另记交付验证;与基础用例重叠,不相加。正式安装和原生宿主 V 脸视觉验收状态见 验证记录。

范围

V 脸现在加入已恢复的五项局部控制。瘦脸、下巴、短脸、下颌骨沿用此前版本的尺寸增益;未将新版目标的其他差异混入本次修复。大眼、窄脸、颧骨和小头仍为近似,整条混合控制链的数学、顺序和最终像素尚未全部对齐。静态重建、离屏/接口检查不等于原版 shader 的运行时逐像素比较,也不等于 Motion/FCP 原生视觉验收。