SuperMap GIS BIM类型数据优化 Q&A

一、BIM数据特点

BIM数据可以在设计中应用,还可应用于建设工程项目的整个寿命周期中;用BIM进行设计属于数字化设计;BIM的数据库是动态变化的,在应用过程中不断在更新、丰富和充实;为项目参与各方提供了协同工作的平台。

BIM数据精准、详尽地展示了建筑物外部和内部的模型,其数据量惊人,从而导致BIM数据在三维场景中的性能有待提高。BIM模型的一个特征就在于其非常精细。其中包括很多圆管,弧状模型等三角面较多的构件;单个对象过大过长的构件;子对象数量较多的构件等等。

本篇文章则针对如何提升BIM数据性能、简化BIM数据提供整体优化思路。

二、 常用优化方

2.1 织结构优化

        在项目中,有时会遇到由多个BIM数据组成的场景。该类场景中,数据范围不大,但主要数据类型为BIM类型数据,数据精细且集中分布。比如在一个工厂的场景中,存在有原料库,成品库,水处理设施,加热炉等建筑,每一栋建筑都是一个BIM模型。每个模型都很精细,并且有很多类别组成,比如,一栋建筑可以由常规模型,窗,门,墙,结构框架,楼板,幕墙,屋顶,楼梯等等很多种类别。如果按照常规的方式,一个类别对应一个图层,会使得图层的数量急剧膨胀;如果一栋建筑对应一个图层,也会导致性能与效果的问题。

本模块将介绍如何组织处理该类数据并重新组织数据结构

数据结构组织原则】:内外分离、地上地下分离

2.1.1 内外分离

        将所有建筑的外壳对象,整理到一个图层里面;再将所有建筑的内部结构对象整理到一个图层里面。通过设置图层的可见距离,在远处观察时,只加载建筑外壳的数据;进入到建筑内部时,再加载内部结构的数据。

例如:

建筑外轮廓图层】:墙、窗、屋顶等对象

建筑内部结构图层】:家具、结构连接、天花板、楼板边缘、卫浴装置、墙饰条等对象

2.1.2 地上地下分离

        将地上部分的模型与地下部分的模型,分离开来。通过开关按钮等控制方式,只加载需要观察的数据部分。

例如:

地上部分】:地上管道、地上管件、地上软管

地下部分】:地下管道、地下管件、地下软管

2.1.3 特殊处理对象

        有的模型中,存在有共用次数成百上千的对象,它们是具有实例化信息的,比如螺丝钉、螺丝帽、铁轨枕木、电杆、绝缘子串等等。可把该种类型的对象,单独提取出来,做为一个图层,通过点外挂的方式生成缓存(具体方法及步骤参考Bentley导出插件点位+模型功能使用说明及注意事项,如果不是DGN格式的数据,且已经将BIM数据导出为UDBX格式的数据集,需要我们提供的工具,来生成支持点外挂的模型数据集)。

注意事项】:

1. 如果是少量模型是共用的,不需要勾选实例化;

2. 如果共用对象较多,类别又比较多的,常规生成缓存有较大切片,可以使用实例化

3. 如果对象共用次数很多、类型少,使用点外挂模型的方式

2.2 模型优化

2.2.1模型检查

        模型本身具体的复杂程度,通过直观去看是不好辨别出来的。所以优先检查模型本身的信息。

2.2.1.1 三角面及顶点数量检查

        为了找到顶点数量较多的模型。需要通过【三维数据】-【模型工具】-【模型检查】对模型进行查询,判断是否有过多的顶点或是三角面。一个单独对象的面数不要超过3万个,若超过3万个三角面,则应该分成2个或多个对象。

使用模型检查功能可以查询数据集内模型最大三角面数,子对象最大三角面数。可以直接根据得到的结果,针对不同的模型进行相应的优化操作。

2.2.1.2 顶点数提取

        模型检查只能查找到哪个数据集需要进行简化,并不能找到具体是哪一个对象需要简化,为了判断具体是哪个对象顶点数过多,则需要对模型的顶点数提取。使用【三维数据】-【模型工具】-【属性提取】工具。

提取后的值可以在模型的属性表中最后一列查看到。我们去筛选出对象定点数大于10w的对象进行处理,与此同时检查模型中是否有顶点数小于等于4的,并检查小于等于4的对象是否为正确数据,如果为错误数据通过【删除行】删除掉即可。

