WIP: record native brightness validation and prepare 1.0.3 coordinate correction

这个提交包含在:
dayu 于 2026-10-21 18:20:36 +08:00 提交
1 父节点 d561537eed
当前提交 71a583e306
8 个文件已更改
+76 -22

没有与搜索条件相匹配的文件

+6 -4
查看文件
@@ -2,11 +2,11 @@
基于本仓库的 FxPlug4 初始工程制作的人像美化滤镜,支持 Motion 和 Final Cut Pro。源码使用 Objective-C、Vision、Core Image 与 Metal。
功能包括磨皮、肤色、细节、牙齿美白、眼睛提亮、九类脸型调整、画面选脸、三目标跟踪和蒙版预览。原版 MSE18V2 的静态分析依据、近似实现与尚未对齐的部分见 [分析说明](docs/analysis/REA-分析与复刻说明.md)。本版尚未完成原版逐像素与复杂运动跟踪对照。
功能包括磨皮、肤色、细节、牙齿美白、眼睛提亮、九类脸型调整、画面选脸、三目标分析跟踪扩展和蒙版预览。原版 MSE18V2 的静态分析依据、近似实现与尚未对齐的部分见 [分析说明](docs/analysis/REA-分析与复刻说明.md)。本版尚未完成原版逐像素与复杂运动跟踪对照。
## 使用
正式安装路径为 `/Library/Plug-Ins/FxPlug/beatygril.app`。Motion 滤镜分类为「大鱼」,滤镜名「大鱼人像美化」。Final Cut Pro 使用配套 Motion 效果。先调高中频磨皮,再按需调肤色与脸型;勾选「只处理选中人脸」可在画面点击选脸,随后选择跟踪目标、向前/向后分析,数据随工程保存。
正式安装路径为 `/Library/Plug-Ins/FxPlug/beatygril.app`。Motion 滤镜分类为「大鱼」,滤镜名「大鱼人像美化」。Final Cut Pro 在「效果 → 大鱼 → 大鱼人像美化」中使用配套 Motion 效果,模板目录必须同时保留 `.moef` 与 `Drop Zone.tiff`。先调高中频磨皮,再按需调肤色与脸型;勾选「只处理选中人脸」可在画面点击选脸,随后选择跟踪目标、向前/向后分析,数据随工程保存。
## 开发和恢复
@@ -14,9 +14,11 @@
```sh
./scripts/test.sh
xcodebuild -project beatygril/beatygril.xcodeproj -scheme 'Wrapper Application' -configuration Release -derivedDataPath /tmp/paintfcp-build build
PAINTFCP_HOST_ASAN=1 ./scripts/test-host.sh
PAINTFCP_OSC_ASAN=1 ./scripts/test-osc.sh
xcodebuild -project beatygril/beatygril.xcodeproj -scheme 'Wrapper Application' -configuration Release -derivedDataPath /tmp/paintfcp-build -destination 'generic/platform=macOS' build
```
工程从 `/Library/Developer/SDKs/FxPlug.sdk` 读取头文件与链接信息,从 `/Library/Developer/Frameworks` 嵌入可运行的 Apple 框架。构建默认使用团队 B3W25FX5H5 的 Developer ID Application 身份;正式交付需继续完成公证、粘附和安装。
工程从 `/Library/Developer/SDKs/FxPlug.sdk` 读取头文件与链接信息,从 `/Library/Developer/Frameworks` 嵌入可运行的 Apple 框架。构建默认使用团队 B3W25FX5H5 的 Developer ID Application 身份;正式交付使用 `python3 scripts/deliver.py` 完成公证、粘附和安装;安装前先关闭 Motion 与 FCP,脚本在检测到宿主仍运行时保留原安装版并停止。原生验收完成后继续脚本的清理阶段,清除临时注册与 APP 副本。
私有源码仓库:`https://dayu.media/git/dayu/paintfcp-fxplug.git`。恢复入口见 [RECOVERY.md](RECOVERY.md),当前验证记录见 [验证记录](docs/验证记录.md)。原始模板保存在 `baseline-20261021` 标签。
+13 -1
查看文件
@@ -12,7 +12,7 @@
```sh
git clone https://dayu.media/git/dayu/paintfcp-fxplug.git
cd paintfcp-fxplug
git switch --detach baseline-20261021
git switch --detach v1.0.3
```
需要继续编辑时,基于该提交创建新分支。安装 Xcode 与 Apple FxPlug 4 SDK;盘点版本和构建入口见 README.md。SDK/framework 为 Apple 外部开发依赖,应重新安装匹配版本。证书、私钥和公证凭据需从独立加密备份恢复或重新申请;Git 不包含它们。
@@ -24,3 +24,15 @@ git switch --detach baseline-20261021
已在本任务创建的独立临时目录从远端克隆 `baseline-20261021`,核验 HEAD 为 `1746f38398588e2367abb37a5c2b31cb64042429`,并与本地该提交的 23 个受跟踪文件逐字节比对一致;恢复目录可通过 `xcodebuild -list` 读取两个 target / scheme。远端 `main` 与标签解引用 SHA 均回读一致。临时恢复目录已清理。
初始模板存在行尾空白,修改前基线保留原样。本次核验未执行初始 APP 编译、签名、公证、安装或宿主加载;这些将由最终实现阶段单独验证。
## 1.0.3 恢复入口
最终交付标签为 `v1.0.3`,工作分支为 `main`;本次实际编译和独立恢复测试的代码节点为完整 SHA `d561537eed99cc7c5f2fdbfbe3792fe0b52b3ccf`。最终标签还包含验证文档。需要精确恢复已测试源码时可执行 `git switch --detach d561537eed99cc7c5f2fdbfbe3792fe0b52b3ccf`。两者都保留初始模板及全部中间提交。
依赖:Xcode27.1、FxPlug SDK4.3.4、PluginManager1.7.4,系统最低macOS13;Metal与Vision由系统提供。SDK头文件/链接存根安装到 `/Library/Developer/SDKs/FxPlug.sdk/Library/Frameworks`,可执行运行框架在 `/Library/Developer/Frameworks`;不要把SDK链接存根当运行框架嵌入APP。两者属于需重新安装的Apple外部依赖,仓库不保存证书/私钥或登录凭据。
测试与通用Release构建命令见README。关闭Motion和FCP后,执行 `python3 scripts/deliver.py` 完成正式签名、公证、粘附、唯一目录安装与验收后的副本清理;签名团队为B3W25FX5H5,公证使用登录钥匙串profile `codex-dayu-notary-B3W25FX5H5`。新机器需要自行恢复凭据或重新签发,不要把凭据加入Git。
FCP模板从 `Templates/大鱼人像美化/` 恢复,将 `.moef` 和 `Drop Zone.tiff` 一起放入 `~/Movies/Motion Templates.localized/Effects.localized/大鱼/大鱼人像美化/`;只放 `.moef` 会缺少标准效果源输入资源。正式APP仅安装在 `/Library/Plug-Ins/FxPlug/beatygril.app`,不是从工作树或构建目录运行。没有LFS或子模块,必要工程资源、NASA测试人像及配套模板资源均在Git中。
用户用于宿主验收的外置卷视频及build内的验收工程/截图属于测试素材与可重建产物,不属于产品构建依赖,也没有远程上传。原MSE18V2 APP与原版MS模板仅为只读参考,不作为运行依赖。远端恢复记录及实际宿主测试范围见 `docs/验证记录.md`。
+6 -6
查看文件
@@ -1,6 +1,6 @@
# 大鱼人像美化 FCP 效果模板
版本:1.0.2。滤镜 UUID:`FB14B0E6-59B2-4836-916F-CD0C559E9241`。模板必须与已安装的大鱼人像美化 FxPlug APP 配套使用。
版本:1.0.3。滤镜 UUID:`FB14B0E6-59B2-4836-916F-CD0C559E9241`。模板必须与已安装的大鱼人像美化 FxPlug APP 配套使用。
## 默认数值
@@ -11,10 +11,10 @@
- 保留磨皮、肤色、细节、脸型、人脸选择与跟踪、蒙版与输出六个原生 FxPlug 参数组,发布46项可见功能参数,包括前向/后向分析及清除按钮。
- 目标1–3的隐藏分析数据以参数60/61/62保留在滤镜节点中,不发布成用户控件;分析完成后由插件写入宿主参数并随工程保存。
- 选脸位置发布为原生二维参数,并启用滤镜的“发布 OSC”宿主通道。跟踪按钮、OSC与工程关闭重开后的数据恢复须由实际 FCP 验证。
- 画面只含一个标准 Effect Source(Type=3、Drop Zone=1),其 Source Media 指向 clip `510000006`,clip 位于 footage `510000007`。`pathURL=Drop Zone.tiff` 为模板同目录内的相对引用,标准1200×1200占位图已随模板附带,没有外部安装目录依赖、示例人像、旧滤镜或新动画。FCP时间线片段的实际替换仍须原生验收。
- 画面只含一个标准 Effect Source(Type=3、Drop Zone=1),其 Source Media 指向 clip `510000006`,clip 位于 footage `510000007`。`pathURL=Drop Zone.tiff` 为模板同目录内的相对引用,标准1200×1200占位图已随模板附带,没有外部安装目录依赖、示例人像、旧滤镜或新动画。FCP时间线片段的实际替换已在独立验收项目中确认正常出图。
- 作者与网站为两个原生空绑定展示菜单,不改变渲染。
建议模板安装位置:`~/Movies/Motion Templates.localized/Effects.localized/Dayu/大鱼人像美化/`。APP正式安装与模板安装、Motion/FCP原生验收由主任务处理。
建议模板安装位置:`~/Movies/Motion Templates.localized/Effects.localized/大鱼/大鱼人像美化/`。APP正式安装与模板安装、Motion/FCP原生验收由主任务处理。
## 结构来源与静态验证
@@ -22,12 +22,12 @@ Apple项目、群组、Effect Source和滤镜节点骨架来源于用户自有
`PARAMETERS.json`逐项记录参数ID、组、发布通道及初始值;`VALIDATION.json`记录本次静态核验。48个发布路径(46功能+2信息)均能反查实际对象和通道,实体ID无冲突,三个隐藏数据通道未发布;必要占位媒体以相对路径随包附带,保存选择状态为0个内容对象且焦点为项目。技能`motion_selection.py check`与`audit_motion.py --require-no-selection`通过。
上述结果只证明结构、发布引用和保存状态;Motion实际加载、FCP面板控制、按钮/OSC路由及保存重开由主任务继续验证,不能用XML解析通过代替原生验收。
结构核验之外,已用实际素材在FCP和Motion完成加载、画面及提亮回归测试。详细范围及尚未覆盖的边界见 [验证记录](../../docs/验证记录.md)。
## 前版输入链错误与本次修复
前版生成稿(SHA256 `3b7984e11a92487834ab67121fd3814bf13c22b77a70851298efa84206f91478`)将效果源的 Source Media 设为0,并删除了原生clip/footage。用户在FCP应用后实测整幅黑屏。这是模板装配错误;保留Type=3本身并不能证明FCP输入替换链完整。此前XML解析、发布路径和无缺媒体检查通过,也没有覆盖真实FCP画面输入,不能当作该模板已经可用的证据。
本次仅恢复标准效果源clip/footage和Source Media关联,并随包加入标准`Drop Zone.tiff`;滤镜算法、49个插件参数、48个发布入口、Type=3/Drop Zone=1及版本1.0.2均保留。该占位图从Apple Motion的Ozone.framework标准资源复制,实际运行只引用本模板内的相对副本。图像SHA256为 `a7f8e3a2a431dbb3ce9e777040bb55e701cfe9ab9632e8cbb10359732bc8692e`,420128字节。
黑屏修复恢复标准效果源clip/footage和Source Media关联,并随包加入标准`Drop Zone.tiff`,保留49个插件参数、48个发布入口与Type=3/Drop Zone=1。1.0.3同时包含独立的提亮蒙版与选脸坐标修复。该占位图从Apple Motion的Ozone.framework标准资源复制,实际运行只引用本模板内的相对副本。图像SHA256为 `a7f8e3a2a431dbb3ce9e777040bb55e701cfe9ab9632e8cbb10359732bc8692e`,420128字节。
本次已经静态核验Source Media→clip→相对文件链存在、文件字节一致、48项发布仍解析、隐藏数据未发布和保存选择状态;修复后的FCP新增实例、输入替换、Mix=0直通及实际人像渲染需由主任务重新实测。不得将“恢复链条”描述为已经通过FCP黑屏复测。
本次已经静态核验Source Media→clip→相对文件链存在、文件字节一致、48项发布仍解析、隐藏数据未发布和保存选择状态;修复后已在FCP独立验收项目新增实例,确认输入替换、实际人像和提亮画面正常;Mix=0逐字节直通由宿主适配器IOSurface回归测试覆盖,未将其混称为FCP截图逐像素核验。
+8 -3
查看文件
@@ -1,6 +1,6 @@
{
"version": "1.0.2",
"sha256": "fe637290212481c34cbfd8f4de5bf09101a3fbe88f4db3e55b35d5375f3ac1ba",
"version": "1.0.3",
"sha256": "74b045f0e93baa783f469e776e1a1dddd5f1933d7376afd3cac196c589c944b1",
"filterUUID": "FB14B0E6-59B2-4836-916F-CD0C559E9241",
"publishedFunctionalControls": 46,
"informationalControls": 2,
@@ -23,5 +23,10 @@
"problem": "Previous generated template removed the standard source clip and could not establish the native effect-source input chain. XML/reference checks did not validate FCP timeline replacement.",
"change": "Restored the user-owned reference template clip/footage skeleton with new unique IDs; restored the Source Media link; bundled standard Drop Zone.tiff; filter, publications and Type=3/Drop Zone=1 preserved."
},
"hostValidation": "Pending parent agent Motion/FCP validation after input-chain restoration; earlier XML checks did not prove input replacement."
"hostValidation": {
"date": "2026-10-21",
"FCP": "Restored input-chain template shows supplied real video; effect parameters and forward analysis responded in independent QA project.",
"Motion": "Real-video ordinary project played with midtone=0.5 and brightness=0.75; face boxes followed changing positions.",
"scope": "Native smoke and brightness regression; not exhaustive controls/occlusion or cross-host saved-track validation."
}
}
@@ -46,7 +46,7 @@
<flags>1</flags>
</template>
<build />
<description>大鱼人像美化 1.0.2:人像磨皮、肤色、脸型、五官保护和三目标人脸跟踪。模板中频磨皮默认为50%。</description>
<description>大鱼人像美化 1.0.3:人像磨皮、肤色、脸型、五官保护和三目标人脸跟踪。模板中频磨皮默认为50%。</description>
<scene>
<sceneSettings>
<width>1920</width>
@@ -298,7 +298,7 @@
<parameter name="Width" id="313" flags="8589934610" default="1" value="1920" />
<parameter name="Height" id="314" flags="8589934610" default="1" value="1080" />
</parameter>
<filter name="大鱼人像美化" id="510000005" factoryID="6" pluginUUID="FB14B0E6-59B2-4836-916F-CD0C559E9241" pluginVersion="1.0.2" pluginName="大鱼人像美化" pluginDynamicParams="0">
<filter name="大鱼人像美化" id="510000005" factoryID="6" pluginUUID="FB14B0E6-59B2-4836-916F-CD0C559E9241" pluginVersion="1.0.3" pluginName="大鱼人像美化" pluginDynamicParams="0">
<timing in="0 1 1 0" out="299 30 1 0" offset="0 1 1 0" />
<baseFlags>8589934608</baseFlags>
<parameter name="磨皮" id="100" flags="8589938704">
+4 -4
查看文件
@@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0.2</string>
<string>1.0.3</string>
<key>CFBundleVersion</key>
<string>4</string>
<string>5</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>PlugInKit</key>
@@ -72,7 +72,7 @@
<key>uuid</key>
<string>FB14B0E6-59B2-4836-916F-CD0C559E9241</string>
<key>version</key>
<string>1.0.2</string>
<string>1.0.3</string>
</dict>
<dict>
<key>className</key>
@@ -84,7 +84,7 @@
<key>uuid</key>
<string>E0E432C8-3D71-4ABA-B006-E7F519E06C87</string>
<key>version</key>
<string>1.0.2</string>
<string>1.0.3</string>
<key>protocolNames</key>
<array>
<string>FxOnScreenControl</string>
@@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.2</string>
<string>1.0.3</string>
<key>CFBundleVersion</key>
<string>4</string>
<string>5</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
+35
查看文件
@@ -0,0 +1,35 @@
# 大鱼人像美化 1.0.3 验证记录
日期:2026-10-21。环境:Apple Silicon M1 Max,macOS27.2、Motion6.4、Final Cut Pro12.4、Xcode27.1、FxPlug SDK4.3.4、PluginManager1.7.4。Release包含arm64和x86_64;原生宿主实测为arm64,未在Intel机器实测。
## 用户报告的两个问题
FCP黑屏来自初版效果模板的输入链:Source Media=0且无clip/footage。已恢复标准Effect Source→clip→footage→本地Drop Zone.tiff。新模板在FCP的独立验收项目中成功替换为实际片段,并能调整美化参数;不能把此前XML通过当作原生输入链通过。
肤色提亮出现眼、鼻、唇周围圆洞,原因是调色复用了为磨皮扣除五官的蒙版。现在磨皮保留五官保护,肤色改用连续的人脸覆盖与柔和肤色分类,并羽化过渡、抑制蓝发溢色。提供的实际素材以75%提亮/50%中频在Motion复测,首帧及转头后画面未再见原圆洞;离线同帧旧/新算法对照保存在本机build目录,未将用户素材或截图上传源码仓库。强提亮仍会放大原素材的日光与阴影差异,不等于自动重布光。
## 宿主测试范围
FCP:使用用户给定的3840×2160、25fps蓝发人像视频。新建独立验收事件与10秒项目“ 大鱼人像美化验收-20261021 ”,位于当前已打开的素材库中,未修改原生产时间线;前5秒原片、后5秒同一段原片加效果。实际看到正常输入、非黑画面和提亮变化。勾选选脸并执行向前分析后,使用跟踪数据由0变为1,按钮路由与基本分析完成可用;未将其描述为125帧逐帧核验或复杂遮挡恢复通过。
Motion:独立普通视频项目,源PTS0、1920×1080/25fps/10秒,媒体通过本机链接引用给定视频;开启50%中频、75%提亮与人脸框。切换滤镜启用、从第1帧播放到第179帧均正常出图,人脸框随画面位置更新;选中滤镜可正常建立OSC连接。此QA工程依赖外置卷原视频,不作为可移植产品资源交付。
选脸控件:原生验收额外发现OBJECT坐标被二次归一化,十字落在画面角落;本轮修复和原生回写结果将在最终验收后补齐。
宿主在更新前退出,新正式版安装后重新打开。曾在旧XPC连接未释放、临时构建插件仍被注册的热替换环境出现宿主关闭挂起/OSC连接崩溃;交付流程已增加宿主关闭检查,并在原生验收前注销构建目录的插件。没有把该崩溃直接归因为某条提亮公式。
## 功能边界与原版跟踪选项
用户给出的MS超级美颜V2.moef共发布15个入口,没有跟踪、前向或后向分析控件。二进制内部类/方法名称不能证明FCP模板对用户开放了跟踪。复刻版的三目标分析、选脸与持久化属于独立扩展。
六种肤色风格采用自写调色变换,脸型使用基于Vision关键点的近似局部反向采样;未复制原版私有LUT或算法资源。没有完成原版逐像素对齐、全部脸型强度主观比对、多人交叉遮挡、所有宿主版本及Intel硬件验收。源码层保存/恢复测试不代替两宿主所有工程关闭重开场景。
## 自动化与恢复
渲染/人脸/宿主适配器/OSC测试使用公共NASA人像与合成数据,覆盖默认直通、像素格式与画面原点、极值、连续调色蒙版、蓝发抑制、选脸/分析状态和错误处理。最终计数与源节点将在代码冻结后记录。宿主适配器和OSC测试启用AddressSanitizer。
远端独立克隆核验检查受跟踪文件字节、工程资源、Git对象完整性和可执行脚本模式,无LFS与子模块。scripts/checkpoint.py以100644保存,按文档使用python3调用;它不是可直接执行的入口,恢复测试报告中该权限提示不表示源码丢失。
## 正式交付
最终Release签名、公证Accepted回执、票据验证、安装路径与副本清理结果将在原生验收结束后记录。唯一正式APP路径固定为 /Library/Plug-Ins/FxPlug/beatygril.app;FCP效果模板在用户Movies/Motion Templates.localized/Effects.localized/大鱼/大鱼人像美化内,必须同时有.moef与Drop Zone.tiff。