1.3D Tiles格式介绍

FBX是常见的三维模型交换格式,而3DTiles是专为WebGIS优化的流式三维数据标准。将FBX转换为3DTiles可显著提升三维数据在Web端的加载效率与渲染性能,尤其适用于大范围场景的轻量化展示。

3D Tiles是一个开放的规范,用于传输海量的异构三维地理空间数据集。使用概念上类似于 terrain和imagery的瓦片流技术,3D Tiles使得建筑物数据集、BIM模型、点云和摄影测量模型等大模型比较流畅的在Web端进行浏览展示。

2.3D Tiles支持的人工模型类型

  • 人工建模:数据来源于 3dmax、Maya 等建模软件建模,建好的三维模型导出为 dae 和 obj 数据。
  • BIM 模型:数据来源于专业的 BIM 软件,常见的有 rvt 和 dgn 格式。
  • 点云数据:一般是激光扫描后生产的数据,有 las、pts、ply 等格式。

3.FBX转换3D Tiles格式方式

将FBX模型转换为3D Tiles的核心路径是‌“FBX → glTF/GLB → 3D Tiles (B3DM)”‌,主要方法分为图形化软件、命令行工具链和自定义开发三类:

3.1 图形化桌面工具(推荐非开发者)

适合快速转换、预览及调整坐标参数,操作直观。

  • CesiumLab‌:行业常用工具,支持“通用模型切片”功能。导入 FBX 后设置场景参数(如坐标系、LOD 层级),选择输出格式为 3D Tiles,支持免费试用(小文件)或付费授权。需注意处理坐标系差异(Z-up 转 Y-up)。

  • GISBox‌:提供免费且功能丰富的转换界面。新建场景导入 FBX,通过“导出当前选择”生成 3D Tiles,支持纹理压缩、定点压缩及实时 3D 地球预览,适合快速验证效果。

  • 其他专用转换器‌:如部分开源的 FBXto3DTilesConverter 等独立工具,通常集成 Draco 压缩和智能分块功能,支持一键配置经纬度定位。‌‌

3.2 命令行工具(适合批量/自动化)

适合集成到 CI/CD 流程或处理大量模型,需分步执行。

  • FBX2glTF + gltf-pipeline‌:

    1. 使用 fbx2gltf 将 .fbx 转为 .glb(二进制 glTF)。
    2. 使用 gltf-pipeline 对 glb 进行 Draco 顶点压缩和纹理优化,减小体积。
    3. 使用 3d-tiles-tools (如 gltf-to-tileset) 将优化后的 glb 生成为 3D Tiles 瓦片集(包含 tileset.json 和 .b3dm 文件)。
  • model23dtiles‌:一款高效的命令行工具,支持直接输入 FBX 路径,通过参数控制纹理压缩(ktx2)、顶点压缩(draco)、空间索引结构(四叉树/八叉树)及地理坐标偏移,可一步完成转换。‌‌

4.具体使用

以下通过图形化工具CesiumLab和命令行工具model23dtiles为例进行转换。

4.1 CesiumLab

cesiumLab官网地址:http://www.cesiumlab.com/

4.1.1 导出 fbx 文件

下面是以 3ds Max 软件为例,导出为 fbx 格式;

正常打开max文件,如果提示图片材质路径不对,可以打开文件选择参考,选择资源追踪;

选择那些未找到的图片,右击菜单选择设置路径,在指定资源路径中将 map 路径添加,状态为确定则成功;

在3dmax内导出fbx格式文件

4.1.2 fbx文件转为3dtiles

1.添加fbx文件

  • 选择“通用模型切片”模块
  • 添加FBX文件,设置按钮会弹出设置页面;
  • 设置页面:会自动根据文件加载相应的数据,也可以自行选择

  • 设置附加属性:默认内置属性只有id,如果需要将其他属性附加到数据中,需要按说明编写csv属性文件按下图设置(对应代码加载后的Popup弹窗内属性)

  • 存储类型:选择散列,如果没有注意到,Cesiumlab 有散列紧凑互转功能;
  • 选择保存文件的路径;点击提交处理,进入处理页面

2.设置坐标系(存在问题时再设置)

如果建模场景是无坐标系的,或转换后数据在太空等场景下,可以先选择一个路口等明细的地方做参考点。

  • 首选打开3dmax找到某一个明显参考点的max内坐标,记住这个xyz值,比如:547263,4328611,0
  • 再打开图上选点页面,找到这个参考点的的实际对应经纬度坐标39.091314,117.545088
  • 将获取到的2个参数分别填写到cesiumlab的转换参数中,其中max中的坐标改为反向的值,比如加负数,-547263,-4328611,0。

导出3dtiles,转换成功之后的文件如下:

4.1.3 发布三维数据为HTTP服务

因为3dtiles数据一般都很大,建议发布为独立服务。

4.2 model23dtiles

windows版V2.3.1 [下载]

4.2.1 使用说明

1)按住键盘win+r键,在弹出的窗口中输入cmd,打开命令行窗口

2)点击确认后即可打开cmd窗口

3)用cd命令切换到工具目录

3)输入model23dtiles.exe -h查看转换工具参数说明

4.2.2 详细说明

命令行格式:

