# 参考实现与 PSD2Live 技术方案对比 [English](../en/IMPLEMENTATION_COMPARISON.md) | [日本語](../ja/IMPLEMENTATION_COMPARISON.md) 本文阐述 PSD2Live 在各核心处理阶段的技术选型、算法设计与架构决策。 --- ## 阶段实现对比 | 处理阶段 | 常规/参考实现方案 | PSD2Live 算法与架构实现 | | :--- | :--- | :--- | | **1. PSD 解码** | 依赖轻量解码库,图层记录与混合模式支持不全 | 采用统一的 `PsdReader` 管道,一次性提取裁切 RGBA、层序、透明度、可见性、组路径、裁切标记及混合模式。 | | **2. 语义分类** | 固定英文标签匹配,缺乏多语言别名与容错处理 | 结合 NFKC 归一化、大小写统一、Photoshop 副本清理、最长前缀匹配与 L/R/左/右解析,支持 31 种语义标签并保留未知图层。 | | **3. 双侧拆分** | 简单几何切分或无连通域分析 | 采用 8 邻域 BFS 连通域提取,过滤小于 12 像素噪点,提取分居面部中线两侧的最大连通区域,输出独立光栅与虚拟 ID。 | | **4. 口腔处理** | 多表情逐帧绘制或缺乏内部件剪切联动 | 采用整体口形向心压缩插值:`mouth` 原图作为最大张口姿态,闭合时向中线平滑压缩;内部件(牙齿、舌头)自动以嘴部画元作为剪切蒙版。 | | **5. 锚点分析** | 依赖简单外接矩形估算 | 基于 Alpha 有效边界联合与语义优先级计算面部中心、下巴、肩线与髋部锚点,降级情形记录于诊断报告。 | | **6. 网格生成** | 规则网格或粗糙三角化,边缘易产生锯齿毛刺与扇形退化面 | Alpha 高斯预滤波与自适应百分位二值化;周期三次 Bézier 曲线拟合与物理窗口角点检测;曲率加权加密采样(最高 12 倍);受约束 Delaunay 剖分结合拓扑收敛 Lawson 翻边与超长边二分细分。 | | **7. 贴图打包** | 固定单页或产生大量碎片空隙 | 确定性多页 Shelf Packer,保持 1:1 像素与 2px 安全间距,自适应扩展贴图尺寸以容纳最大画元。 | | **8. 变形器拓扑** | 头发及附件直接挂载于面部,转头时产生拉扯畸变 | 解耦层级架构:`BodyXY` → `BodyZ_Breath` → `HeadRotation` → `HeadContainer`。头壳跟随与面部九轴解耦,前后发独立挂载。 | | **9. 九轴面部** | 单纯三维几何投影,大角度下近侧眼睛被严重拉伸 | 8×8 经纬网拓扑;$C^1$ 连续水平 Roll 曲线(近侧展开、近眼宽平台保持、远侧透视压缩);垂直 $V/\wedge$ 仰俯曲率;四角 $C_{xy} = \text{yaw} \times \text{pitch}$ 交叉修正项。 | | **10. 身体动作** | 线性倾斜或全局缩放失真 | `BodyAngleX` 纵向钟形包络 Roll(行宽恒定);`BodyAngleY` $S$ 形纵向纬线重排(总高恒定);`Breath` 胸腔高斯膨胀;正负姿态严格镜像对称。 | | **11. 五官修形** | 部件位移单一,缺乏空间深度差 | 空间感知深度标尺(鼻 > 嘴 > 眼 > 耳);眼眉共享透视斜率约束面;瞳孔图形保持与反向补偿;睫毛 Alpha 权重中线闭眼 U 形曲线;远侧耳透视淡出。 | | **12. 遮罩系统** | 手动指定遮罩层,闭眼时瞳孔变形穿帮 | 瞳孔自动以同侧眼白为 `maskedBy`;闭眼时眼白网格收缩自然裁切瞳孔;口腔内部件自动以嘴巴画元为遮罩。 | | **13. 物理系统** | 简单单摆或无五官物理联动 | 发根固定与 $v^3$ 立方发梢摆动梯度(阻尼平滑上提);左右眼开闭驱动二阶阻尼振子输出果冻眼挤压回弹(`ParamEyeBallForm`)。 | | **14. 待机动作** | 依赖外部动作文件或无内置动画 | 自动生成 6 秒无缝循环 `idle.motion3.json`,包含胸腔呼吸起伏、轻微头身摆动与自然眨眼。 | | **15. 参数体系** | 非标准命名,缺乏层级分组 | 采用 Cubism 标准参数 ID,建立 6 大标准显示分组与 XY 组合关联(Combined Links),输出标准 `.cdi3.json`。 | | **16. 导出与自检** | 单一格式导出,缺乏生成后几何验证 | 双格式导出(`.cmo3` 编辑器工程 + `.moc3` 运行时文件族);中立姿态保真自检、四角极限姿态完整性自检与方向性变形器镜像对称性审计。 | --- ## 坐标空间与格式约束 1. **图像与贴图空间**:原点位于左上角,Y 轴正方向向下,UV 坐标的 V 分量不翻转。 2. **变形器局部空间**:根 Warp 处于画布绝对空间;子 Warp 及画元基准网格处于父 Warp 的归一化局部空间 $[0, 1] \times [0, 1]$。 3. **CMO3 转换规则**:工程导出前基准网格变换至画布空间,关键帧差值绝对量维持父空间约束。 4. **清单闭包性**:`model3.json` 中声明的所有相对资源路径在导出目录中自包含闭合。 5. **几何审计准则**:中立姿态下世界坐标与 PSD 图层包围盒偏差 $\le 4\%$;极限姿态下画元尺寸维持在原始包围盒的 $8\% \sim 400\%$ 范围内且不透明度大于 0。