2.2.2 三角网简化

        通过上面的模型检查的功能,我们可以判断出三角网(顶点数)过多的对象。接下来我们可以开始对模型进行真正的简化。

        由于BIM模型最大的特征在于其过于精细,三角面过多。在导出的过程中需要对其进行适当的简化,通常我们导出插件默认模型导出的精细度为90%,我们可以在导出时对其进行调整。在模型没有大体形变的情况下我们可以调整到80~85%

如果是没有原始数据的情况,则可以再iDesktop中再进行处理。使用【三维地理设计】-【模型编辑】-【三角网简化】。三角网简化可以再次对模型进行重新处理。

        根据模型实际情况进行简化对比,窗口会自动创建两个场景左侧场景为原始数据,右侧场景为简化后数据。根据调整简化信息中的状态条进行简化。如果模型本身过于精细,通常可以拉到50%的状态进行查看,如果模型出现明显形变,则在向右侧进行调整。以实现整体的三角网进行简化。注:如果场景中存在顶点数跨度较大的模型,如一个对象80个顶点而另一个对象1万个顶点的情况,可以在简化时设置简化过滤三角面数(顶点数)的范围,适当增大左侧范围值,只简化复杂模型。

2.2.3 子对象三角网简化

        通常我们建模的一个对象中会包含多个子对象,而在进行整体简化的过程中,很容易出现其中某个子对象一个有明显形变了,而另一个子对象依然没有变化。这时,使用三角网简化已经不适用于整个图层了。而需要通过【三维地理设计】-【模型编辑】-【操作子对象】进行简化。

找到图层中顶点数(三角面)较多的对象,选中时候即可查看到当前选中的对象的数值,以及ID,根据实际情况进行简化即可。

2.2.4 模型拆分

        模型子对象过多同样也会导致数据加载缓慢,部分模型在建模时,创建的族类型较为复杂,在最终的模型中单个对象存在较多对象,且三角面过多,导致场景性能较差,此时可以使用拆分子对象的方式,将单个对象拆分为多个小对象。【三维地理设计】-【模型编辑】-【模型拆分】。

2.2.5 模型切分

        在管道或是桥梁的模型中,常存在单个对象非常长,长度能达到几千米以上,三角面数几十万,此时模型就相对非常复杂,不利于使用。对此类型数据的优化通常采用模型切分的方式,将长的模型切分成多段小模型。使用【三维地理设计】-【模型编辑】-【模型切分】工具。

同样也是根据实际情况进行切分,同样尽可能减小单个对象三角网数量,使其三角面不超过3w,顶点数不超过10w。

2.2.6 模型实例化

        由于BIM数据来源多种多样,所以部分数据在BIM软件制作的同时其实也是有相应的优化手段的。Revit中能复用族,Bentley中又可以使用共享单元。这些数据导入到iDesktop产品中,可以再场景查看都是已经复用了。而一些BIM数据的格式如IFC,并不包含复用的信息,这个时候则需要使用实例化功能,对数据遍历查询,检查是否有可复用对象。使用【三维数据】-【模型工具】-【实例化处理】工具。

选择需要处理的revit数据进行实例化,如果存在复用对象则会在模型属性中展示出共用次数。

2.2.7 模型LOD创建

        部分BIM模型在建模的时候已经存在了精细层到粗糙层的LOD级别,如Revit软件中创建的模型,软件本身已经附加了LOD,我们默认是会将其原始的LOD层级导出的。而一些BIM模型创建本身则没有LOD的,则需要在iDesktop中再次创建。使用【右键模型数据集】-【创建模型LOD】工具。

与此同时如果模型本身自带LOD,更建议使用模型本身的LOD去加载。

2.2.8 移除重复点、重复面、重复子对象

        在模型制作的过程中,由于建模人员的不规范操作可能会导致模型重复绘制的情况,同时在我们简化三角网后,也会出现重复的顶点或是面。所以在最后一步我们通常是需要再对模型本身去做移除重复点、面、对象的操作。使用【三维数据】-【模型工具】-【移除重复点】/【移除重复面】/【移除重复子对象】工具。

2.3 模型切片缓存

        切片缓存是我们再桌面中优化的最后一步,三维切片缓存可以用来提高模型数据在场景中的显示效率。

2.3.1 常规多图层缓存

        通常较为简单的模型我们可以直接在制作好场景后,保存场景。右键场景生成场景缓存即可。

        生成的缓存数据图层数量与原始场景中图层数量是一致的。但是相对来说场景缓存可设置的参数会少一些。

