• Cesium: 如何将倾斜摄影数据转换为3dTiles格式


    1、 引言

      随着Cesium平台的开源易于上手性和优秀快速开发出活原因,国内GIS平台越来越多的将Cesium作为自己产品的web端来进行使用,但面临建一个不大不小的问题:对于小模型数据一般采用.gltf或.glb格式即可加载显示,但对于较大面积批量的数据如何快速有效加载成了一个问题,官方提出了3D tiles格式来解决,但如何将自己的模型转化为3D tiles格式?官方没有提供工具,原因有很多,比如划片的合理性,不同专业数据采用不同的划片方式等等,官方知识提供了3D tiles格式的介绍,具体操作还需要自己来写。很多人采用的是Cesium实验室(CesiumLab)提供的工具来进行转换使用,但是毕竟不开源用起来有顾虑和不方便,因此需要想法去找合适的开源工具。主要应用场景如下大体量的倾斜摄影转换,shp格式的城市素模数据转换

    2、 Cesium简介

      Cesium是AGI公司计算机图形开发小组与2011年研发的三维地球和地图可视化开源JavaScript库,Cesium一词来源于化学元素铯,铯是制造原子钟的关键元素,研发小组通过命名强调Cesium产品精益求精,专注时间数据可视化。Cesium为三维GIS提供了一个高效的数据可视化平台。即:
    (1)Cesium是一个跨平台、跨浏览器的展示三维地球和地图的JavaScript库
    (2)Cesium使用WebGL来进行硬件加速图形,使用时不需要任何插件支持。
    (3)Cesium是基于Apache2.0许可的开源程序,可以免费用于商业和非商业用途。
    入门代码可以参考:Cesium入门代码

    3、cesium之3D tiles格式

      3D Tiles是Cesium于2016年3月定义的一种三维模型瓦片数据格式,目前已经是OGC标准之一,3D Tiles将海量三维数据以分块分层的形式组织起来,大大减轻了浏览器和GPU的负担。从结构关系上看,3D Tiles归属于Primitive,有很高的数据加载效率。3D Tiles专为流式传输和渲染3D地理数据而设计的,如倾斜摄影测量、BIM、点云、建筑数据等。
    详情参考文章:cesium之3D tiles格式介绍

    4、转换工具

    下面介绍一款开源工具3dtileConvert,可以用于 3D-Tiles 转换的工具。

    这是一个RUST language使用 cpp lib 处理 osgb 数据的项目。提供的工具如下:

    • Osgb(OpenSceneGraph Binary)to 3D-Tiles:将大量的 osgb 文件转换为 3D-Tiles。
    • Esri Shapefileto 3D-Tiles: 将 shapefile 转换为 3D-Tiles。
    • Fbxto 3D-Tiles:将 fbx 文件转换为 3D-Tiles,包括 auto_lod\texture 转换等。

    转换效果:

    上海城市素模 由shp格式转换为3dtiles格式 cesium显示
    城市素模
    倾斜摄影数据转换: osg显示
    在这里插入图片描述

    5、数据要求及说明

    ①倾向摄影数据

    倾向摄影数据仅支持smart3d格式的osg组织方式:

    • 数据目录必须有一个“Data”目录的总入口;
    • “Data”目录同级放置一个metadata.xml文件用于记录模型的位置信息;
    • 瓦片目录下,必须列出和目录名同名的osgb文件,否则无法识别根节点;

    正确的目录目录:

    - Your-data-folder
      ├ metadata.xml
      └ Data\Tile_000_000\Tile_000_000.osgb
    
    • 1
    • 2
    • 3

    ② 形状文件

    仅支持 Shapefile 的面貌数据,可用于标题当前列表。
    Shapefile 中需要有字段来表示高度信息。

    ③通用模型转glTF:

    支持osg、osgb、obj、fbx、3ds等通用模型数据转为gltf、glb格式。

    转出格式为2.0的gltf,可在以下网址验证查看:https 😕/pissang.github.io/clay-viewer/editor/

    ④ B3dm 单文件转glb
    支持将b3dm文件转glb格式,便于调试成程序和测试数据

    用法
    ① 命令行

    3dtile.exe [FLAGS] [OPTIONS] --format <FORMAT> --input <PATH> --output <DIR>
    
    • 1

    ② 例子

    # from osgb dataset
    3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path
    3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"offset\": 0}"
    # use pbr-texture
    3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"pbr\": true}"
    
    # from single shp file
    3dtile.exe -f shape -i E:\Data\aa.shp -o E:\Data\aa --height height
    
    # from single osgb file to glb file
    3dtile.exe -f gltf -i E:\Data\TT\001.osgb -o E:\Data\TT\001.glb
    
    # from single obj file to glb file
    3dtile.exe -f gltf -i E:\Data\TT\001.obj -o E:\Data\TT\001.glb
    
    # convert single b3dm file to glb file
    3dtile.exe -f b3dm -i E:\Data\aa.b3dm -o E:\Data\aa.glb
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    6、下载地址

    转换工具下载

  • 相关阅读:
    nasa教学纳卫星计划-36
    YOLO好像也没那么难?
    诡象追踪:MySQL开binlog性能更好?!
    数字孪生技术打造智慧矿山可视化解决方案
    【外汇天眼】解析外汇交易平台:深度了解DD与NDD两大模式
    初识Python——Python环境安装配置
    Linux 文件访问权限说明
    【RHCE】作业:配置NFS开发目录&配置DNS正向解析域名
    独立站SaaS系统站群模式怎么玩
    【C语言】标准内容介绍(C99)
  • 原文地址:https://blog.csdn.net/m0_37251750/article/details/125441106