一、数据性能优化
在项目中,有时会遇到由多个BIM数据组成的场景。该类场景中,数据范围不大,但主要数据类型为BIM类型数据,数据精细且集中分布。
比如在一个工厂的场景中,存在有原料库,成品库,水处理设施,加热炉等建筑,每一栋建筑都是一个BIM模型。每个模型都很精细,并且有很多类别组成,比如,一栋建筑可以由常规模型,窗,门,墙,结构框架,楼板,幕墙,屋顶,楼梯等等很多种类别。
如果按照常规的方式,一个类别对应一个图层,会使得图层的数量急剧膨胀;如果一栋建筑对应一个图层,也会导致性能与效果的问题。
本模块将介绍如何组织处理该类数据
重新组织数据结构
数据结构组织原则:内外分离、地上地下分离。
1.1内外分离:将所有建筑的外壳对象,整理到一个图层里面;再将所有建筑的内部结构对象整理到一个图层里面。通过设置图层的可见距离,在远处观察时,只加载建筑外壳的数据;进入到建筑内部时,再加载内部结构的数据。
例如:
建筑外轮廓图层:墙、窗、屋顶等对象
建筑内部结构图层:家具、结构连接、天花板、楼板边缘、卫浴装置、墙饰条等对象
1.2地上地下分离:将地上部分的模型与地下部分的模型,分离开来。通过开关按钮等控制方式,只加载需要观察的数据部分。
例如:
地上部分:地上管道、地上管件、地上软管
地下部分:地下管道、地下管件、地下软管
1.3特殊处理对象
有的模型中,存在有共用次数成百上千的对象,它们是具有实例化信息的,比如螺丝钉、螺丝帽、铁轨枕木、电杆、绝缘子串等等。
可把该种类型的对象,单独提取出来,做为一个图层,通过点外挂的方式生成缓存(具体方法及步骤参考Bentley导出插件点位+模型功能使用说明及注意事项,如果不是DGN格式的数据,且已经将BIM数据导出为UDBX格式的数据集,需要我们提供的工具,来生成支持点外挂的模型数据集)。
注意事项:
1.如果是少量模型是共用的,不需要勾选实例化;
2.如果共用对象较多,类别又比较多的,常规生成缓存有较大切片,可以使用实例化
3.如果对象共用次数很多、类型少,使用点外挂模型的方式
二、模型优化方法
1、导出设置模型精细度
BIM模型的一个特征就是比较精细,特别是管子、圆弧状等构件,三角面较多,在导出过程中进行适当的简化可以很好的提高性能。通常默认模型精细度为100%,可进行调整,例如设置精细度为80%。
部分模型在建模时,创建的族类型较为复杂,在最终的模型中单个对象存在较多对象,且三角面过多,导致场景性能较差,此时可以使用拆分子对象的方式,将单个对象拆分为多个小对象。
在管道模型中,常存在单个管道对象非常长,长度能达到几千米以上,三角面数几十万,此时模型就相对非常复杂,不利于使用。对此类型数据的优化通常采用模型切分的方式,将长的模型切分成多段小模型。
导出的模型通常存在一些重复顶点和重复面,这些重复顶点和重复面在渲染过程中是不必要的,会造成资源的消耗。
5、三角 简化
在导出模型设置简化之后发现三角面任然较多,性能较差,可使用三角 简化功能对模型进行再次简化,简化过程可以预览,不断尝试简化率以达到比较理想的效果。
模型缓存策略
BIM模型和传统的Max模型区别非常明显,BIM模型对象通常尺寸较小,对象非常多,模型复杂切三角面比较多。如果再使用传统的Max切片边长值,必然会出现单个.s3m文件过大,加载慢的情况,不利于web端应用。根据BIM模型的特征,需要适当的减小切片边长,个人推荐50或者100,视具体的数据情况可适当的做调整。
小结
不同类型的模型具有独特的数据特征,需要根据具体的数据特征具体分析,同时注重理论的应用和操作方法。尤其在Web端应用的过程中,数据存在下载和渲染的过程,下载过程中要求数据碎片化,单文件不宜过大,渲染过程中,三角面越少渲染越快。
笔者:wzr
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!