2.3.2 不同类型数据生成多图层缓存

        如果数据类型不一致,切需要根据不同类型设置瓦片边长或其他参数,直接场景缓存并不能实现了。则需要对数据集右键生成缓存。

        而这里的参数则会更丰富一些。针对不同类型的数据,可以进行不同的设置。

2.3.3 单图层缓存

        场景中图层太多了,前端读取图层太多不好分辨了,最终只需要一个图层加载的话,可以使用批量生成缓存合并图层的方式。使用【三维数据】-【生成缓存】-【模型】工具。

        可设置参数与右键数据集效果一致,左下角的合并图层被框选上,最终结果会合并成为一个图层。

2.3.4 参数设置

        下面参数设置主要以【三维数据】-【生成缓存】-【模型】以及【右键数据集生成缓存】参数设置为主,场景缓存中同样包含以下参数,但缺少部分参数设置。

【数据集】:显示了用于生成三维切片缓存的数据集名称。

【数据源】:显示了用于生成三维切片缓存的数据集所在的数据源的名称。

【缓存类型】:显示了所要生成的三维切片缓存的类型。缓存类型为下拉按钮,下拉列表中列出了所选数据所支持的所有缓存类型,用户可从中进行选择。

场景类型】:场景类型为球面,当数据集坐标系为投影坐标系时,场景类型支持切换为平面。

【缓存路径】:在“缓存路径”右侧的文本框中输入缓存的输出路径,可以为本地路径,也可以为网络路径;用户还可以通过文本框后的“浏览”按钮来选择路径。

【属性存储类型】:支持两种属性存储类型,S3MD和ATTRIBUTE,提高属性文件的下载效率。其中S3MD的是以json的方式存储,ATTRIBUTE以二进制流的方式存储。

【文件类型】:文件类型为S3MB数据格式。

【材质关联文件】:支持*.json格式的材质关联文件。

【S3M版本】:支持两种S3M版本号,S3M1.0、S3M2.0、S3M3.0。其中S3M2.0支持PBR材质。S3M3.0支持椭球以及 顶点MeshOpt方式压缩。

【线程数】:设置参与生成缓存的线程数,使缓存生成更加高效,默认为4。

【模型定位点】:用于设置模型追加生成缓存的参数,追加模型数据集生成缓存时,模型定位点应当与追加前的模型数据集的定位点保持一致。

【纹理压缩格式】:目前支持七种压缩类型:WebP、DXT(PC设备)、CRN_DXT5(PC设备)、PVRTC(iOS系列设备)、ETC(Android系列设备)、不压缩,默认为DXT(PC设备)。对于不同用途的数据,采用不同的纹理压缩方式,可以减少纹理图像所使用的显存数量。 不压缩:默认的纹理格式。

  • WebP:适用于 Web端/PC机上通用的压缩纹理格式。数据总量减少,提高传输性能。
  • DXT(PC设备):适用于 PC 机(个人计算机)上通用的压缩纹理格式。显存占用减少,提升渲染性能,但是数据总量会增加。
  • CRN_DXT5(PC设备):适用于 PC 机(个人计算机)上通用的压缩纹理格式,显存占用少许减少,数据总量大幅度减少,但是需要较长的处理时间。
  • 标准CRN:适用于 PC 机(个人计算机)上通用的压缩纹理格式,显存占用少许减少,数据总量大幅度减少。处理相同数据,所需时间比CRN_DXT5长。
  • PVRTC(iOS系列设备):适用于苹果 iOS 设备上通用的压缩纹理格式。以此种方式进行纹理压缩时,同时会生成一个离线地图包,方便 iOS 设备用户使用。
  • ETC(Android系列设备):适用于 Android 设备上通用的压缩纹理格式。以此种方式进行纹理压缩时,同时会生成一个离线地图包,方便 Android 设备用户使用。

【金字塔剖分类型】:用于设置缓存切片创建树型金字塔的剖分类型,应用程序提供了四叉树和八叉树两种方式。其中,四叉树适合城市级别的建筑剖分;八叉树适合单独一栋高楼做剖分,主要应用于 BIM 数据。

【过滤阈值】:过滤掉粗糙层较小的子对象,从而提升大场景数据的性能。 例如,过滤阈值设为2,则在最粗糙层过滤掉最长边小于2米的子对象,次粗糙层过滤掉小于1米的子对象,以此类推。最精细层子对象不过滤。

