glb 3dTiles
GLB与3D Tiles的关系
GLB 文件是一种二进制格式的 glTF (GL Transmission Format),用于高效传输和加载 3D 模型。而在 3D Tiles Next 中,通过 3DTILES_content_gltf
扩展允许瓦片直接引用 .gltf
或者 .glb
文件作为其几何数据源[^1]。
这意味着不再局限于传统的 .b3dm
和 .i3dm
格式,而是可以更灵活地利用现有的 glTF 资产。这种灵活性不仅简化了工作流程,还提高了资源重用率以及跨平台兼容性。
如何在GLB和3D Tiles之间进行转换或集成
为了实现从 GLB 到 3D Tiles 的转换,通常会涉及到以下几个方面:
准备工具链
对于自动化处理模型文件并将其转化为符合 3D Tiles 规范的数据集来说,存在一些开源工具可以帮助完成这项任务。例如,在 GitCode 上托管的一个名为 3d-tiles-tools
的项目提供了多种实用程序来操作 3D Tiles 数据结构[^2];另一个例子则是 objTo3d-tiles
工具能够将 OBJ 模型文件转成 3D Tiles 集合[^3]。虽然这些工具主要针对特定输入格式(如OBJ),但是它们内部逻辑同样适用于其他类型的三维资产,包括 GLB 文件。
使用命令行工具转换单个GLB文件到3D Tiles集合
假设已经安装好了上述提到的相关工具之一,则可以通过如下方式把单一 GLB 文件打包成为基本形式的 3D Tile:
# 假设使用的是支持GLB导入功能的3d-tiles-tools库
npx @cèsium/building-extractor --input myModel.glb --output ./tiles/
这段脚本将会读取指定路径下的 GLB 文件,并按照 CesiumJS 定义的标准创建相应的目录树及 JSON 描述文档,最终形成一组可被浏览器或其他客户端解析渲染的 3D Tiles 结构。
编写自定义脚本来批量处理多个GLB文件
如果面对大量需要一次性转化的 GLB 文件时,编写一段简单的 JavaScript 或 Python 脚本可能是更好的解决方案。这里给出一个基于 Node.js 平台调用前述 CLI 接口的例子:
const { execSync } = require('child_process');
const fs = require('fs');
// 获取当前目录下所有的 .glb 文件名列表
let files = fs.readdirSync('./models').filter(f => f.endsWith('.glb'));
files.forEach(file => {
let outputDir = './tiles/' + file.replace(/\.glb$/, '');
try {
console.log(`Processing ${file}`);
execSync(`npx @cesium/building-extractor --input "./models/${file}" --output "${outputDir}"`);
console.log(`${file} processed successfully.`);
} catch(error){
console.error(`Failed processing ${file}:`, error);
}
});
此代码片段遍历给定文件夹内的所有 GLB 文件,并依次执行转换过程,同时记录成功与否的状态信息至控制台日志中。
小结
综上所述,借助现代 WebGIS 生态系统中的各类开发资源和技术手段,完全可以顺利达成由 GLB 向 3D Tiles 这一目标转变的过程。无论是采用现成的应用软件还是自行构建专属的工作流都可行得通。
相关推荐


















