3dtile数据结构转换与展示
做cesium地下管网三维相关,包括BIM建模、数据结构转换、cesium三维展示的内容,总结记录一下。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
工具介绍
OBD 建模软件
Bentley 系列产品,CE版本,建模流程和操作与SS版本基本一致,有几个关键点需要掌握:
- 精确绘图
- 锁
- 数据组编辑器(类似于revit的族的一个统一管理的工具,可以对不同型号、属性等进行定义)
- 材质分配
注意:建模时候采用真实管径,但在ceisum中展示模型太小,显示效果不好,重新调整管径的时候,管网模型转弯和交接的很多地方模型会乱掉,需要重新建模。
cesiumlab
一款针对cesium的数据处理软件,大多数功能免费,可以处理倾斜、手工建模等多种数据格式,还有配套的earthsdk,可以满足大多数三维展示等。
注意:倾斜模型是CC处理后的3dtile数据,earthsdk中的移动工具无法使用,因为earthsdk的移动工具是通过3dtile数据中的某一个cesiumlab自己添加的数据。
转换3dtile
使用OBD进行管网的建模,cesiumlab的BIM转换工具进行处理,配合earthsdk进行展示,可以做到基本数据的展示,但转换完成后,出现两个问题:
- 转换后的模型结构树是混乱的
- 模型属性名称是英文
之后学习了3dtile的文件结构,再看了下cesiumlab处理模型后的3dtile文件,有了思路,可以通过自己解析场景树文件,和batch table属性,实现模型结构树和模型数据的特殊处理,
注意:
用BIM建模建模模型,如果没有授权,只能通过3dmax重新转换的,尝试了OBJ、FBX等多种格式,导入到3dmax中只是一个模型,且模型不会按照OBD建模方式组织,需要重新组织模型结构,属性信息也会丢失,需要自己手动在数据库或通过json文件进行id(或name)与属性的手动匹配,整体流程比较复杂,且数据存储起来很麻烦。
3dtile 数据结构
3D Tiles 定义数据的基本框架是瓦片集,瓦片集包括瓦片集数据和瓦片数据; 瓦片集数据(json文件)是对整个瓦片集的说明以及瓦片的空间组织== 结构的存储,瓦片数据(b3dm等文件)负责存储单个瓦片内的所有三维地理信息数据,包括模型 数据、属性数据(batch Table)等。
cesium中点击获取模型属性信息可以参考cesium管网例子,通过pick.getPropertyNames 获取3dtile的所有属性名称,进而根据自己的需要进行处理。
管网展示
地下管网的展示:目前网上也有很多demo; 由于项目的需要,需要通过倾斜模型与地下管网人工模型共同展示,目前采用的方法是设置倾斜模型透明度(style语言)进行展示,展示需要注意地下管网模型管径大小,一般管网管径相对于整个城市整体来说,都比较小,需要进行管径的放大处理;同时管网放置在贴近地面的地方的浏览起来比较好,不会出现“飘"的现象;
显示效果优化调整的一些地方: 1、倾斜模型透明度: 2、深度监测关掉: 3、管网模型适当放大、颜色鲜艳些 4、调整模型位置,贴近地面,关闭地形,这样视角旋转浏览起来比较方便。