1
model23dtiles -i <path> -o <DIR> -tf <jpg/png/webp/ktx2> -vf <draco/meshopt/quantize/quantize_meshopt> -t <quad/oc/kd> -sr <Number> -cl <low/medium/high> -tx <Number> -ty <Number> -tz <Number> -up <X/Y/Z> -tw <Number> -th <Number> -aw <Number> -ah <Number> -tri <Number> -dc <Number> -sx <Number> -sy <Number> -sz <Number> -lng <Number> -alt <Number> -nm <v/f> -nrm -unlit -ntf

1
model23dtiles -i <path> -o <DIR> -tf <jpg/png/webp/ktx2> -vf <draco/meshopt/quantize/quantize_meshopt> -t <quad/oc/kd> -sr <Number> -cl <low/medium/high> -tx <Number> -ty <Number> -tz <Number> -up <X/Y/Z> -tw <Number> -th <Number> -aw <Number> -ah <Number> -tri <Number> -dc <Number> -sx <Number> -sy <Number> -sz <Number> -epsg <Number> -nm <v/f> -nrm -unlit -ntf

示例命令:

1
2
3
4
5
6
7
8
9
model23dtiles.exe -i D:\test.fbx -o D:\output -lat 30 -lng 116 -alt 100
# 输出使用ktx2进行纹理压缩和使用draco进行顶点压缩的3dtiles
model23dtiles.exe -i D:\test.fbx -tf ktx2 -vf draco -o D:\output -lat 30 -lng 116 -alt 100.5
# 设置3dtiles的中间节点的简化比例为0.6
model23dtiles.exe -i D:\test.fbx -sr 0.6 -o D:\output -lat 30 -lng 116 -alt 100
# 设置3dtiles的树结构为四叉树,顶点坐标为4549投影坐标系
model23dtiles.exe -i D:\test.fbx -t quad -o D:\output -epsg 4549
# 设置3dtiles的树结构为四叉树,顶点坐标为4549投影坐标系,并将原始模型单位从厘米转换为米
model23dtiles.exe -i D:\test.fbx -t quad -o D:\output -epsg 4549 -sx 0.01 -sy 0.01 -sz 0.01

参数说明:

  • 输入输出

    • -i 输入文件
    • -o 输出文件夹
  • 坐标参数

    • -lat 纬度,默认30.0
    • -lng 经度,默认116.0
    • -alt 高度,默认300
    • -epsg 若模型顶点坐标为投影坐标系,指定epsg编码,与lat、lng和alt参数互斥,可以配合tx、ty、tz参数使用
  • 变换参数

    • -tx 重设模型原点位置的x坐标,默认0.0
    • -ty 重设模型原点位置的y坐标,默认0.0
    • -tz 重设模型原点位置的z坐标,默认0.0
    • -sx x方向缩放(单位转换),默认1.0
    • -sy y方向缩放(单位转换),默认1.0
    • -sz z方向缩放(单位转换),默认1.0
    • -up 模型向上方向轴,选项:X、Y、Z(大写),默认Y(FBX模型自动转换为Y轴向上)
  • 组织结构参数

    • -t 3dtiles组织结构,可选:kd(KD树)、quad(四叉树)、oc(八叉树),默认quad
  • 压缩与简化参数

    • -r 3dtiles中间节点简化比例,默认0.5
    • -tf 纹理压缩格式,可选:png、jpg、webp、ktx2,默认ktx2
    • -vf 顶点压缩格式,可选:draco、meshopt、quantize、quantize_meshopt,无默认值
    • -cl draco压缩级别/顶点量化级别,选项:low、medium、high,默认medium,仅对quantize、quantize_meshopt和draco有效;压缩级别越高,模型精度损失越大
  • 性能限制参数

    • -tri 3dtiles瓦片最大三角面数,默认20w
    • -dc 3dtiles瓦片最大drawcall数量,默认20
    • 纹理尺寸参数
      • -tw 单个纹理最大宽度,默认256,需为2的幂
      • -th 单个纹理最大高度,默认256,需为2的幂
      • -aw 纹理图集最大宽度,默认2048,需为2的幂,且大于单个纹理最大宽度,否则不构建图集
      • -ah 纹理图集最大高度,默认2048,需为2的幂,且大于单个纹理最大高度,否则不构建图集
    • 变换参数
      • -nft 不对顶点应用变换矩阵;默认会对顶点应用变换矩阵以提升渲染性能(减少drawcall),但可能带来顶点位置精度损失(如果不启用该参数时,模型发生了变形,请启用该参数)
  • 其他参数

    • -nrm 重新计算法线
    • -nm 配合 -nrm参数使用,指定法线模式:v表示顶点法线,f表示面法线(默认),可选:v、f(顶点法线适用于平滑曲面,面法线适用于棱角分明的物体)
    • -unlit 启用 KHR_materials_unlit 扩展,适用于烘焙模型
    • -gn 生成法线贴图(使用Sobel算子)和切线,瓦片会有更好的渲染效果(提升有限)但瓦片的体积也会变大并且处理时间也更长

4.2.3 源码地址

github地址:https://github.com/newpeople123/osgGISPlugins
gitee地址:https://gitee.com/wtyhz/osg-gis-plugins