首页 > 工具素材 > 建站工具 >  osgb转Cesium 3D tiles工具,Cesium使用倾斜摄影正文

osgb转Cesium 3D tiles工具,Cesium使用倾斜摄影

资源介绍

先来看下转换后,贴到Cesium地球上的效果:



摄影测量的格式常见的有:
    osgb
    dae
    gltf
    b3dm
    …其他格式

我们公司用的主要是OSGB格式。OSGB是OSG三维引擎定义的数据格式.OSG为二进制格式,然后贴上纹理图片就可以转换为OSGB。但是Cesium不能直接显示OSGB,需要转换下。文章末尾提供下载地址。

使用方法

一、通常拿到OSGB的文件如下:



二、下载下来3dtiles工具后解压,进入3dtiles工具根目录,运行命令:

3dtile.exe [FLAGS] [OPTIONS] --format--input--output

示例:
3dtile.exe -f osgb -i E:\Data\hgc -o E:\Data\hgc_test
3dtile.exe -f osgb -i E:\Data\dayanta -o E:\Data\dayanta_test -c "{\"offset\": 0}"
3dtile.exe -f shape -i E:\Data\aa.shp -o E:\Data\aa --height height
3dtile.exe -f gltf -i E:\Data\TT\001.osgb -o E:\Data\TT\001.glb
3dtile.exe -f gltf -i E:\Data\TT\001.obj -o E:\Data\TT\001.glb
3dtile.exe -f b3dm -i E:\Data\aa.b3dm -o E:\Data\aa.glb

参数说明:

-c, --config    
    {
      "x": 120,
      "y": 30,
      "offset": 0 , // 模型最低面地面距离
      "max_lvl" : 20 // 处理切片模型到20级停止
    }
  -f, --format-i, --input-o, --output--height, 指定shapefile的高度字段 (转shapefile时,必须参数)

命令行参数详解:

-c 在命令行传入 json 配置的字符串, json 内容为选配,可部分实现。

-f 输入数据格式: osgb 为倾斜摄影格式数据, shape 为shapefile面数据, gltf 为单一通用模型转gltf, b3dm 为单个3dtile二进制数据转gltf。

-i 输入数据的目录,osgb数据截止到 "\Data" 目录的上一级,其他格式具体到文件名。

-o 输出目录。最终结果位于输出目录的 "\Data" 目录。

--height 高度字段。指定shapefile中的高度属性字段。

数据说明:
1、倾斜摄影数据:
    倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式, 数据目录必须有一个 “Data” 目录的总入口, “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位置信息。
    每个瓦片目录下,必须有个和目录名同名的 osgb 文件,否则无法识别根节点。

    正确的目录结构如下:

--metadata.xml
--Data\Tile_000_000\Tile_000_000.osgb

2、shapefile 数据:
    目前仅支持 shapefile 的面数据,可用于建筑物轮廓批量生成 3dtile。
    shapefile 中需要有字段来表示高度信息。
    仅支持WGS84坐标系的矢量数据。

3、通用模型转gltf:
    支持 osg、osgb、obj、fbx、3ds 等单一通用模型数据转为 gltf、glb 格式。
    转出格式为 2.0 的gltf,可在以下网址验证查看: https://pissang.github.io/clay-viewer/editor/

4、b3dm 数据转gltf:
    支持将 b3dm 单个文件转成 glb 格式,便于调试程序和测试数据

三、稍等片刻,等转换完毕,可以看到如下图所示的截图:




四、在Cesium中加载OSGB倾斜摄影:

//加载OSGB倾斜摄影数据
var tileset = new Cesium.Cesium3DTileset({
    //相对路径
    url: './modle/dayanta/Tileset.json',
});
//添加到球体上
viewer.scene.primitives.add(tileset);
//定位过去
viewer.zoomTo(tileset);


下载 提取码/密码:vg5i(点击复制密码)