flash555588_ai-model-workbench/docs/workbench-3dgrid-feasibility-note.md
2026-05-29 16:33:42 +08:00

7.4 KiB
Raw Permalink Blame History

Workbench 与 3dgrid 迁移评估

1. 评估范围

本文完成路线图中的两个评估目标:

  1. 阶段 3评估 workbench 是否值得继续迁到 Three.js。
  2. 阶段 4决定 3dgrid 是否需要迁到 Three.js。

本次评估基于当前代码状态,而不是基于“理论上能否实现”。


2. 已验证的 Three.js 覆盖面

当前已经稳定并通过验证的 Three.js 路径:

  • 简单单模型 GLB 预览
  • 单模型 GLB 的 readonly annotations
  • direct file view 的单模型 GLB edit annotations

已执行的验证:

  • npm run verify:preview
  • node scripts/verify-preview.mjs --mode direct-edit

这意味着 Three.js 已经覆盖“高频阅读态”和“轻量单模型编辑态”的核心路径。


3. Workbench 评估结论

3.1 当前 workbench 真实依赖

workbench 不是单纯的“打开一个模型”,它当前还依赖:

  • 编辑态标注
  • 点击 pin 后将相机聚焦到世界坐标
  • explode slider / reset
  • 动画播放控制
  • 更完整的摘要、选中部件、标签、模板插入联动
  • GLB 输入链路(通过 prepareModelInput() 进入转换流程)

这些依赖在代码里的入口很明确:

  • focusPin() 调用 preview.focusWorldPoint(...)
  • 分解面板调用 preview.setExplode(...) / preview.resetExplode()
  • workbench 加载模型时固定传入 requireWorkbenchFeatures=true
  • workbench 模型准备流程仍允许转换后的非 GLB 输入

3.2 Three.js 当前已经具备的部分

Three 预览当前已经具备:

  • annotation provider
  • pick world point
  • readonly / direct-view edit annotation overlay 支持
  • 动画播放开关
  • focusWorldPoint
  • explode / reset
  • render quality / render scale
  • focus selection / wireframe / bounding box / orientation gizmo
  • snapshot / model info / selected part info

这说明 Three.js 作为“单模型主链”已经成立,并且关键交互能力已经开始对齐 workbench 契约;是否切换 workbench 的核心问题已经从“能力完全缺失”转为“路由、格式覆盖、验证面和 3dgrid 统一收益是否足够”。

3.3 阻塞缺口

当前不建议立刻把 workbench 切到 Three.js原因不是“还没试”而是迁移缺口已经转移到工作流级别

  1. workbench 入口仍通过 requireWorkbenchFeatures=true 固定回落到 Babylon尚未开放 Three 路由。
  2. Three 的 workbench 级关键接口已经进入隐藏能力探针,但这个探针仍是验证模式,不等于生产 workbench 路由已经开放。
  3. workbench 仍承接转换链输入;即使 Three 支持直接 GLB / GLTF / STL / PLY / OBJ,也需要确认转换后路径、缓存路径、贴图资源和错误反馈在工作台内一致。
  4. 3dgrid 仍是独立 Babylon 多视口 renderer如果 workbench 单独切到 Three统一栈收益仍然有限。

换句话说direct view 已经能切到 Three是因为它的验证面更窄workbench 下一步不再是补一个单点接口,而是要把完整工作流验证、转换链和回退策略一起纳入。

3.4 决策

结论:workbench 暂不迁移到 Three.js继续保留 Babylon.js 作为专项能力后端。

主要理由:

  • direct view 已经覆盖更高频的单模型编辑场景。
  • workbench 保留下来的价值正集中在转换链、explode / focusWorldPoint 等更重交互组合,以及知识面板联动。
  • 如果只做“GLB-only 的 Three workbench”会把 workbench 自己再切成两种体验,收益不够高。
  • 即使 workbench 迁过去,只要 3dgrid 还在 Babylon统一栈收益也会被明显打折。

3.5 重开条件

