如何高效使用3D Tiles Tools:完整指南与实用技巧 🚀
【免费下载链接】3d-tiles-tools 项目地址: https://gitcode.com/gh_mirrors/3d/3d-tiles-tools
3D Tiles Tools 是一套功能强大的开源工具集,专为处理和优化3D Tiles数据而设计。它提供了丰富的命令行工具,支持 tileset 压缩、合并、升级、格式转换等核心功能,同时还能处理 B3DM、I3DM 等 tile 内容文件的转换与优化,帮助开发者轻松管理和优化大规模3D地理空间数据。
📋 快速安装与环境准备
一键安装步骤
3D Tiles Tools 基于 Node.js 开发,安装过程简单快捷:
# 通过 npm 全局安装
npm install -g 3d-tiles-tools
源码编译方法
如果需要从源码构建最新版本,可通过以下步骤克隆仓库并编译:
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/3d/3d-tiles-tools
# 进入项目目录
cd 3d-tiles-tools
# 安装依赖并构建
npm install
npm run build
📁 项目结构解析
核心模块路径
项目采用模块化设计,主要源码位于 src/ 目录下,关键模块包括:
- 基础工具库:src/base/ - 提供跨模块共享的基础工具类
- 3D Tiles 数据结构:src/structure/ - 定义 tileset JSON 元素的 TypeScript 类型
- 瓦片处理核心:src/tilesets/ - 处理 tileset 数据、包格式及内容转换
- 命令行接口:src/cli/ - 实现所有命令行工具的入口逻辑
目录功能说明
3d-tiles-tools/
├── demos/ # 示例代码与演示程序
├── specs/ # 测试数据与单元测试
├── src/ # 源代码目录(核心功能实现)
├── figures/ # 文档配图与示意图
└── package.json # 项目依赖与脚本配置
🔧 核心功能与使用示例
Tileset 管理工具
1. 快速压缩与解压 tileset
使用 gzip 命令压缩 tileset,显著减少存储空间:
# 压缩整个 tileset
npx 3d-tiles-tools gzip -i ./input/tileset/ -o ./output/tileset-gzipped/
# 仅压缩瓦片文件(排除元数据)
npx 3d-tiles-tools gzip -i ./input/tileset/ -o ./output/tileset-gzipped/ --tilesOnly
解压操作同样简单:
npx 3d-tiles-tools ungzip -i ./input/tileset-gzipped/ -o ./output/tileset-ungzipped/
2. 合并多个 tileset
将多个外部 tileset 合并为单个文件,便于分发与加载:
# 创建引用外部 tileset 的新 tileset
npx 3d-tiles-tools merge -i ./tilesetA/ -i ./tilesetB/ -o ./merged-output/
# 仅生成合并后的 JSON 文件(不复制源文件)
npx 3d-tiles-tools mergeJson -i ./tilesetA/tileset.json -i ./tilesetB/tileset.json -o ./merged.json
3. 一键升级到最新版本
将旧版 tileset 升级至 3D Tiles 1.0/1.1 规范:
# 升级到 1.0 版本(默认)
npx 3d-tiles-tools upgrade -i ./old-tileset/tileset.json -o ./upgraded-1.0/
# 升级到 1.1 版本并转换为 glTF 格式
npx 3d-tiles-tools upgrade -i ./old-tileset/tileset.json -o ./upgraded-1.1/ --targetVersion 1.1
Tile 内容处理工具
1. B3DM 与 glTF 格式互转
将 glTF 模型封装为 B3DM 格式:
npx 3d-tiles-tools glbToB3dm -i ./model.glb -o ./model.b3dm
提取 B3DM 中的 glTF 模型:
npx 3d-tiles-tools b3dmToGlb -i ./model.b3dm -o ./extracted.glb
2. 优化瓦片内容
使用 gltf-pipeline 优化 B3DM 模型,支持 Draco 压缩:
npx 3d-tiles-tools optimizeB3dm -i ./raw.b3dm -o ./optimized.b3dm --options --draco.compressionLevel=9
3. 批量创建 tileset JSON
从目录自动生成 tileset 结构,并定位到指定地理坐标:
npx 3d-tiles-tools createTilesetJson -i ./tiles/ -o ./tileset.json --cartographicPositionDegrees 116.397 39.908 50
高级功能:Pipeline 批量处理
通过 JSON 配置文件定义处理流程,实现自动化批量操作。例如,将所有 B3DM 转换为 glTF 并打包为 .3tz:
{
"input": "./input-tileset",
"output": "./output-tileset.3tz",
"tilesetStages": [
{
"name": "_convertB3dm",
"description": "批量转换 B3DM 为 glTF",
"contentStages": [{"name": "b3dmToGlb"}]
}
]
}
执行 pipeline:
npx 3d-tiles-tools pipeline -i ./pipeline-config.json
📊 数据结构可视化
3D Tiles 中的元数据通常通过属性表(Property Table)组织,以下是典型的属性表结构示意图:

图:3D Tiles 属性表结构示意图,展示元数据如何通过属性表高效存储与访问
⚙️ 常见问题与解决方案
如何处理大型 tileset 转换?
对于超过 10GB 的大型 tileset,建议使用 --logJson 参数开启 JSON 日志,并通过管道输出到文件以便监控进度:
npx 3d-tiles-tools convert -i ./large-tileset/ -o ./output.3tz --logJson > conversion.log
升级 tileset 后模型材质丢失怎么办?
升级时指定材质参数映射,确保旧版材质正确转换为 PBR 材质:
npx 3d-tiles-tools upgrade -i ./old-tileset/ -o ./new-tileset/ --options --baseColorTextureNames u_diffuse
📚 进阶学习资源
- 官方文档:README.md
- 实现细节:IMPLEMENTATION.md
- 示例代码:demos/ - 包含 tileset 处理、元数据操作等实用示例
通过本文介绍的工具与技巧,您可以轻松应对 3D Tiles 数据的处理、优化与转换需求。无论是开发地理信息应用还是管理大规模3D模型,3D Tiles Tools 都能提供高效可靠的技术支持。
【免费下载链接】3d-tiles-tools 项目地址: https://gitcode.com/gh_mirrors/3d/3d-tiles-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



