kele
一、背景介绍
BIM数据是三维系统中的常客,它具有信息完备性、信息关联性、信息一致性、 可视化、协调性、模拟性、优化性和可出图性八大特点,广受人们喜爱,但这也使得它自身数据量庞大,在项目中展示效果不尽人意,在使用SuperMap iClient3D for WebGL加载BIM数据时,你是否也有过以下困扰?
场景帧率低:
显存不足报错:
接下来我们一起来看看SuperMap iDesktop如何优化BIM 数据
二、数据介绍
BIM数据种类繁多,可以分为建筑、桥梁、公路、随道、管道等类型,不同种类模型处理方法不尽相同,SuperMap iDesktop提供了三角网简化、操作子对象、提取外壳、移除重复点等全面的优化功能,适用于处理各种BIM模型。
这篇文章主要以BIM建筑类型为例,提供优化思路
原始文件rvt:220M
导入数据源:950M
三、BIM建筑优化
在三维场景中,当前页面渲染的三角面数量对场景帧率有很大影响,所以控制当前页面中渲染的三角面数量十分重要。对于BIM建筑类型,通常不存在大量三角面的单个对象,反而是建筑的结构非常复杂,需要我们去重新按类别分类。
3.1 室内外分离
室内外分离,顾名思义,就是将室内模型和室外模型分离开来,分别作为一个图层管理,这样做能有效的减少当前视角下的数据渲染量,从而提升浏览效率。
我们提供两种法来实现室内外分离:
- 根据数据集名称分类
在规范的BIM模型生产中,建模人员会将各个建筑类别用族类型进行区分,如上图。我们可以通过数据集名称直观地判断出哪些是室内模型,哪些是室外模型,然后将他们提取出来,分别i用数据源管理
例如:
【建筑外轮廓图层】:墙、窗、屋顶等对象
【建筑内部结构图层】:家具、结构连接、天花板、楼板边缘、卫浴装置、墙饰条等对象 - 提取外壳
对于无法通过数据集名称来分类的BIM模型该如何实现室内外分离呢?SuperMap iDesktop提供了一个十分好用的功能——提取外壳
功能入口:【三维地理设计】-【模型编辑】-【提取外壳】
从建筑四周打光,绿色表示当前视角下可见部分,红色表示不可见部分。建筑四个面都打上光,保证建筑外壳全部提取。之后再选择显示建筑【外壳】和【内部】,分别保存,这样就提取出建筑的外壳和内部了
3.2 地上地下分离
有些BIM建筑模型带有地下管道,或者地下停车场,这部分建筑通常是埋在地底下,在覆盖地形后,正常浏览地上模型时地下模型是完全看不到的,我们可以把这部分模型分离出来做显隐控制,提升浏览效率。
同样的,我们提供两种法来实现地上地下数据分离:
- 根据数据集名称分类
在规范的BIM模型生产中,建模人员会将各个建筑类别用族类型进行区分,我们可以通过数据集名称直观地判断出哪些是地上模型,哪些是地下模型,然后将他们提取出来,分别用数据源管理
例如:
【地上部分】:外墙、楼板、玻璃幕墙、门、窗、机械设备
【地下部分】:地下管道、停车场、地下风管 - 多边形查询
对于无法通过数据集名称区分的模型,或者是同一个数据集中,地上地下都有构件的情况,我们可以采用——多边形查询
功能入口:【场景】-【多边形查询】
我们首先通过数据集显隐,大致筛选出含有地下模型的数据集,然后使用【场景】-【查询坐标值】查询出地表高度(通常以一楼底部作为地表高度,一楼以下视为地下)
批量选中地下数据后,右键该图层-【关联浏览属性表】,属性表中的记录同样被选中,这时我们右键选中对象-【另存为模型数据集】
另存为新数据集后,把属性表中选中的对象删除,得到地上数据,另存出来的新数据集即地下数据
最终我们可以得到地上室内、地上室外、地下室内、地下室外等数据源。也可根据业务需求,按照其它规则划分
3.3 生成缓存
将各个数据源集合分别生成缓存,使用s3m3.0 + meshOpt方式
最终得到4个图层,对这4个图层分别右键-【图层属性】,设置最大最小可见距离,保存场景,前端还可根据业务需求分别对图层做显隐控制