只有在以下条件满足后,才建议重新打开 workbench 迁移议题:

  • Three 的 focusWorldPoint、explode / reset、标注和工具栏联动通过真实 workbench UI、转换链和错误反馈验证
  • 团队确认 workbench 可以接受 Three 直接格式覆盖范围,或转换链输出统一进入 Three 可承载的路径
  • 3dgrid 的后端策略也发生变化

4. 3dgrid 评估结论

4.1 当前 3dgrid 的技术形态

3dgrid 不是 workbench 的“简化版”,而是一套独立渲染器契约:

  • PreviewGridRenderer 是独立接口,不是 ModelPreview
  • createGridRenderer() 当前直接返回 Babylon grid renderer
  • Babylon grid 使用一个 Scene + 多个 Camera + 多个 viewport
  • 每个 cell 通过 layerMask 隔离,可支持 preset 布局和单 canvas 多视口渲染
  • compare / gallery / compose / timeline 等 preset 已经围绕这套模型组织

这说明 3dgrid 迁移不是“把路由改成 Three.js”而是要新写一套 Three grid renderer。

4.2 迁移成本与收益判断

如果把 3dgrid 迁到 Three.js至少要重建

  • 多视口 camera 编排
  • placement / cell layout 映射
  • 多模型共享场景与快照导出
  • 现有 preset 结果到 Three renderer 的装配逻辑
  • wireframe / reset / export info 等辅助能力

而当前 3dgrid 已经:

  • 行为稳定
  • 能承载现有 preset
  • 没有因为 Babylon 而阻塞单模型主链迁移

因此它带来的主要收益会是“技术统一”,而不是用户体验跃迁。

4.3 决策

结论:3dgrid 暂不迁移到 Three.js继续保留 Babylon.js 作为 grid 专项后端。

4.4 重开条件

只有在以下条件同时更明确时,才建议重新评估:

  • 团队明确要继续缩小 Babylon 依赖面
  • 已有清晰的 Three 多视口编排方案
  • Babylon grid 的维护成本已经高于重写成本
  • 3dgrid 本身获得新的产品诉求,要求与单模型 Three 路径深度统一

5. 剩余迁移缺口

如果未来要继续推进统一栈,当前剩余缺口已经不再是单个 ModelPreview 接口,而是生产路径与工作流验证:

  • 决定是否开放 workbench 到 Three 的生产路由,以及失败时的回退策略
  • 用真实 workbench UI 覆盖标注、聚焦、explode、工具栏和知识面板联动
  • 验证转换链输出、缓存路径、贴图资源和错误反馈
  • 明确 workbench 是否继续支持非 GLB 输入,或者统一转成 Three 可承载的资源路径
  • 新的 Three grid renderer多视口 / preset / snapshot / export

这份缺口列表说明 workbench 迁移已经进入产品工作流层面,也说明了为什么 3dgrid 现在不该继续迁。


6. 原型验证结果

本次没有把 “Three workbench” 或 “Three 3dgrid” 接入生产主路径。workbench 已经有隐藏 Three 能力探针,用来确认关键契约是否可承载;3dgrid 仍未接入 Three 原型,因为它不是 ModelPreview,而是独立 grid renderer 体系。

  • workbench 生产路径仍要求更完整的转换链、知识面板和错误反馈验证
  • Three 能力探针只证明关键接口可用,不代表要立即改变默认路由
  • 3dgrid 路径仍需要新的 Three grid renderer 才能迁移

因此本次评估采取的验证标准是:

  1. 确认 Three 单模型主链已稳定成立。
  2. 确认 workbench 缺口已经从接口补齐转为工作流验证与生产路由决策。
  3. 在此基础上给出是否继续迁移的决定。

最终结论:

  • Three.js 负责单模型主链
  • Babylon.js 保留 production workbench 和 3dgrid 专项能力
  • Three workbench 保留为受验证的候选路径,等真实工作流验证完成后再决定是否开放

这与路线图中的“终态 A + 终态 B”一致也是当前收益最高、风险最低的落点。