3dtile数据结构转换与展示

前言

最近十多天的的时间都在做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的所有属性名称,进而根据自己的需要进行处理;

https://sandcastle.cesium.com/?src=3D%20Tiles%20Feature%20Picking.html&label=3D%20Tiles

四、 管网展示

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

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


总结

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容