发明内容
本发明的目的是提供一种三维建筑模型自动分层方法,实现了在建筑模型的基础上实现自动分层且还能够还原原始的建筑模型,解决了实现智慧城市三维可视化中单层楼层抽离观察高成本的难题。
本发明提供的技术方案如下:
本发明提供了一种三维建筑模型自动分层方法,包括步骤:
S1,基于原始三维建筑模型,逐一加载原始三角形网格的三角形的三个顶点坐标及其对应的顶点属性信息;
S2,依次求取切割平面与所述三角形的三条边的交点;取用被所述切割平面切割形成正负空间的其一空间的切割三角形网格,所述交点形成所述切割三角形网格的新顶点;给所述切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息;其中,被不同切割平面切割所取用的切割三角形网格同位于正空间或负空间;
S3,重新组织所述切割三角形网格的所有顶点以形成切割三角形,并输出到切割后的三角形网格中形成新三维建筑模型,所述新三维建筑模型沿楼层高度堆叠。
优选地,步骤S3之后,还包括步骤:
S4,抽取与楼层对应的所述新三维建筑模型,使该新三维建筑模型单独显示。
优选地,步骤S3之后,还包括步骤:
S5,给每一所述新三维建筑模型赋予ID,所述ID与楼层关联。
优选地,被所述切割平面切割形成正负空间的另一空间的丢弃三角形网格被丢弃。
优选地,所述给所述切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息具体包括步骤:
所述新顶点的连续性属性信息根据线性插值法基于与该所述新顶点对应的顶点的所述顶点属性信息获取;
所述新顶点的离散型属性信息直接从原始三角形网格的三角形拷贝;
所述切割三角形网格中因所述新顶点形成的新三角形的离散型属性信息直接从原始三角形网格的三角形和顶点拷贝。
优选地,所述依次求取切割平面与所述三角形的三条边的交点具体包括步骤:
分别获取同一所述三角形的任意两个顶点到切割平面的矢量距离,所述矢量距离由切割平面所对应的四维向量与该两个顶点中每一顶点的顶点坐标的向量内积得到;
若该两个顶点的矢量距离的向量内积大于零,则表明该两个顶点连接形成的边与切割平面无交点,并进行标识;
若该两个顶点的矢量距离的向量内积小于零,则表明该两个顶点连接形成的边与切割平面有交点。
优选地,多个所述切割平面相互平行,且每一所述新三维建筑模型被平行的两个切割平面切割形成,所述两个切割平面包括第一切割平面和第二切割平面。
优选地,步骤S2具体包括步骤:
依次求取第一切割平面与所述三角形的三条边的第一交点,并取用被所述第一切割平面切割形成正负空间的其一空间的第一切割三角形网格;
所述第一交点形成所述第一切割三角形网格的新顶点;给所述第一切割三角形网格中因其新顶点形成的新三角形、其新顶点分别赋予与之对应的属性信息;
依次求取第二切割平面与所述第一切割三角形网格的所述三角形的三条边的第二交点,取用被所述第二切割平面切割形成正负空间的其一空间的第二切割三角形网格;其中,所述第一切割三角形网格和所述第二切割三角形网格同位于正空间或负空间;
所述第二交点形成所述第二切割三角形网格的新顶点;给所述第一切割三角形网格中因其新顶点形成的新三角形、其新顶点分别赋予与之对应的属性信息。
优选地,步骤S2具体包括步骤:
依次求取第一切割平面与所述三角形的三条边的第一交点,并取用被所述第一切割平面切割形成正负空间的其一空间的第一切割三角形网格;
依次求取第二切割平面与所述第一切割三角形网格的所述三角形的三条边的第二交点,取用被所述第二切割平面切割形成正负空间的其一空间的第二切割三角形网格;其中,所述第一切割三角形网格和所述第二切割三角形网格同位于正空间或负空间;
所述第一交点、所述第二交点形成所述第二切割三角形网格的新顶点;给所述第二切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息。
本发明提供的一种三维建筑模型自动分层方法,能够带来以下至少一种有益效果:
1、实现了三维建筑模型自动分层的同时还能百分之百还原为原始的建筑模型,在分割与建筑还原的过程中,原始建筑模型的连续性属性信息(外观,如颜色、纹理坐标、材质,以及法向等)以及离散型属性信息(如消防、水电、缆通等)均不丢失,从而保证了在智慧城市三维可视化中实现了建筑模型自动分层,无需像现有技术需要分别将每一层建筑做成单独的模型,从而节省了成本,实现项目的批量化运用。
2、通过抽取(即抽屉式查看)对应楼层的三维建筑模型,从而便于单独观察该楼层内外部结构(连续性属性信息和离散型属性信息),由于还原性优异,其展示效果清晰且良好。
3、通过对每一楼层所对应的三维建筑模型进行ID编号,从而便于查看人员之间获取其所抽取出来的楼层是哪一层,对应性良好,便于使用,提高用户体验感和满足其不同需求。
4、通过保留有用三角形网格,丢掉无用三角形网格,使得最终显示的三维建筑模型为需要展示的部分,且丢掉的部分将形成相邻两层之间的间隔标识,观感更优,且便于抽取对应楼层。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中的只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。
在本发明的一种实施例中,如图1所示,一种三维建筑模型自动分层方法,包括步骤:
S1,基于原始三维建筑模型,逐一加载原始三角形网格的三角形的三个顶点坐标及其对应的顶点属性信息;
S2,依次求取切割平面与所述三角形的三条边的交点;取用被所述切割平面切割形成正负空间的其一空间的切割三角形网格,所述交点形成所述切割三角形网格的新顶点;给所述切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息;其中,被不同切割平面切割所取用的切割三角形网格同位于正空间或负空间;
S3,重新组织所述切割三角形网格的所有顶点以形成切割三角形,并输出到切割后的三角形网格中形成新三维建筑模型,所述新三维建筑模型沿楼层高度堆叠。
本实施例中,通过对新三维建筑模型的新顶点以及因新顶点所形成的新三角形赋予与之对应的原始三维建筑模型的属性信息(包括连续性属性信息和离散型属性信息),而新三维建筑模型中的其他三角形和顶点(除去新顶点和新三角形以外)因其直接从原始三维建筑模型切割所得,将自行携带对应的属性信息;从而实现了三维建筑模型自动分层的同时还能百分之百还原为原始的建筑模型,在分割与建筑还原的过程中,原始建筑模型的连续性属性信息(外观,如颜色、纹理坐标、材质,以及法向等)以及离散型属性信息(如消防、水电、缆通等)均不丢失,从而保证了在智慧城市三维可视化中实现了建筑模型自动分层,无需像现有技术需要分别将每一层建筑做成单独的模型,从而节省了成本,实现项目的批量化运用。
在本发明的另一实施例中,基于但不限于上述实施例,如图2所示,步骤S3之后,还包括步骤:
S4,抽取与楼层对应的所述新三维建筑模型,使该新三维建筑模型单独显示。
本实施例中,根据查看需求可抽取不同楼层对应的新三维建筑模型,从而单独进行显示,非常便捷且实用,可单独观察该楼层内外部结构,且其展示效果清晰且良好。
在本发明的另一实施例中,基于但不限于上述实施例,如图2所示,步骤S3之后,步骤S4之前还包括步骤:
S5,给每一所述新三维建筑模型赋予ID,所述ID与楼层关联。
本实施例中,在切割过程中,对应每一楼层对应的新三维建筑模型进行ID编号,从而可通过ID直接得知其对应具体哪一楼层,根据需要直接抽取即可,楼层与新三维建筑模型的一一对应关系大大简化了抽取的高效性。
示例性的,如图3所示,完整楼栋的原始三维建筑模型的ID为UID3664,该楼层为5层,经过本发明进行自动分层后被分为5层,其沿楼层高度由上往下依次为:临时层ID:UID3664-5,临时层ID:UID3664-4,临时层ID:UID3664-3,临时层ID:UID3664-2,临时层ID:UID3664-1;当形成新三维建筑模型时,其每一层对应有ID,此时,根据ID直接抽取(即抽屉模式)需要查看的楼层即可,非常便捷且实用。值得说明的是,当本发明可分别对每一楼层单独进行切割时,也可当对整栋楼进行一次性切割时,也可根据需要进行切割所需要查看的楼层,具体以实际需要为准,在不偏离本发明的技术构思的情况下,均属于本发明的保护范围。如图4所示,为本发明应用于一具体三维建筑模型时抽取后所展示的效果图,当然,在实际应用中,因其色彩或者结构件的设计不同,其显示的结果可以为黑白色或彩色。
在本发明的另一实施例中,基于但不限于上述实施例,被所述切割平面切割形成正负空间的另一空间的丢弃三角形网格被丢弃。
本实施例中,丢弃三角形网格和切割三角形网格所在正负空间属性刚好相关,即当切割三角形网格位于正空间时,则丢弃三角形网格位于负空间;反之,当切割三角形网格位于负空间时,则丢弃三角形网格位于正空间。
优选地,多个所述切割平面相互平行,且每一所述新三维建筑模型被平行的两个切割平面切割形成,所述两个切割平面包括第一切割平面和第二切割平面。
在实际应用中,在切割开始时,要确定分层所用的切割平面(S:ax+by+cz=d)(由于为分层用,因此所有的切割平面应平行或近似平行),切割某一层楼层时优选两个切割平面,每个切割平面都有正空间(ax+by+cz-d>0)和负空间(ax+by+cz-d<0),我们切割的结果优选取在正空间的三角形网格时,则丢弃负空间的三角形网格,那么两个切割平面正空间的三角形网格就是我们需要的切割部分(即切割三角形网格),可以进行位移(抽取)操作。关于切割平面的确认,可根据原始三维浇筑模型的数据进行确认,由于切割平面相互平行,在进行分层时,用于形成切割三角形网格的两个切割平面之间的间距(即d的取值)可以楼层的高度和/或层高作为参考,而a、b、c的大小以原始三维浇筑模型的基准面作为参考,由于取值方式为本领域技术人员所知,这里不再赘述。
在本发明的另一实施例中,基于上述实施例,步骤S2具体包括步骤:
依次求取第一切割平面与所述三角形的三条边的第一交点,并取用被所述第一切割平面切割形成正负空间的其一空间的第一切割三角形网格;
所述第一交点形成所述第一切割三角形网格的新顶点;给所述第一切割三角形网格中因其新顶点形成的新三角形、其新顶点分别赋予与之对应的属性信息;
依次求取第二切割平面与所述第一切割三角形网格的所述三角形的三条边的第二交点,取用被所述第二切割平面切割形成正负空间的其一空间的第二切割三角形网格;其中,所述第一切割三角形网格和所述第二切割三角形网格同位于正空间或负空间;
所述第二交点形成所述第二切割三角形网格的新顶点;给所述第一切割三角形网格中因其新顶点形成的新三角形、其新顶点分别赋予与之对应的属性信息。
在本发明的另一实施例中,与上述实施例不同的是,步骤S2具体包括步骤:
依次求取第一切割平面与所述三角形的三条边的第一交点,并取用被所述第一切割平面切割形成正负空间的其一空间的第一切割三角形网格;
依次求取第二切割平面与所述第一切割三角形网格的所述三角形的三条边的第二交点,取用被所述第二切割平面切割形成正负空间的其一空间的第二切割三角形网格;其中,所述第一切割三角形网格和所述第二切割三角形网格同位于正空间或负空间;
所述第一交点、所述第二交点形成所述第二切割三角形网格的新顶点;给所述第二切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息。
在本发明的另一实施例中,基于但不限于上述实施例,所述给所述切割三角形网格中因所述新顶点形成的新三角形、所述新顶点分别赋予与之对应的属性信息具体包括步骤:
所述新顶点的连续性属性信息根据线性插值法基于与该所述新顶点对应的顶点的所述顶点属性信息获取;
所述新顶点的离散型属性信息直接从原始三角形网格的三角形拷贝;
所述切割三角形网格中因所述新顶点形成的新三角形的离散型属性信息直接从原始三角形网格的三角形和顶点拷贝。
在本发明的另一实施例中,基于但不限于上述实施例,所述依次求取切割平面与所述三角形的三条边的交点具体包括步骤:
分别获取同一所述三角形的任意两个顶点到切割平面的矢量距离,所述矢量距离由切割平面所对应的四维向量与该两个顶点中每一顶点的顶点坐标的向量内积得到;
若该两个顶点的矢量距离的向量内积大于零,则表明该两个顶点连接形成的边与切割平面无交点,并进行标识;
若该两个顶点的矢量距离的向量内积小于零,则表明该两个顶点连接形成的边与切割平面有交点。
在实际应用中,对于不同切割面所形成的新顶点以及因该新顶点所形成的新三角形(新三角形中至少一个顶点为新顶点,其他的则为原始顶点),关于新顶点和新三角形的属性信息的获取可为切割完成后再进行获取;也可为每一切割平面切割完成后便获取一次;也可根据需要针对性的对切割平面进行分组,每一组切割平面切割完成后在对其形成的新顶点和新三角形进行属性信息获取。
示例性的,如图5和6所示,原始三维建筑模型由8个顶点{ V0,V1,V2,V3,V4,V5,V6,V7}的原始三角形网格构成,该原始三角形网格的三角形为{V0,V1,V2;V2,V3,V0;V3,V7,V0;V7,V3,V6;V1,V4,V2;V4,V5,V2},纹理坐标uv为{uv0, uv1, uv2, uv3, uv4, uv5,uv6, uv7},法线n’{n’0,n’1,n’2,n’3,n’4,n’5,n’6,n’7},颜色c为{c0,c1,c2,c3,c4,c5,c6,c7},第一切割平面S1:ax+bx+cz=d,第一切割平面S1用四维向量n表示为:S1:n(a,b,c,-d);第一切割平面S1:ax+bx+cz=d’,第二切割平面S2用四维向量n’’表示为:S2:n’’(a,b,c,-d’)。由于所有的切割平面切割过程相同,为了简化,现只对第一切割平面S1的切割过程做具体描述。
具体如下步骤:
step1:逐个输入(即加载)原始三角形网格的三角形的三个顶点坐标{V0,V1,V2}、{V2,V3,V0}、{V3,V7,V0}、{V7,V3,V6}、{V1,V4,V2}、{V4,V5,V2}以及对应的顶点属性信息,如上述的纹理坐标、颜色、法向等具有的所有连续性属性信息;
step2:依次求取第一切割平面S1与三角形三条边的交点{J0,J1,J2};
值得说明是,在实际应用中,当无交点时设置为non标志,如图5所示,在求取第一切割平面S1与三角形{V0,V1,V2}的交点时,因其只有两个交点,则其交点可表示为{J1,non,J2},表示第一切割平面S1与边V1-V2(即顶点V1和V2连接所形成的边)无交点;与边V0-V1(即顶点V0和V1连接所形成的边)以及边V2-V0(即顶点V0和V2连接所形成的边)有交点J1以及J2。在求取第一切割平面S1与三角形{ V7,V3,V6}的交点时,因没有交点,则其两者的交点可表示为{ non, non, non },依次求取所有的三角形的交点后形成交点集,即{J0,J1,J2}。
step3:依据step2的交点的情况{J0,J1,J2},取第一切割平面S正空间的所有顶点,重新组织切割后的三角形,并输出到切割后的三角网格中。如图5所示,被第一切割平面S1切割后处于正空间的新三角形有{J1,V2,J0 },{J2,V1,V2},{V2,J1,J2};被第二切割平面切割后处于正空间的新三角形有{V1,J3,J4},{J4,J5,V2},{V1,J4,V2},这些新三角形的连续性属性信息和离散型属性信息则依据step2进行插值与拷贝,连同新三角形的顶点一齐输出到切割后的三角网格中。
在step2中,求取交点的具体步骤以第一切割平面S1与三角形{V0,V1,V2}的其中一交点J 2为例进行说明,具体步骤如下:
如图6所示,V0和V1分别代表图5中的三角形{V0,V1,V2}的边V0-V1的两个顶点,第一切割平面S1用四维向量n表示:S1:n(a,b,c,-d),边V0-V1与第一切割平面S1的交点为J2,其中顶点V0到S1的矢量距离为d0,顶点V1到S1的矢量距离为d1。其中,
d0=V0*n,d1=V1*n,符号*表示向量内积。
如果d0*d1>0,则表示第一切割平面S1与边V0-V1无交点,被标识为non;
如果d0*d1<0,则表示第一切割平面S1与边V0-V1有交点,存在交点J2。
由图5和6可知,边V0-V1与第一切割平面S1的存在交点J2。
取线段长度比例t=|d0|/(|d0|+|d1|),根据相似三角形性质,则交点J2计算如下:
J2=V0*(1-t)+V1*t
同时,对于在交点J2处连续性属性信息(外观,如纹理坐标、法向和颜色等)也可得知:
纹理坐标uv=uv0*(1-t)+uv1*t
法向n=n’0*(1-t)+n’1*t
对于交点J2(即新顶点J2)以及因交点J2所形成的新三角形的离散型属性信息,则直接从原始三角形网格的三角形或者顶点中拷贝到新的三角形和新顶点中,无需计算。
值得说明的是,上述示例中的切割三角形网格均由新三角形构成。当然,在实际应用中,也存在切割三角形网格不仅包括新三角形也包含有原有三角形,但应均属于本发明的保护范围。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。