建筑信息模型产品的几何数据分割方法
技术领域
本发明属于数据分割技术领域,尤其涉及一种建筑信息模型产品的几何数据分割方法。
背景技术
BIM(Building Information Modeling,建筑信息模型)模型作为建筑项目生命周期中各项目参与人员之间进行视觉交流的新技术,其数据可视化是支持各种决策的交互式应用程序数量不断增加的基本要求。支持在各种设备中渲染数据的跨平台实时可视化,能使BIM面向更多应用程序和用户。
当前,一些研究已经利用WebGL实现了跨平台BIM数据可视化的方案。这些研究具有相似的过程。将BIM几何数据先转换成三角形网格数据,再将其存储在云中。通常,三角形网格在产品级进行数据计算和组织处理,每当客户端通过HTTP等网络协议请求云上产品的三角网格时,就可以实现BIM数据的并行实时渲染。然而,BIM模型包含极大和/或复杂的3D形状的产品,如BIM模型的站点和由SchetchUp之类的软件生成的规划BIM模型。这些大型或复杂的产品往往需要很长的时间进行三角剖分,得到更多的三角网格数据。为了得到这些渲染过的产品,客户端不得不等待更多的时间,因为只有当一个产品所有的几何数据都被获取时,它才能被渲染。这些问题将直接影响用户体验。显然,实现大型复杂BIM产品的并行实时渲染,可以极大地提高跨平台可视化工具对BIM数据的适用性。
为解决大型复杂BIM产品的并行实时渲染问题,目前的工作主要集中在网格简化、网格流和数据分割等方面。其中,数据分割也称为数据分段,它将原始数据拆分为多个数据段。获取数据段后,可视化工具可以正确地对其进行渲染。通过数据分割减轻了大规模几何数据实时渲染的工作量。另外,也可以采用并行渲染。如基于广义扫描框架的体积划分策略方法将输入三角形网格的体积无缝划分为变形的长方体集合。但是,它不能直接应用于BIM几何数据。新颖的分层网格分解算法将分解计算成给定网格的有意义的分量来实现,还有使用异构图进行全自动网格分割。当应用于BIM数据时,这些方案可能会影响BIM产品中的潜在链接。
发明内容
为克服上述现有的数据分割方法不能直接应用于BIM几何数据,在应用于BIM数据时影响BIM产品中的潜在链接的问题或者至少部分地解决上述问题,本发明实施例提供一种建筑信息模型产品的几何数据分割方法。
根据本发明实施例的第一方面,提供一种建筑信息模型产品的几何数据分割方法,包括:
根据IFC文件中各BIM产品的几何数据的IFC实例之间的关系,构建每个所述BIM产品的异构几何关系模型;其中,所述异构几何关系模型中的每个节点表示相应的所述IFC实例,所述节点之间的有向边为所述节点表示的IFC实例之间的关系;
计算所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小,并根据所述IFC实例之间的关系对每个所述IFC实例的可分割状态进行标记;
根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
具体地,IFC实例之间的关系包括引用关系、分解关系和关联关系。
具体地根据IFC文件中各BIM产品的IFC实例之间的关系,构建每个所述BIM产品的异构几何关系模型的步骤包括:
若任一所述IFC实例与其他所述IFC实例具有引用关系,则构造从任一所述IFC实例到该IFC实例所引用的其他IFC实例之间的有向边,获取所述BIM产品的引用关系模型;
若任一所述IFC实例与其他所述IFC实例具有分解关系,则构造从任一所述IFC实例到该IFC实例所分解的其他IFC实例之间的有向边,获取所述BIM产品的分解关系模型;
若任一所述IFC实例通过另一所述IFC实例与其他所述IFC实例具有关联关系,则构造从任一所述IFC实例到另一所述IFC实例之间的有向边,以及从另一所述IFC实例到任一所述IFC实例所关联的其他IFC实例之间的有向边,获取所述BIM产品的关联关系模型;
将所述BIM产品的引用关系模型、分解关系模型和关联关系模型进行合成,获取所述BIM产品的异构几何关系模型。
具体地,计算所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小的步骤包括:
对于所述异构几何关系模型中的任一IFC实例,基于自下而上的方法根据该IFC实例的子IFC实例包含的几何数据大小获取该IFC实例包含的几何数据的大小。
具体地,所述可分割状态包括可分割和不可分割;
相应地,根据所述IFC实例之间的关系对每个所述IFC实例的可分割状态进行标记的步骤包括:
若任一所述IFC实例分解为其他所述IFC实例,则将该IFC实例标记为可分割;
若另一所述IFC实例通过任一IFC实例与其他所述IFC实例具有关联关系,则将该IFC实例标记为可分割;
若任一所述IFC实例引用其他所述IFC实例,则将该IFC实例标记为不可分割。
具体地,根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值的步骤包括:
根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,基于贪婪算法自上而下对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
具体地,基于贪婪算法自上而下对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值的步骤包括:
将所述异构几何关系模型中的根IFC实例,若所述根IFC实例包含的几何数据的大小大于所述预设总阈值,则从所述根IFC实例的子IFC实例中选择可分割的子IFC实例;
若所述根IFC实例存在多个可分割的子IFC实例,则根据所述多个可分割的子IFC实例之间的依赖关系,从所述可分割的子IFC实例中选择被依赖的子IFC实例,将所述被依赖的子IFC实例作为目标IFC实例;
使用所述预设总阈值减去所述根IFC实例及其包含的不被依赖的子IFC实例、不被依赖的子IFC实例的后代IFC实例;
将得到的差值作为预设子阈值,若所述目标IFC实例包含的几何数据的大小大于所述预设子阈值,则判断所述目标IFC实例是否满足预设条件;
若满足,则以所述目标IFC实例为分裂点进行分割,使得分割出的所述目标IFC实例的子IFC实例的大小小于或等于所述预设子阈值与所述目标IFC实例的差值;
若不满足,则从所述目标IFC实例的子IFC实例中选择可分割的子IFC实例,从所述可分割的子IFC实例中选择新的目标IFC实例,迭代执行计算差值、与差值进行比较和判断是否满足预设条件的步骤,直到从所述异构几何关系模型中分割出小于或等于所述预设总阈值的部分;
获取所述异构几何关系模型中分割后的剩余部分,若所述剩余部分的根IFC实例包含的几何数据的大小大于所述预设总阈值,则执行上述步骤从所述剩余部分中分割出小于或等于所述预设总阈值的部分,直到所述剩余部分的根IFC实例包含的几何数据的大小小于或等于所述预设总阈值;
其中,所述预设条件为所述目标IFC实例分解为其他所述IFC实例或存在另一个所述IFC实例通过所述目标IFC实例与其他所述IFC实例关联。
具体地,以所述目标IFC实例为分裂点进行分割,使得分割出的所述目标IFC实例的子IFC实例的大小小于或等于所述预设子阈值与所述目标IFC实例的差值的步骤包括:
若所述目标IFC实例分解为其他所述IFC实例,则从所述目标IFC实例分解的其他IFC实例中选择分割的IFC实例,将所述目标IFC实例引用的其他IFC实例继承在分割的IFC实例中,使得分割出的IFC实例小于或等于所述预设子阈值与所述目标IFC实例的差值;
若另一个所述IFC实例通过所述目标IFC实例与其他所述IFC实例关联,则从另一个所述IFC实例关联的其他IFC实例中选择分割的IFC实例,将所述目标IFC实例引用的其他IFC实例继承在分割的IFC实例中,使得分割出的IFC实例小于或等于所述预设子阈值与所述目标IFC实例的差值。
根据本发明实施例的第二个方面,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的建筑信息模型产品的几何数据分割方法。
根据本发明实施例的第三个方面,还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的建筑信息模型产品的几何数据分割方法。
本发明实施例提供一种建筑信息模型产品的几何数据分割方法,该方法通过根据IFC实例之间的关系构建异构几何关系模型,然后计算模型中每个IFC实例的几何数据大小,并标注其可分割状态,根据每个IFC实例的几何数据大小和可分割状态对IFC实例进行分割,从而实现对原始BIM数据的分割,基于分割结果使用并行方式可以加速三角剖分和渲染过程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的建筑信息模型产品的几何数据分割方法整体流程示意图;
图2为本发明实施例提供的建筑信息模型产品的几何数据分割方法中异构几何关系模型的结构示意图;
图3为本发明实施例提供的建筑信息模型产品的几何数据分割方法中引用关系模型的结构示意图;
图4为本发明实施例提供的建筑信息模型产品的几何数据分割方法中分解关系模型的结构示意图;
图5为本发明实施例提供的建筑信息模型产品的几何数据分割方法中关联关系模型的结构示意图;
图6为本发明又一实施例提供的建筑信息模型产品的几何数据分割方法中引用关系模型的结构示意图;
图7为本发明实施例提供的建筑信息模型产品的几何数据分割方法中IFC实例包含的几何数据大小和可分割状态标记示意图;
图8为本发明实施例提供的建筑信息模型产品的几何数据分割方法中特性说明示意图;
图9为本发明实施例提供的建筑信息模型产品的几何数据分割方法中几何数据分割图解;
图10为本发明实施例提供的建筑信息模型产品的几何数据分割方法中分解关系的数据分割图解;
图11为本发明实施例提供的建筑信息模型产品的几何数据分割方法中关联关系的数据分割图解;
图12为本发明实施例提供的电子设备整体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的一个实施例中提供一种建筑信息模型产品的几何数据分割方法,图1为本发明实施例提供的建筑信息模型产品的几何数据分割方法整体流程示意图,该方法包括:根据IFC文件中各BIM产品的几何数据的IFC实例之间的关系,构建每个所述BIM产品的异构几何关系模型;其中,所述异构几何关系模型中的每个节点表示相应的所述IFC实例,所述节点之间的有向边为所述节点表示的IFC实例之间的关系;
其中,IFC(Industry Foundation Classes)规范是国际公认的BIM规范。在不失一般性的前提下,在此假设本实施例中的BIM数据由IFC文件表示。IFC是基于对象的,与平台无关的开放文件格式规范,在基于BIM的项目中广泛用作协作格式。IFC实例i是IFC实体的具体实例。
在IFC规范中,BIM产品由IfcProduct定义。如果分配了几何表示形式,则IfcProduct会出现在空间的特定位置。使用ObjectPlacement属性建立一个坐标系,在该坐标系中建立几何制图表达项目使用的所有点和方向。由IfcProductDefinitionShape提供的表达形式可以是几何形状表示形式,也可以是拓扑表示形式,即带有或不带有拓扑项的基础几何形状。BIM产品p是用于合并到AECO/FM项目中的制造提供或创建的对象,称为元素。BIM产品通常与几何或空间环境有关。因此,BIM模型中的产品通常由两部分组成,即3D几何形状g和其语义属性a。因此,p=(gp,ap)。其中,p、gp和ap由IFC实例的集合描述。
由于仅讨论几何数据,因此忽略ap,即p=gp。将gp的大小表示为sp。由于IFC实例i∈gp描述了p的3D形状,所以i中包含的几何数据的大小表示为li。更一般地,si也代表在i及其所有相关IFC实例中定义的几何数据的大小。本实施例的目的在于将p的几何数据划分为大小小于阈值λ的几何数据。虽然BIM模型还可以包括其他对象,例如IfcActor、IfcControl、IfcGroup、IfcProcess和IfcResource,但是由于仅BIM产品包含几何数据,因此本实施例不讨论其他对象。
每个BIM产品都由IFC实例的集合组成。在IFC规范中,一个IFC实例通常需要依赖于其他IFC实例。本实施例根据IFC实例之间的关系构建BIM产品的异构几何关系模型。异构几何关系模型描述了3D形状的IFC实例之间的依赖关系。将BIM产品p的异构几何关系模型表示为Mp。
计算所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小,并根据所述IFC实例之间的关系对每个所述IFC实例的可分割状态进行标记;
其中,每个IFC实例包含的几何数据的大小为每个IFC实例及其后代实例中所有几何数据的大小之和。IFC实例i的后代实例集合表示为Di,是异构几何关系模型中与IFC实例i直接或间接连接的所有较低层IFC实例的集合。而IFC实例i的子实例集合表示为Ci,是异构几何关系模型中与IFC实例i具有依赖关系的i下层IFC实例的集合。显然,Ci是Di的子集。图2给出异构几何关系模型的示例。整棵树是异构几何关系模型。以i1为例,i1的C1由i2和i3组成,而i1的D1={i2,i3,i4,i5,i6,i7,i8}。IFC实例的可分割状态为IFC实例是否可以分割的状态。
根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
传统上BIM模型是在产品级上组织的。然而,具有极大复杂形状的BIM产品通常具有大量的几何数据,并且需要相当长的传输时间,从而导致不友好的用户体验。本实施例通过将原始BIM产品的大几何数据划分为小形状来解决此问题。因此,可以如下定义问题:
给定预设总阈值λ和s
p>λ的乘积p,乘积几何数据划分问题是将p拆分为子乘积Q(p),
s
q<λ且g
p=∑
q∈Q(p)g
q。另外,还期望在分割过程中,总的几何数据大小增加得尽可能少。形式上,BIM产品的几何数据分割问题定义为:
s.t.gp=∑q∈Q(p)gq,
任何复杂的BIM产品都是由几种形状所组成的,所以本实施例将原始的几何数据划分成几个小几何数据段,并将每个小数据段视为独立的新子产品。显然,对大型复杂BIM产品的原始几何数据进行分割后,可以利用并行计算框架加快三角剖分的过程,实现子产品的三角网格数据产品级组织,获得高效率的BIM模型渲染运算。
本实施例通过根据IFC实例之间的关系构建异构几何关系模型,然后计算模型中每个IFC实例的几何数据大小,并标注其可分割状态,根据每个IFC实例的几何数据大小和可分割状态对IFC实例进行分割,从而实现对原始BIM数据的分割,基于分割结果使用并行方式可以加速三角剖分和渲染过程。
在上述实施例的基础上,本实施例中IFC实例之间的关系包括引用关系、分解关系和关联关系。
具体地,当前对BIM中其他任务的研究通常将IFC实例之间的依赖关系作为引用关系。这种方式使得IFC实例之间的所有关系变得类同。但是,这些同类模型不适用于BIM产品的几何数据区分,因为某些关系无法在BIM产品的几何数据中划分。
与当前对IFC实例之间的关系进行建模的程度不同,异构几何关系模型将IFC实例之间的依赖关系分为三类,即引用关系、分解关系和关联关系。这三种关系分别建模,将描述BIM产品p几何形状的IFC实例之间的所有关系表示为异构几何关系模型Mp。
在上述实施例的基础上,本实施例中根据IFC文件中各BIM产品的IFC实例之间的关系,构建每个所述BIM产品的异构几何关系模型的步骤包括:若任一所述IFC实例与其他所述IFC实例具有引用关系,则构造从任一所述IFC实例到该IFC实例所引用的其他IFC实例之间的有向边,获取所述BIM产品的引用关系模型;
其中,BIM数据中存在许多引用关系。例如,一个IfcProduct实例通常引用一个IfcObjectPlacement和一个IfcProductRepresentation实例,即IfcProduct实例与IfcObjectPlacement和IfcProductRepresentation实例都具有引用关系。在对引用关系进行建模时,构造从任一实例到其所引用实例的有向边。
IFC实例在其定义中可能具有零个、一个和多个引用关系。图3给出了引用关系的模型。其中,i45是IfcWallStandardCase的实例,继承自IfcProduct。显然,i45指向的是IfcOwnerHistory实例i2、IfcObjectPlacement实例i46和IfcProductRepresentation实例i51。因此,i45具有分别指向i2、i46和i51的三个有向边。
若任一所述IFC实例与其他所述IFC实例具有分解关系,则构造从任一所述IFC实例到该IFC实例所分解的其他IFC实例之间的有向边,获取所述BIM产品的分解关系模型;
分解关系广泛存在于类似集合的定义中,例如IfcGeometricSet、IfcConnectedFaceSet和IfcRepresentation。以IfcRepresentation为例,一个IfcRepresentation实例由至少一个IfcRepresentationItem实例组成。在这种情况下,IfcRepresentation实例与所有IfcRepresentationItem实例具有分解关系。在对分解关系建模时,从IFC实例到其分解的IFC实例构造有向边。
图4给出了分解关系的模型。其中,IfcShapeRepresentaton实例i54由六个IfcRepresentationItem实例i77、i78、i79、i80、i81和i82组成。在分解关系模型中,分别构造了从i54到i77、i78、i79、i80、i81和i82的六个有向边。在该示例中i54和i20形成引用关系,从i54到i20的有向边模拟了i54和i20之间的引用关系。分析解析用虚线表示,引用关系用实线表示。
若任一所述IFC实例通过另一所述IFC实例与其他所述IFC实例具有关联关系,则构造从任一所述IFC实例到另一所述IFC实例之间的有向边,以及从另一所述IFC实例到任一所述IFC实例所关联的其他IFC实例之间的有向边,获取所述BIM产品的关联关系模型;
关联关系模型通常在IFC实例通过另一个IFC实例与其他IFC实例具有关系时发生。一个具体的例子是IfcStyledItem。IfcStyledItem实例具有三个属性,即IfcRepresentationItem实例、由IfcStyleAssignmentSelect定义的样式的集合及其名称。在IfcStyledItem之上,IfcRepresentationItem实例与几个IfcStyleAssignmentSelect实例构造关系。在这种情况下,认为IfcRepresentationItem实例通过IfcStyledItem实例与IfcStyleAssignmentSelect实例具有关联关系。
图5给出了关联关系的模型。i71是一个IfcRepresentationItemItem实例,具有两个样式i73和i74,这两个样式均由IfcStyleAssignmentSelect通过IfcStyledItem i72定义。IfcRepresentationItem实例i71通过IfcStyledItem实例i72与两个IfcStyleAssignmentSelect实例i73和i74关联。在这种情况下,i71的边指向i72,i72的边指向i73和i74。
将所述BIM产品的引用关系模型、分解关系模型和关联关系模型进行合成,获取所述BIM产品的异构几何关系模型。
使用上述三个关系模型对BIM产品p的几何结构的每个IFC实例进行建模。最终,可以为p建立一个异构几何关系模型。异构几何关系模型是没有任何循环的树状有向图。图6给出了异构几何关系模型的一个完整示例。i45是IfcProduct实例,而i2是IfcOwnerHistroy实例。i45左侧的IFC实例定义了i45的位置,而i45右侧的IFC实例描述了i45的表示形式或3D形状。显然,异构几何关系模型中没有循环。异构几何关系模型为几何数据分割奠定了基础。
异构几何关系模型M由R和D表示,即M=(R,D),R和D分别记录了不能和可以重新组织的子IFC实例。子IFC实例为IFC实例i的子实例集合,表示为Ci,是在异构几何关系模型中引用、分解或与i关联的实例集合。重复为每个IFC实例构造M。将引用关系中的子实例添加到R中,将分解关系中的子实例添加到D中,将关联关系中的子实例添加到D中。然后返回M。显然,IFC文件中BIM产品的所有异构几何关系模型都包含在M中。假设一个BIM产品有m个IFC实例,则很容易得出异构几何关系模型构建的时间复杂度为O(m)。因此,构建异构几何关系模型是有效的。
由于BIM几何数据是通过多个几何模型和具有高依赖性的BIM实例所表达的,使得BIM产品的几何数据分割比较困难。本实施例根据不同关系建立BIM实例之间的联系,为几何数据分割提供了便利条件。
在上述各实施例的基础上,本实施例中计算所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小的步骤包括:对于所述异构几何关系模型中的任一IFC实例,基于自下而上的方法根据该IFC实例的子IFC实例包含的几何数据大小获取该IFC实例包含的几何数据的大小。
具体地,gp是定义p的3D形状的IFC实例,因此,IFC实例包含的几何数据的大小通过以下公式获取:
以图6为例,i85的D85={i86,i87,i88,i89,i90,i91},从而有
s85=l85+s86=l85+l86+l87+l88+l89+l90+l91
p45是BIM产品,而g45是p45的几何表示,其中包括i51及其所有子代。显然,s45=s51。
首先使用自下而上的方法计算每个IFC实例包含的几何数据大小,并标记每个IFC实例的可分割状态。使用上述公式可以很容易地计算出IFC实例包含的几何数据的总大小。在异构几何关系模型的顶部,使用自下而上的策略解决了BIM产品的几何数据分割的问题。
在上述实施例的基础上,本实施例中所述可分割状态包括可分割和不可分割;相应地,根据所述IFC实例之间的关系对每个所述IFC实例的可分割状态进行标记的步骤包括:若任一所述IFC实例分解为其他所述IFC实例,则将该IFC实例标记为可分割;若另一所述IFC实例通过任一IFC实例与其他所述IFC实例具有关联关系,则将该IFC实例标记为可分割;若任一所述IFC实例引用其他所述IFC实例,则将该IFC实例标记为不可分割。
具体地,IFC实例具有高度依赖性。为了正确识别IFC实例i的全部含义,必须考虑其所有子实例。IFC实例间的高度依赖关系为大型复杂BIM产品的数据分割以及并行计算带来了巨大挑战。在异构几何关系模型中,IFC实例之间的关系可以建模为引用、分解和关联三种关系。根据IFC规范,不能对引用关系进行划分,但是可以分割分解和关联关系。分解和关联关系的可划分性为大型BIM产品的几何数据分割提供了可能性。
当IFC实例i与其任何子实例具有分解或关联关系时,i被标记为可分割。图7给出了图6中BIM产品p
45的计算结果。在示例中,将每个IFC实例视为包含相等大小的几何数据。也就是说,在
i
n∈g
p中,l
m=l
n=1。计算从叶节点开始,每个IFC实例中包含的几何数据大小通过对其子IFC实例包含的几何数据的大小求和获取。由于i
51是IfcRepresentation实例,并且与i
79和i
83具有分解关系,因此只能对i
51进行分割。
在上述实施例的基础上,本实施例中根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值的步骤包括:根据所述异构几何关系模型中每个所述IFC实例包含的几何数据的大小和每个所述IFC实例的可分割状态,基于贪婪算法自上而下对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
在上述各实施例的基础上,本实施例中基于贪婪算法自上而下对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值的步骤包括:将所述异构几何关系模型中的根IFC实例,若所述根IFC实例包含的几何数据的大小大于所述预设总阈值,则从所述根IFC实例的子IFC实例中选择可分割的子IFC实例;若所述根IFC实例存在多个可分割的子IFC实例,则根据所述多个可分割的子IFC实例之间的依赖关系,从所述可分割的子IFC实例中选择被依赖的子IFC实例,将所述被依赖的子IFC实例作为目标IFC实例;使用所述预设总阈值减去所述根IFC实例及其包含的不被依赖的子IFC实例、不被依赖的子IFC实例的后代IFC实例;将得到的差值作为预设子阈值,若所述目标IFC实例包含的几何数据的大小大于所述预设子阈值,则判断所述目标IFC实例是否满足预设条件;若满足,则以所述目标IFC实例为分裂点进行分割,使得分割出的所述目标IFC实例的子IFC实例的大小小于或等于所述预设子阈值与所述目标IFC实例的差值;若不满足,则从所述目标IFC实例的子IFC实例中选择可分割的子IFC实例,从所述可分割的子IFC实例中选择新的目标IFC实例,迭代执行计算差值、与差值进行比较和判断是否满足预设条件的步骤,直到从所述异构几何关系模型中分割出小于或等于所述预设总阈值的部分;获取所述异构几何关系模型中分割后的剩余部分,若所述剩余部分的根IFC实例包含的几何数据的大小大于所述预设总阈值,则执行上述步骤从所述剩余部分中分割出小于或等于所述预设总阈值的部分,直到所述剩余部分的根IFC实例包含的几何数据的大小小于或等于所述预设总阈值;其中,所述预设条件为所述目标IFC实例分解为其他所述IFC实例或存在另一个所述IFC实例通过所述目标IFC实例与其他所述IFC实例关联。
具体地,根据IFC规范可得出如下四个特性:
特性1:如果IFC实例i是可分割的,则i的父级也是可分割的。
特性2:当且仅当异构几何关系模型中的根IFC实例可分割时,产品才可分割。
特性3:IFC实例最多可以从一种引用关系中进行分割。
特性4:异构几何关系模型中的IFC实例拆分得越多,子产品的总大小就越少。
使用图8对上述特性进行说明。i11与i21、i22和i23具有引用关系。i31与i41,i42,i43和i44具有分解关系,i23与i32和i33具有分解关系。据特性1,i21是可分割的,因为它的子实例i31是可分割的。同样,i11也可以分割的。由特性2可知,当IFC实例可分割时,根IFC实例是可分割的,就可以对产品进行细分。因为在异构几何关系模型中可以对至少一个IFC实例进行划分,这导致了根IFC实例的可分割性。特性3来自IFC实例的依赖关系。即由于分解关系而可分割i23,i11也只能从i21或i23进行分割。因为i23及其子项依赖于所有以i21为根的IFC实例,所以IFC实例i11在引用关系中只有一个子实例可以对其进行划分,即i21。特性4很容易被推导出来。当对异构几何关系模型中具有更深位置的IFC实例进行划分时,每个数据段中将引用更多属于其父IFC实例的IFC实例,从而导致子产品的几何数据量更大。
根据特性4,采用自上而下的策略拆分几何数据。从根IFC实例到叶IFC实例检查几何数据大小阈值λ。当IFC实例的几何数据大小大于λ时,通过从阈值λ中减去不需要分割的子实例的总几何数据大小,将λ传输到其需要分割的子实例中。λ满足需要分割的IFC实例后,将其子实例进行拆分以满足λ。
图9给出了自上而下的数据分割图解。最初,λ=10。由于i21是可分割的,因此λ被其他子元素i22、i23、i32、i33及根IFC实例i11的几何数据大小减去5。随后,i21接收λ=5。类似地,i31中λ=4。由于i31是可分割的IFC实例,因此将其子IFC实例重新组织以满足λ。结果,i31的四个子实例被分到两个数据段中。本实施例采用贪婪策略重新组织了IFC实例。随后,i41、i42和i43被分为一个数据段,而i44在另一数据段中。将属于gp的IFC实例划分为不同的组后,根据每个组中的IFC实例恢复数据段很简单。
本实施例对IFC文件中BIM产品的几何数据分割的过程包括构造异构几何关系模型,在IFC文件中找到所有BIM产品。可以采用两种方法查找所有BIM产品。第一种方法是通过查找IFC实例的类是否继承自IfcProduct,第二种方法是检查IFC实例是否引用了IfcRepresentation实例。然后对每个BIM产品进行几何数据分割。使用自下而上的策略计算Sp和Np,其中Sp和Np分别记录每个IFC实例的几何数据大小和可分割状态。最后根据Sp和Np将Sp>λ的p分段并输出数据段,从而将BIM产品分割为几何数据大小小于λ的BIM产品。
在上述实施例的基础上,本实施例中以所述目标IFC实例为分裂点进行分割,使得分割出的所述目标IFC实例的子IFC实例的大小小于或等于所述预设子阈值与所述目标IFC实例的差值的步骤包括:若所述目标IFC实例分解为其他所述IFC实例,则从所述目标IFC实例分解的其他IFC实例中选择分割的IFC实例,将所述目标IFC实例引用的其他IFC实例继承在分割的IFC实例中,使得分割出的IFC实例小于或等于所述预设子阈值与所述目标IFC实例的差值;若另一个所述IFC实例通过所述目标IFC实例与其他所述IFC实例关联,则从另一个所述IFC实例关联的其他IFC实例中选择分割的IFC实例,将所述目标IFC实例引用的其他IFC实例继承在分割的IFC实例中,使得分割出的IFC实例小于或等于所述预设子阈值与所述目标IFC实例的差值。
具体地,图10给出了分解关系的数据分割的具体示例。如图10所示,IfcShapeRepresentation实例i54与六个IfcRepresentationItem实例i77、i78、i79、i80、i81和i82具有分解关系。i54最多可分为六个部分。在这里,i54分为两部分,分别由i94和i95定义。在该示例中,i94和i95包含相等数量的IFC实例,i94包含i77,i78和i79,而i95包含i80,i81和i82。实际上,可以将i54分为具有不同数量的IFC实例的多个段。由于i54和i20形成引用关系,因此i20被继承并保留在i94和i95中。
图11给出了关联关系的数据分割的具体示例。如图11所示,最初,IfcRepresentationItemItem实例i71通过IfcStyledItem i72在i73和i74中定义了两种类型。IfcStyledItem的i72连接了从i71到i73和i74的关联关系。在示例中,i72被分为两个IfcStyledItem实例i82和i83。i82将i71与i73相关联,而i83将i71与i74相关联。本示例将关联关系分为两个部分。第一部分描述了i71和i73到i82之间的关联关系,第二部分描述了i71和i74到i82之间的关联关系。
尽管无法在IFC实例中拆分引用关系,但每个IFC实例与其他IFC实例的引用关系数量有限。相反,IFC实例可以通过分解或关联关系包含大量IFC实例。因此,分割几何数据时,需要更多关注分解和关联关系。
下面对本实施例提供的几何数据分割方法在三角剖分和渲染过程中的性能进行评估。
在广泛的BIM模型上进行实验,以评估三角剖分和渲染过程。使用九种代表性的BIM模型,大小从2.38M到205.66M,如表1所示。所有BIM模型都是从SchetchUp设计并导出的。因此,在所有9种BIM模型中,所有3D形状都仅组织为一种BIM产品。本实施例将相同的三角测量和可视化工具应用于原始BIM数据和分段BIM数据,以评估性能。所有环境设置相同,算法使用Java实现。
首先使用本实施例中的几何数据分割方法的情况下对三角剖分速度进行评估。具体而言,将原始BIM模型拆分为几个子文件,这些子文件以并行方式分别计算。表2显示了实验研究结果。在不分段的情况下,九种BIM模型的三角剖分时间分别为5.35、8.05、30.50、32.90、41.81、93.34、290.71、345.42和504.23秒。在配备本实施例的几何数据分割方法后,三角剖分时间分别缩短为2.03、2.63、7.78、8.27、9.12、18.65、51.25、62.21和79.51秒。显然,BIM模型越大,完成三角剖分所需的时间就越多。三角剖分速度分别提高2.64、3.06、3.92、3.98、4.58、5.00、5.67、5.57和6.34倍。BIM模型的尺寸越大,使用本实施例提供的几何数据分割方法进行三角剖分的速度提高的越快。在尺寸为205.66M的9#BIM模型中,采用本实施例提供的几何数据分割方法,三角剖分过程最多可加速6.34倍。
表1 9种BIM模型的大小
# |
大小(M) |
1 |
2.38 |
2 |
6.89 |
3 |
20.47 |
4 |
23.00 |
5 |
33.40 |
6 |
60.87 |
7 |
111.32 |
8 |
133.94 |
9 |
205.66 |
表2三角剖分时间对比
# |
原始BIM数据(s) |
分割后的BIM数据(s) |
加速倍数 |
1 |
5.35 |
2.03 |
2.64 |
2 |
8.05 |
2.63 |
3.06 |
3 |
30.50 |
7.78 |
3.92 |
4 |
32.90 |
8.27 |
3.98 |
5 |
41.81 |
9.12 |
4.58 |
6 |
93.34 |
18.65 |
5.00 |
7 |
290.71 |
51.25 |
5.67 |
8 |
346.42 |
62.21 |
5.57 |
9 |
504.23 |
79.51 |
6.34 |
不可否认,某些参数可以影响几何数据分割方案的三角剖分过程,例如三角剖分过程数目κ,几何数据大小的阈值λ。然后,使用本实施例的方案在三角剖分上评估了κ和λ。以6#和9#BIM模型为代表,并给出了评估结果。
首先设置λ=5.0MB,然后将κ从1增加到10,以观察三角剖分时间。显然,κ越大,三角剖分时间越短。这种现象表明,采用并行计算可以提高BIM几何数据的三角剖分效率。还应注意的是,当κ>4时,几乎无法减少三角剖分的时间。这是因为,当κ>4时,CPU完全被三角剖分处理所占用。也就是说,CPU成为单台计算机进行数据处理的瓶颈。在这种情况下,建议将分段数据分配给多台计算机,以提高计算效率。
此外还进行了实验,以检查几何数据大小λ的阈值对本实施例的影响。在9#BIM模型中,λ越大,三角剖分效率越低。这主要是由于较大的λ导致较少的子文件。当λ为5.0、10.0、20.0、30.0和40.0MB时,子文件的数量分别为20、9、5、4和3。显然,子文件数量不足可能会导致CPU使用不完全。在6#BIM模型中,我们观察到,当λ=10.0MB时,效率最高。同样,λ越大,子文件的数量越少,导致三角剖分处理的效率越低。此外还发现,当λ=2.0MB时,三角测量花费的时间比λ=10.0Mbyte时花费更多。这是因为,当λ=2.0MB与λ=10.0MB进行比较时,分割原始BIM文件需要更多的时间。
图12示例了一种电子设备的实体结构示意图,如图12所示,该电子设备可以包括:处理器(processor)121、通信接口(Communications Interface)122、存储器(memory)123和通信总线124,其中,处理器121,通信接口122,存储器123通过通信总线124完成相互间的通信。处理器121可以调用存储器123中的逻辑指令,以执行如下方法:根据IFC文件中各BIM产品的几何数据的IFC实例之间的关系,构建每个BIM产品的异构几何关系模型;计算异构几何关系模型中每个IFC实例包含的几何数据的大小,并根据IFC实例之间的关系对每个IFC实例的可分割状态进行标记;根据异构几何关系模型中每个IFC实例包含的几何数据的大小和每个IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
此外,上述的存储器123中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述各方法实施例所提供的方法,例如包括:根据IFC文件中各BIM产品的几何数据的IFC实例之间的关系,构建每个BIM产品的异构几何关系模型;计算异构几何关系模型中每个IFC实例包含的几何数据的大小,并根据IFC实例之间的关系对每个IFC实例的可分割状态进行标记;根据异构几何关系模型中每个IFC实例包含的几何数据的大小和每个IFC实例的可分割状态,对所述异构几何关系模型中的IFC实例进行分割,使得分割的每部分的大小小于预设总阈值。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。