← 返回作品

空间产品工程个人项目演示· Scene 离线三维工具链

Scene 离线三维创作与发布工具链

从本地场景编辑、离线编译到独立查看,三个仓库以精确锁定的引擎基线闭环,产物可直接离线打开。

编辑器演示:预载合成示例场景;编辑器仅支持 PC 端;LOD 可视化实验:查看器同族运行时渲染 Streamed SOG;三引擎对比实验:同一场景 PlayCanvas / three.js+Spark / Babylon.js

我的角色
独立设计与开发(编辑器、编译管线、查看器)
职责边界
编辑器、编译管线、查看器三段工具链的个人实现
仓库闭环(studio / pipeline / viewer)
3
端到端自动断言(scene-pipeline e2e)
16
更多材料与概览示意
  • Vue 3.5
  • Vite 8
  • PlayCanvas 2.23.1
  • @playcanvas/supersplat-viewer 1.37.0
  • splat-transform 3.10.0
  • Node.js 22
  • Dawn WebGPU
材料说明
项目资料与演示

工具链概览示意(非运行截图)

Scene 工具链架构示意:训练到网站承载的五段流程
工具链结构示意(自绘封面,非运行截图)

背景问题

云端编辑器依赖后端与登录态,客户场景数据与发布流程难以完全离线。目标是:创作、编译、查看三个环节都能在本地完成,并且产物格式稳定、可被独立查看器直接消费。

约束

  • 三个仓库的引擎与转换库版本必须一致,否则坐标与数据格式会出现隐性漂移,因此锁定 playcanvas@2.23.1、splat-transform@3.10.0,禁止浮动版本号。
  • 查看器不 Fork 官方 Viewer,升级只能通过公开 API。
  • 浏览器端无服务端,离线目录打开需要解决资源路径问题。

架构

  1. ↑

    数据训练

    gaussian-splatting-pipeline

    采集 → SfM → GPU 训练 → 原始 3DGS 资产(PLY)

    交付物 · 原始 .ply 高斯资产

    输出至 01 场景创作

  2. 01

    场景创作

    scene-studio

    混合编辑 3DGS + GLB + Primitive + 灯光 + 热点 + 运镜轨道

    导出 .sscene 工程包(发布态预合并 + 坐标约定声明)

    交付物 · .sscene 离线工程包

    导出至 02 离线构建

  3. 02

    离线构建

    scene-pipeline

    解包 → filterNaN → TRS 烘焙 → GPU 体素碰撞 → 流式 SOG LOD

    输出标准产物目录(package-manifest / settings.json / lod/ / meshes/)

    交付物 · 标准产物目录(lod/ · meshes/ · settings.json · package-manifest)

    产物交给 03 独立查看

  4. 03

    独立查看

    scene-viewer

    官方 @playcanvas/supersplat-viewer 黑盒 + pkg:// 离线桥

    交付物 · 可离线打开的查看器会话

返回原 .sscene 工程修订后重新编译

上游训练与重建部分见高斯泼溅重建与训练管线,两篇分别覆盖"训练侧"与"创作/发布侧",不重复展开。

关键决策与取舍

  • 编辑器脱离宿主:移除上传、鉴权与任务轮询,改用 File System Access API 与 Zip 流式打包实现本地保存与打开。
  • 发布态预合并:导出时把所有可见高斯合并为单 Splat,并写入 coordinateConvention: file-rotation-included,把文件旋转惯例显式写进数据,下游不再猜测。
  • 管线全程程序化:不 spawn 外部 CLI,直接调用 splat-transform 的 API,统一 IO 抽象,避免多次解码。
  • 端到端断言:管线附带 e2e 脚本,动态合成非对称三维尖塔场景,跑全流程后执行 16 项断言,其中包含坐标朝向回归。

结果

  • 同一份 .sscene 可以在编辑器中编辑、在管线中编译、在查看器中离线打开,三段契约由版本基线与断言共同约束。
  • 查看器保持极薄壳(Vanilla TS),升级官方 Viewer 时通过 API 面审计脚本对照类型声明回归。

局限与后续优化

  • 编辑器本地保存依赖 File System Access API,Safari / Firefox 下只能降级为导出文件流,不能保留工程引用。
  • 发布态为单 Splat 预合并,适合成品展示;多级 LOD 分块流式发布尚未纳入本管线。
  • 碰撞体素化在 GPU 上执行,低端设备按 CPU 回退时耗时明显上升,暂无量化口径。

我的职责

  • 三仓架构设计与数据契约定义(.sscene 工程包、产物目录格式)。
  • scene-studio 的本地文件系统层与发布流程。
  • scene-pipeline 的编排、碰撞与 LOD 阶段,以及 e2e 断言。
  • scene-viewer 的离线 URL 桥与加载体验。

OPEN TO WORK

正在招聘相关方向?

Web 图形、空间数据与 AI 业务集成方向的岗位欢迎联系;也承接 3D 查看器与编辑器定制。