众所周知,BIM数据有数据量精细,细节表现好等优点,但是BIM数据加到GIS系统中,就会存在很多性能问题。这篇文章记录下遇到过的一些问题。
BIM+GIS遇到的性能问题可以分为几类,最常见的就是在webgl端加载的时候显示出加载模型缓慢,卡顿等问题。需要解决这类问题,我一般会按照以下步骤进行数据检查和优化:
一:确认数据内容
首先确认模型的复杂度,这里有几种方式去判断:首先可以用三角面数去判断模型是否有复杂对象,然后可以通过观察确认数据属于哪种类型(是建筑,还是条状的公路),然后可以确认下模型的纹理是否有大纹理存在(纹理图片大于1024*1024即可作为大纹理)。
二:筛选
- 我们可以iDesktop去统计出每个对象的三角面数,然后通过属性表的排序去检查出三角面数特别大的对象,单独对这类数据进行优化。
- 如果是条状的数据,一个对象跨度长达几百米甚至几千米的,也需要挑选出来
- 挑选出业主单位不太关心的数据,和主要关注数据,了解数据优化的重点方向
三:优化
-
针对三角面比较大的对象,可以利用桌面里的三角网简化工具,但是这个工具简化率设置的不好的话容易使模型发生形变,推荐使用★☆☆☆☆
- 针对条状的数据,可以利用桌面里的模型切分工具,合理控制模型长度,设置切分参数,推荐使用★★★★☆
- 针对重点数据和非重点数据,可以利用桌面里的模型拆分工具,对复杂对象进行拆分;还可以利用桌面里的子对象编辑工具,对子对象进行简化和删除等操作,推荐使用★★★★☆
- 数据优化最重要的一点是切缓存,缓存的参数选择对缓存的最终加载速度也是有很大的影像的。
①剖分方式:BIM模型颗粒度较小的时候选择八叉树,其余选择四叉树;
②瓦片边长:瓦片边长不宜过大,需要根据实际情况去调整,根据生成的S3M数据来进行调整,如果单个S3M文件过大(超过3-5M),这个时候就需要去减少瓦片变长了
③过滤阈值:BIM中过滤阈值可以设置的稍微大点,这样可以过滤掉一些细小部件的显示来优化显示内容
④lod层数:lod层一般默认的3层即可,如果有特殊需求,可以修改层数和每层的简化率(简化率100表示全部简化)
⑤保存工作空间:保存工作空间的时候可以设置每个图层的最大最小可见距离,用来控制数据的显示内容
- 数据的优化,“冤有头,债有主”,源头可以从建模开始就避免掉一些问题,比如在建模的时候就可以按照关注度对数据选择合理的建模方法,过度复杂的对象建模耗时长,占用性能高,但是业主并不关注,所以建模时有几点需要注意下:
①避免建复杂对象,个别确实需要的,可以对模型进行拆分建模,或者根据业主定义的建模细粒度来建模
②避免建超长对象,可以对这类进行合理分段
③避免对象有过多子对象,合理对模型进行合并和拆分
④圆柱的对象,圆形的对象可以利用六边形来代替
⑤避免使用大纹理贴图