3D Tiles 切片服务 · 3D Tiles Tiling Server for CesiumJS
把 BIM 模型(FBX / OBJ / glTF)、OSGB 倾斜摄影、GeoTIFF DEM / 正射影像一键切片为 CesiumJS 原生流式数据 —— 浏览器上传、在线三维预览,REST API 供第三方前端集成。
3D Tiles · CesiumJS · quantized-mesh · OSGB · BIM · GIS · Digital Twin
MGOServer 是 MGO(C++17 三维切片引擎)的 Node.js HTTP 服务封装;引擎二进制由公开门面仓 MGO-CLI 发布:
| 输入 | 输出 |
|---|---|
| FBX / OBJ / glTF 模型、OSGB 倾斜摄影 | 3D Tiles(b3dm + tileset.json) |
| GeoTIFF DEM | 地形瓦片(quantized-mesh-1.0:{z}/{x}/{y}.terrain + 自动生成 layer.json) |
| GeoTIFF 正射影像 | 影像瓦片(Web Mercator TMS + tilemapresource.xml) |
| 投影坐标 GeoJSON | 坐标转换后的 GeoJSON |
支持六类任务:模型转 3D Tiles、地形切片、影像切片、GeoJSON 坐标转换、模型简化转格式、OSGB 倾斜摄影(需 MGO_WITH_OSG 编译的引擎)。
- 🔗 BIM 属性绑定 — IFC GUID / FBX·glTF 元数据 / 外部属性表 CSV 写入每个 b3dm 的 Batch Table;查看器点击构件即高亮并查看属性(可复制 JSON),可选输出绑定报告
bim_report.json。 - 🗺️ 完整坐标投影 — EPSG / WKT / +proj / .prj / 七参数 Helmert / 单锚点 / 多控制点配准。
- 🖥️ 双平台易部署 — Windows / Linux;自带 systemd unit,第三方前端经 REST API 即可接入。
依赖:Node.js ≥ 20。
git clone https://github.com/Johnly1986/MGOServer.git && cd MGOServer
npm ci # postinstall 自动下载引擎包(Linux ~98MB / Windows ~27MB),幂等可重复
npm run doctor # 可选:一键体检引擎 / 动态库闭包 / proj.db / glibc 基线 / 上游是否有新引擎
npm start # 监听 0.0.0.0:8080
npm ci装的是package.json里固定版本 + sha256 的引擎(可复现、可离线、装机结果可预期)。 想直接拿 MGO-CLI 最新 Release:npm run engine:update -- --latest——它会查一次 GitHub API, 取对应平台资产并用该资产自带的 sha256 digest 校验;查询失败(离线 / API 限流 / 该平台无资产) 会告警并自动回退到固定版本,不会让安装失败。
打开 http://127.0.0.1:8080/console.html 即可上传切片、三维预览。
REST API 提交:
# 地形切片:上传 DEM
curl -F 'options={"type":"terrain"}' -F file=@dem.tif http://127.0.0.1:8080/api/v1/jobs
# 模型转 3D Tiles:多文件上传,options 参数对所有文件统一生效;带外部贴图时打包 ZIP 上传
curl -F 'options={"type":"tiles","proj":{"crs":"EPSG:4526"}}' -F file=@tower.fbx -F file=@podium.obj http://127.0.0.1:8080/api/v1/jobs| 端点 | 说明 |
|---|---|
GET /api/v1/health |
健康检查 |
GET /api/v1/jobs/{id} |
查询任务状态 |
GET /api/v1/jobs/{id}/events |
SSE 实时进度 |
离线内网 / 镜像加速 / 自管引擎
| 场景 | 做法 |
|---|---|
| 离线内网 | MGO_ENGINE_BUNDLE=/path/to/mgo-engine-<plat>.tgz npm ci(包由构建机 npm run engine:pack 产出,自包含 proj.db) |
| 升级到最新 | npm run engine:update -- --latest:取 MGO-CLI 最新 Release 的对应平台资产,用 release asset 自带 digest 校验;查询失败自动回退到固定版本。GitHub API 未认证限额 60 次/小时/IP,提额用 GITHUB_TOKEN=xxx npm run engine:update -- --latest |
| 镜像加速 | MGO_ENGINE_MIRROR=https://your-proxy/{url},或直接改 package.json 的 mgoEngine.downloads |
| 自管引擎 | 设 MGO_BINARY 指向已有可执行文件,安装器不干预 |
| 传统路线 | 将 MGO-CLI Releases 产物放入 build/bin/{linux,windows}/;Ubuntu 24.04 需 sudo apt install libgdal34t64 libproj25 libtiff6 libopenscenegraph161 proj-data gdal-data |
全部环境变量见 .env.example(安装器读的是进程环境变量,.env 只影响服务进程);升级引擎用 npm run engine:update,或加 -- --latest 追新。
npm run dev # 热重载开发
npm test # 单元测试(无需构建 C++ 引擎)
npm run test:ui # Chromium 页面级回归
npm run test:bim # BIM 属性绑定交叉验证(服务端 → MGOConsole → 真 Cesium parseBatchTable 逐瓦片验证)
npm run test:b3dm -- <文件或目录> # 体检任意 b3dm 的 Batch Table,自带静态服务,无需启动主服务离线 Cesium 自托管
npm i cesium@1.111 --no-save && npm run sync:cesium同步后查看器自动使用本地自托管 Cesium(未同步时回退官方 CDN),全程零外网。支持 Cesium 1.111+。
Apache-2.0(商业与非商业用途均免费),第三方依赖声明见 THIRD_PARTY_NOTICES.md。 引擎构建验证:MSVC 2022(Windows)、GCC 9+(Linux)。