PNGTubeRemix 分层物理兼容记录
文档性质:current implementation record。 旧的“父子物理增强计划”已经落地为可验证的导入和运行时子集。本页不承诺与 PNGTubeRemix 当前外部版本像素级等价。
已实现
main_routers/pngtuber_importers/pngtube_remix.py 解析 .pngRemix 工程并输出 layered_canvas_v1 元数据。当前保留或规范化:
- 状态与任一状态可见的图层;
- 父子层级、局部变换和有效绘制顺序;
- sprite sheet 信息;
- mesh 顶点、UV、三角形与 binding 元数据;
- 可识别的 bounce、stretch、drag 和分层物理字段;
- 来源热键与 action 信息。
static/pngtuber-core.js 消费其中的浏览器运行时子集,包括状态、口型、眨眼、asset action、父子变换、bounce 与已支持的分层物理。某字段出现在导入 metadata 中,不代表浏览器已经完整渲染它。
稳定契约
- 父级隐藏时子级不能继续绘制;
- 物理变换在规范化父子链上组合,不能重复应用世界坐标;
- 非法数值、缺失父级和父子环必须安全降级;
- 老 adapter metadata 没有新字段时仍可按旧图层模式显示;
- 运行时隐藏、模型切换和 dispose 必须清理计时器与 animation frame;
- 第三方工程中的脚本、绝对路径和原始热键不能直接执行或注册。
验证
bash
uv run pytest tests/unit/test_pngtube_remix_importer.py tests/unit/test_pngtuber_static_contracts.py tests/unit/test_pngtuber_router_delete.py -q
node --check static/pngtuber-core.js剩余兼容工作
- 用合法样本继续覆盖嵌套 mesh、异常父子链和不同 physics 参数组合;
- 对“已保存但未消费”的 mesh/binding 字段逐项实现,不做静默伪兼容;
- 外部格式变化后重新验证 Variant 解码和字段含义;
- 若 adapter schema 改变,增加版本迁移和旧模型回归。
