3dtile数据结构转换与展示

743 阅读4分钟

前言

最近十多天的的时间都在做cesium地下管网三维相关,包括BIM建模、数据结构转换、cesium三维展示的内容,有了一些小小的收获,特地总结记录一下,加深记忆,并为以后查找方便。


一、工具介绍

1、OBD 建模软件

Bentley 系列产品,CE版本,建模流程和操作与SS版本基本一致,有几个关键点需要掌握:

  • 精确绘图\color{Darkorange}{精确绘图}
  • 数据组编辑器(类似于revit的族的一个统一管理的工具,可以对不同型号、属性等进行定义)
  • 材质分配

PS: 由于工作中建模方面用的不太多,对软件理解还不是很深,只是自己目前工作中用的部分记录一下,后续继续完善(20200919)

==踩过的坑==

1、建模时候采用真实管径,但在ceisum中展示模型太小,显示效果不好,重新调整管径的时候,管网模型转弯和交接的很多地方模型会乱掉,需要重新建模;

2、cesiumlab

一款针对cesium的数据处理软件,大多数功能免费,可以处理倾斜、手工建模等多种数据格式,还有配套的earthsdk,可以满足大多数三维展示等。

www.cesiumlab.com

==踩过的坑==

1、倾斜模型是CC处理后的3dtile数据,earthsdk中的移动工具无法使用,因为earthsdk的移动工具是通过3dtile数据中的某一个cesiumlab自己添加的数据;


二、转换3dtile

使用OBD进行管网的建模,cesiumlab的BIM转换工具进行处理==(需授权==),配合earthsdk进行展示,可以做到基本数据的展示,但转换完成后,出现两个问题:

  1. 转换后的模型结构树是混乱的
  2. 模型属性名称是英文

之后学习了3dtile的文件结构,再看了下cesiumlab处理模型后的3dtile文件,有了思路,可以通过自己解析场景树文件,和batch table属性,实现模型结构树和模型数据的特殊处理,

==踩过的坑== 用BIM建模建模模型,如果没有授权,只能通过3dmax重新转换的,尝试了OBJ、FBX等多种格式,导入到3dmax中只是一个模型,且模型不会按照OBD建模方式组织,需要重新组织模型结构,属性信息也会丢失,需要自己手动在数据库或通过json文件进行id(或name)与属性的手动匹配,整体流程比较复杂,且数据存储起来很麻烦。

三、3dtile 数据结构

由于自己目前没有能力做到数据结构转换这个层次,目前只是了解3dtile数据的基本数据结构,了解数据加载和存储方式。

3D Tiles 定义数据的基本框架是瓦片集,瓦片集包括瓦片集数据和瓦片数据; 瓦片集数据(json文件)是对整个瓦片集的说明以及瓦片的空间组织== 结构的存储,瓦片数据(b3dm等文件)负责存储单个瓦片内的所有三维地理信息数据,包括模型 数据、属性数据(batch Table)等。

PS:cesium中点击获取模型属性信息可以参考cesium管网例子,通过pick.getPropertyNames 获取3dtile的所有属性名称,进而根据自己的需要进行处理;

sandcastle.cesium.com/?src=3D%20T…

四、 管网展示

地下管网的展示:目前网上也有很多demo,比如火星科技等; 由于项目的需要,需要通过倾斜模型与地下管网人工模型共同展示,目前采用的方法是设置倾斜模型透明度(style语言)进行展示,展示需要注意地下管网模型管径大小,一般管网管径相对于整个城市整体来说,都比较小,需要进行管径的放大处理;同时管网放置在贴近地面的地方的浏览起来比较好,不会出现“飘"的现象;

显示效果优化调整的一些地方: 1、倾斜模型透明度: 2、深度监测关掉: 3、管网模型适当放大、颜色鲜艳些 4、调整模型位置,贴近地面,关闭地形,这样视角旋转浏览起来比较方便

总结

对自己这10天来这项工作的一些收获进行小小的总结,主要是记录自己的一些疑惑,如果能对别人有帮助的话那就更好了.....