【瓦片边长】:一个切片的范围,一般默认就行,如果数据精度高,瓦片边长可适当缩小;如果数据较粗糙,瓦片边长可适当增大。

【字段信息】:用于设置生成三维切片缓存的属性字段,默认生成全部字段信息。

【合并根节点】:勾选合并根节点后,可设置根节点合并次数。如输入1,即模型根节点将进行一次合并处理。

【带法线】:默认勾选带法线,根据需求可自行勾选。

【带线框】:用于生成三维切片缓存的轮廓。

【纹理设置】:目前支持两种纹理设置:多重纹理和单重纹理。多重纹理支持生成叠加纹理,单重纹理仅支持生成第一重纹理。

【纹理处理方式】:用于设置生成的缓存的纹理处理方式,提供了拼接、拼接且重映射和重映射三种方式。其中,拼接适用于三角网较密集的数据,对于这类数据采取拼接的方式会提高生成缓存的效率。

【纹理大小限制】:用于设置纹理大小,可选不限制、1024像素*1024像素、2048像素*2048像素以及4096像素*4096像素等选项,默认为不限制。

纹理共用、重复贴图打组2个选项:默认勾选重复贴图打组,根据需求可自行勾选。

【对象字段ID】:用于设置唯一标识ID的字段,通过下拉箭头进行选择。

【顶点权重模式】:提供无、数据集字段、高度和原始特征值四种方式。其中,数据集字段是指以指定字段作为权重,高度是指以高度作为权重,原始特征值是指以模型数据本身的特征值作为权重。

【顶点优化方式】:只有当顶点权重模式为无时,可以设置顶点优化方式。提供压缩顶点和不压缩两种方式。

【特征值】:只有选择数据集字段作为顶点权重模式时,该选项可用。单击右端下拉箭头指定字段。

【瓦片范围】:在“瓦片范围”区域进行设置,有下面两种方式: 勾选“默认范围”复选框,默认采用数据集的范围。

2.3.5 推荐参数设置

【S3M版本】:S3M3.0

【几何压缩】:MeshOpt

【纹理压缩】:CRN_DXT5 ;KTX2.0(移动端)

BIM性能测试:

显存占用下降30%,加载/下载性能提升30%,帧率提升5-10帧

三、 不同类型模型优化

3.1 厂房数据

以实际的一个项目数据进行说明:该项目中的BIM模型主要有:板坯库、水处理、成品库和加热炉。

3.1.1 板坯库

建筑外轮廓:墙、窗、屋顶

室内地上:楼板、楼梯、结构基础、结构柱、结构框架、结构连接、栏杆扶手

室外地上:常规模型、坡道

地下(部分模型半地下):管道、管件、管道附件、管道隔热层、电缆桥架、电缆桥架配件

点外挂数据:机械装置、专用设备

3.1.2 成品库和水处理

建筑外轮廓:墙、窗、屋顶

室内地上:楼板、楼梯、结构基础、结构柱、结构框架、结构连接、结构加强板、栏杆扶手、风管、风管附件、风管管件、数据设备、门、卫浴装置

室外地上:常规模型、坡道

地下(部分模型半地下):管道、管件、管道附件、管道隔热层、电缆桥架、电缆桥架配件、线管、线管配件

点外挂数据:机械装置、专用设备、电气装置、电气设备

3.1.3 加热炉

建筑外轮廓:墙、窗、屋顶

室内地上:卫浴装置、幕墙嵌板、柱、栏杆扶手、楼板、楼板边缘、楼梯、管道附件、结构基础、结构柱、结构框架、结构连接、软风管、门、风管、风管管件、风道末端

室外地上:常规模型、坡道、体量

地下(部分模型半地下):管道、管件、线管、线管配件

点外挂数据:机械装置、专用设备、照明设备、电器装置、电器设备、电缆桥架、电缆桥架配件

将四个数据源中的同名数据集合并到一个图层中这样最终得到建筑外轮廓,室内地上,室外地上,地下,点外挂五个图层。分别对每个图层生成缓存,具体参数设置如下

图层

瓦片边长

过滤阈值

LOD层级

实例化

建筑外轮廓

600

2

LOD5层(30、50、75、100、100)

非实例化

室内地上

600

8

LOD5层(50、75、100、100、100)

实例化

室外地上

400

16

LOD5层(30、50、75、100、100)

非实例化

