ADR-0003:引擎对照闸门与 .lpr 标准运行时
- 状态:采用
- 日期:2026-07-31
- 取代:ADR-0002 中“Pilot 已选定 Three.js”的部分
决定
- TypeScript + Vite 继续作为 Web 应用、编辑器、compiler 和权限/AI 工作流底座。
- 3D 引擎在 Three.js 与 Babylon.js 完成相同技术切片后选择;Babylon.js 是标准引擎优先候选,Three.js 是控制力和性能基线。
.lpp只作为创作源。新增无任意代码、版本化、renderer-neutral 的.lpr(Lucas Painting Runtime)编译产物。- 先建立
Canvas2DReferenceRenderer,再在获选 3D 引擎同一 GPU context 内建立GpuArtworkRenderer。 - 3D 世界与 2D 作品只能通过版本化、白名单、限频 signal/event 协议交互。
- 第一版之前保留所有 Painterly Chameleon 继承内容;清理是通过产品闸门后的独立阶段。
原因
Three.js 可以实现目标,但需要自行组装较多游戏引擎能力。Babylon.js 提供更标准的 Web 原生相机、碰撞、动画、DynamicTexture 和 RenderTargetTexture。实测可以避免把“更灵活”或“更标准”当作未经验证的信念。
更换 3D 引擎本身不会解决 Live Painting 的主要性能风险。解决路径是把 authoring source 与 runtime 分离,在 compiler 中烘焙静态内容、限制动态数据,再由中央 scheduler 和 GPU renderer 统一执行。
选择规则
- 两者都通过且 Babylon.js p95 frame time 在 Three.js 的 10% 以内:选 Babylon.js。
- Three.js 在 p95 frame time、内存或 texture upload 上好 15% 以上,或 Babylon 阻碍
.lprGPU path:选 Three.js。 - 两者都失败:先隔离 artwork、upload 和 world rendering 成本,不直接跳 Unity/Godot。
完整任务、指标与验收条件以 docs/INCEPTION-SPACE-EXECUTION-PLAN.zh-en.md 为准。