← 返回作品

空间产品工程商业项目· MindCloudX AI 一代产品系

大规模 Mesh 与点云可视化

面向千万面片级 Mesh 与激光点云的两个 Web 子应用,分别基于 CesiumJS 3D Tiles 与 Potree 八叉树实现流式查看与测量。

  • Vue 3.5
  • TypeScript
  • Vite
  • CesiumJS 1.138
  • Potree
  • Three.js
  • Pinia
  • Arco Design
我的角色
Mesh 编辑器前端架构与 Cesium 集成,点云查看器的宿主联动与构建管线
材料说明
项目资料与交付记录
面片规模(3D Tiles 流式加载)
千万级
Worker 内二进制解码的点云格式
LAS / LAZ
子应用形态(Mesh 编辑器 / 点云查看器)
2
其余 1 项指标与口径
子应用形态(Mesh 编辑器 / 点云查看器)
2
Mesh 编辑器与点云查看器两条子应用流程的结构示意
两个子应用的结构示意(非运行截图)
本页目录

背景问题

摄影测量与 3DGS 导出的 Mesh 动辄百万到千万面片,点云则是亿级点数。浏览器内存只有数 GB,不能整体加载,也不能在前端完成重几何运算。

约束

  • 前端只能持有当前可见的分块瓦片。
  • 切割、简化与格式导出需要后端完成。
  • 宿主平台通过 iframe 嵌入两个子应用,语言需要与宿主同步。

架构

Mesh 编辑器(Vue 3.5 + CesiumJS)
  ├─ 前端:3D Tiles 流式加载、ClippingPlane 实时剖切预览、测量
  └─ 后端(FastAPI + Celery):网格切割、平滑、简化、多格式导出,前端轮询进度

点云查看器(Vue 3.5 + Potree)
  ├─ Potree 八叉树按视锥流式加载,Worker 解码 LAS / LAZ
  └─ 读取宿主约定的 localStorage 语言设置

关键决策与取舍

  • 轻前端、重后端:前端只做可视化与参数收集;Laplacian、Taubin 平滑与 QEM 简化在后端异步完成,避免浏览器卡死。
  • 响应式隔离:Cesium 的 Viewer 与 Tileset 只能存放在非响应式字段或浅引用中。否则 Vue 的深层代理会劫持每帧的渲染矩阵。
  • 统一坐标入口:业务层不直接调用 Cesium 坐标 API,统一经过 WGS84、ECEF、屏幕与局部坐标的转换工具,拾取优先使用表面深度,失败时回退到椭球面。
  • 点云引擎分离构建:Potree 引擎源码先经 Gulp 与 Rollup 生成产物,再供 Vue 壳加载。约定只改源码,不改产物。
  • SPA 切换的资源释放:销毁顺序固定为卸载 tileset、销毁 viewer、清理动画帧与事件,避免切换页面时出现 WebGL 上下文丢失。

结果

  • 千万级面片的 Mesh 可以在浏览器中流式查看与剖切,导出由后端完成。
  • 点云查看器可以与宿主共享语言设置,无需额外的语言切换界面。

我的职责

  • Mesh 编辑器的前端架构、Cesium 集成与坐标工具。
  • 点云查看器的宿主联动与构建管线。

OPEN TO WORK

正在招聘相关方向?

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