地下

600

8

LOD5层(30、50、75、100、100)

非实例化

点外挂

600

8

LOD5层(30、50、75、100、100)

实例化

注意事项】:

  • 如果是少量模型是共用的,不需要勾选实例化
  • 如果共用对象较多,类别又比较多的,常规生成缓存有较大切片,可以使用实例化
  • 如果对象共用次数很多、类型少,使用点外挂模型的方式
  • 注意控制场景中的图层数量不要过多,业务逻辑可以用功能实现(比如属性,而非图层),图层更适合解决性能问题

3.2 学院楼数据

以实际的一个项目数据进行说明

该项目中的BIM模型主要有:公共教学中心西楼、财政金融系院系楼、会计系院系楼。

首先通过Revit插件将每个模型导出为一个UDBX数据源,然后将每个数据源中的数据集,按照第一步重新组织数据结构的方法进行整理。

3.2.1 公共教学中心西楼

建筑外轮廓:墙、窗、楼板、天花板、屋顶、幕墙竖梃、幕墙嵌板、常规模型、坡道

室内地上:门、楼梯、结构基础、结构柱、结构框架、顶部扶栏、栏杆扶手

各管道数据:①管道、②管件、管道附件、③机械设备、电气设备、风道末端、风管、风管附件、电缆桥架、电缆桥架配件

点外挂数据:卫浴装置

3.2.2 多栋建筑

也按照建筑外轮廓、室内地上、室外地上、各管道数据、点外挂数据分别进行处理。将数据源中的同名数据集合并到一个图层中,这样最终得到建筑外轮廓,室内地上,室外地上,点外挂等多个图层。又根据数据的复杂程度对各管道数据这一类型数据进行重新组合,组合成①②③三个图层。

3.2.3 缓存参数设置如下

建筑外轮廓:

室内地上:

管道:

管件、管道附件:

风管电气:

点外挂:

注意事项】:

  • 如果是少量模型是共用的,不需要勾选实例化
  • 如果共用对象较多,类别又比较多的,常规生成缓存有较大切片,可以使用实例化
  • 如果对象共用次数很多、类型少,使用点外挂模型的方式
  • 注意控制场景中的图层数量不要过多,业务逻辑可以用功能实现(比如属性,而非图层),图层更适合解决性能问题
  • 四叉树是对数据进行十字型纵向划分,适合范围广的数据;八叉树在四叉树的基础上,增加一个横向的剖分,适合范围小,但是高度又比较大的数据
  • 这里的管道数据,范围较窄,纵向上数据量大且复杂,符合使用八叉树的特征,因此生成缓存时,各管道数据金字塔剖分类型使用八叉树,瓦片高度设置为建筑层高

3.3 铁路轨道、地铁盾构模型

        在项目使用上,对于铁路轨道、地铁盾构隧道等数据,需要看到多个区间数据的加载情况,设置2000米或者3000米的最大可见距离就没法满足项目使用,如果不限制最大可见距离又会导致场景中三角网太多,从而帧率过低,影响浏览体验。

        使用点外挂模型缓存提升性能,插件中提供了点集+模型的导出方式,通过该方式导出的模型,可以在桌面中生成点外挂缓存。而针对项目使用情况,可以对外挂模型的LOD层数据,进行再精简处理。以下用地铁盾构隧道为例,进行简单处理说明。

3.3.1 获取精简隧道模型

        首先,获取盾构段隧道的内半径、外半径和长度。如可以将单个盾构段隧道导入iDesktop中,进行测量。

在3ds Max软件里构建一个内半径3米,外半径3.35米,长1.52米的白模。

(注意:①精细模型如果有旋转角度,在创建白模时,也需要保证相同的旋转角度;②构建的白模材质颜色,和精细模型的材质颜色保持一致,不用设置贴图。)

再使用超图Max插件,导出成*.s3mb的模型文件。

3.3.2 替换LOD层数据

        首先,DGN插件导出的点位+模型数据,使用点外挂模型生成缓存,得到如下图所示的一份缓存数据。

        然后,将第一步中得到的*.s3mb文件复制三份(根据缓存的LOD层数复制多份),替换外挂模型的LOD层文件。【注:LOD层名称不变。】

3.3.3 结果效果对比

优化前

优化后

【附加】导出插件使用说明文档及下载链接

SuperMap GIS三维插件使用Q&A

SuperMap技术资源中心|为您提供全面的在线技术服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值