1.本发明属于计算机图形学与虚拟地理环境领域,具体涉及一种结构层级的三维建筑物渐进式编码与传输方法及系统。
背景技术:2.地理信息系统(geographic information system,gis)以地球的表层空间的物体作为研究对象,是对其数据进行采集、储存、管理、运算、分析、显示的完整过程系统。随着人们对gis可视化需求的增加,三维gis得到了快速发展,并逐渐应用于城市规划、地籍测量和环境监测中。近些年,由于数据共享需求的增加和互联网技术的发展,3d webgis的得到了广泛使用。这些应用,如google地球,cesium等,允许用户使用web浏览器访问三维场景,实现了十分真实的可视化效果,具有很强的开放性和灵活性,且成本较低。目前,这些应用涉及军事、教育、商业等多个领域。
3.三维建筑物是数字城市的重要组成,也是三维gis中重要的可视化要素。与地形、树木这类虚拟地理环境要素相比,三维建筑物模型具有很强的人造模型属性和丰富的细节信息,而为了表达其海量的细节信息,建筑物模型通常具有很高的数据量。而对于城市级别的三维建筑物模型,其数据量更是海量的。虽然计算机硬件处理能力和网络状况都得到了大幅提高,然而三维可视化应用仍难以应对海量三维数据带来的低效的网络传输和不流畅的图形渲染的两大问题。学者们针对以上两个问题,提出了多细节层次技术(levels of detail,lod)。该方法通过将三维模型简化到不同的详细程度,按需提供给用户不同层级的模型,即近处提供详细模型,远处提供粗略模型。lod思想被广泛使用于各大三维应用中,例如cesium三维引擎推出了3d tiles开放规范,用于规范3d地理空间数据集的网络传输,在实际应用中产生了较好的效果。开放地理空间信息联盟(open geospatial consortium,ogc)于2005年提出了citygml标准,将三维建筑物模型由粗到细划分为5个层次,然而多层次的模型数据之间没有关联,当在网络上传输时,大量的冗余数据带来了重复传输问题,浪费了网络传输带宽。
4.为了解决这种离散形式的lod带来的数据冗余问题,学者们进一步提出了渐进式传输方法。该方法的主要思路是将模型逐步简化为一个基础网格,同时记录简化掉的数据作为增量,即渐进式编码模型。在传输和场景细化的过程中,先传输基础网格用于浏览,再按需或按固定顺序传输增量来细化场景,这个过程由原来的使用精细模型替换粗糙模型变成了在粗糙模型上不断追加细节,极大的减少了离散lod的数据重复传输问题。渐进式简化、编码、传输和重建的思想,已被广泛应用游戏、vr等领域。其中比较著名的是hoppe于1996年提出的渐进网格(progressive mesh,pm),它能够把任意拓扑网格表示为一种高效、无损且具有连续分辨率的流编码,该算法通过不断追加增量流细化场景,使用户逐步的接收场景细节,避免了过长的等待时间引起的不友好的交互体验。hoppe进一步提出了视点依赖的渐进式网格,对视觉显著性高的区域进行更大程度的细化。在漫游的过程中,那些尚未访问的场景无需加载增量,这不仅减轻了网络负担,也节省了本地储存的成本。传统的渐进
式编码方法依赖模型简化操作,这些简化方法通常以基础的几何图元(点、边、三角形)为操作单元对数据量进行缩减,例如顶点聚类,边折叠等。对于三维建筑物模型,通常是使用组件逐步建立起来的,且相邻部分存在严格的规则。相比于自由曲面模型,三维建筑物模型具有很强的内部约束关系:几何约束(例如平行、共面和垂直)和拓扑约束(例如组件之间的邻接)。这些渐进式传输方法常被用于地形这类具有连续表面的模型,当把应用到建筑物模型上时可能会破坏其几何和拓扑约束,引起了不真实的外观变形、结构的认知误差和z
‑
fighting问题,例如图1中建筑物的两种约束被破坏,引发了视觉瑕疵。然而针对这些具有复杂组件的建筑物,保持的其内部特征的渐进式编码算法相对较少。如何保持建筑物内部的几何和拓扑特征,对三维建筑物模型进行渐进式编码和传输,需要进一步开展研究。
技术实现要素:5.发明目的:针对保持三维建筑物的内部几何拓扑特征的渐进式编码和传输,本发明公开了一种结构层级的三维建筑物渐进式编码与传输方法及系统,当传输建筑物模型时,有效的降低了传输负荷,并在各个简化率下,在建筑物外观上给用户一个更好的一致性的体验。
6.技术方案:为了实现上述发明目的,本发明提供的一种结构层级的三维建筑物渐进式编码与传输方法将建筑物分解为三种基本结构,根据结构连接关系构造结构拓扑图(stg)。在stg的指导下,将结构包装为最小的增量传输单元(传输节点),建筑物被编码为传输节点。当请求数据时,综合考虑视点位置、节点的朝向和视觉重要度来选择期望的节点,并响应给客户端实现场景的细化。具体包括以下步骤:
7.(1)将建筑物网格分割为组件,将表面积或体积大小满足设定条件的组件提取为主要组件,剩余组件为独立结构;
8.(2)对主要组件进行平面聚类,根据平面之间的连接关系构建属性邻接图(aag),并在aag中的进行图搜索,基于子图间的凹凸连接关系提取主结构和附属结构;
9.(3)计算主结构、独立结构和附属结构间的连接关系,构造结构拓扑图(stg);
10.(4)基于结构拓扑图,将结构包装为最小的传输节点对三维建筑物模型进行编码,并计算视觉重要度和朝向作为用于控制传输的节点属性;
11.(5)在客户端请求数据时,综合考虑视点位置、节点朝向和视觉重要度来选择传输节点,并响应客户端。
12.进一步地,所述步骤(1)中具体包括:
13.(1.1)遍历模型网格内所有三角形,建立三角形集合tset;
14.(1.2)从tset中取出一个未访问的三角形t,将t设置为已访问,将其放入队列q中,并创建一个新的组件c;
15.(1.3)从q中取出三角形t,将其添加到组件c中,遍历t的所有未访问相邻三角形,将其设置为已访问并将其放入队列q,重复(1.3),直到q中没有三角形为止;
16.(1.4)重复(1.2)和(1.3),直到tset中的所有三角形都被访问;至此建筑物已被分割为组件表示;
17.(1.5)计算每个组件的方向包围盒(obb)的体积v
i
和表面积s
j
;
18.(1.6)根据体积大小对组件进行降序排序,从大到小的顺序对体积v
i
进行累加运
算得到v
sum
;当v
sum
≥v
total
×
t1时,停止累加,得到组件集合i;
19.(1.7)根据表面积大小对组件进行降序排序,从大到小的顺序对表面积s
j
进行累加运算得到s
sum
;当s
sum
≥s
total
×
t2时,停止累加,得到组件集合j;
20.(1.8)得到b={i∪j}为主要组件,其余组件为独立结构,其中,v
total
为建筑物组件的体积累加和,s
total
为建筑物组件的表面积累加和,t1和t2为0到1的阈值,可根据建筑物组件的破碎程度自由调整。
21.进一步地,步骤(2)中具体包括:
22.(2.1)使用贪婪聚类算法将主要组件的三角形聚类成平面;
23.(2.2)计算平面之间的连接角度,当角度大于180度时,存在凸连接,当角度小于等于180度时,存在凹连接,根据连接关系构建属性邻接图aag;
24.(2.3)在aag中,对于一个子图g与其邻居子图n,如果的g内部都为凹连接,且g与n的所有连接为凸,或g的内部都为凸连接,且g与n的所有连接为凹,那么认为g是简单附属结构;如果n内平面数量为1,且g与n所有连接都相同,认为g为复杂附属结构;在aag中首先提取简单附属结构并移除,将迭代进行此过程直到所有的简单附属结构都被提取,然后提取复杂附属结构;
25.(2.4)对移除附属结构后产生的孔洞进行三角化填补,产生孔洞三角网,并生成临时纹理来保持孔洞三角网的纹理;
26.(2.5)将已经提取并移除了附属结构的主要组件作为主结构,将建筑物表达为主结构,独立结构和附属结构。
27.进一步地,所述步骤(2.3)中当附属结构的平面的数量小于等于3时,或当简单附属结构的obb体积大于主要组件的一半时,不提取该附属结构。
28.进一步地,所述步骤(3)中具体包括:
29.(3.1)为所有结构构建轴对齐包围盒(aabb);
30.(3.2)对所有结构两两进行aabb包围盒相交判断,如果相交,则计算其是否存在相交的三角形,如存在,判定两个结构相连;
31.(3.3)判断是否存在未与任何结构相连的独立结构,如果存在,将独立结构沿着重心进行膨胀;
32.(3.4)重复(3.2)、(3.3)直到不存在未与任何结构相连的独立结构;
33.(3.5)根据连接关系构建结构拓扑图。
34.进一步地,所述步骤(4)中利用提取的结构,将三维建筑物模型编码为如下四种传输节点:主节点、叶子节点、组合节点和孔洞三角网节点;其中主节点为所有主结构合并的一个传输节点,叶子节点是stg中只有一个邻居的节点或移除叶子节点后只有一个邻居的节点,组合节点为stg中移除所有叶子节点,且主节点标记为不可连通的节点后的每一个子图中所有结构的组合,孔洞三角网节点为对移除附属结构后产生的孔洞进行填补产生的孔洞三角网对应的节点。
35.进一步地,所述步骤(4)中仅计算叶子节点和组合节点的视觉重要度和朝向;所述视觉重要度为节点的obb体积;所述朝向的计算方法为:标记与主节点直接相邻的传输节点为第二层节点,并将主节点设置为不可连接的节点,计算第二层节点的朝向,并将第二层节点的朝向传递赋值给直接或间接相邻的所有节点。
36.进一步地,所述步骤(5)中选择传输节点的方法具体包括:
37.(5.1)在服务器上为每个建筑物模型维持一个数据结构,记录建筑物id,建筑物的中心位置,主节点和六个有序列表;每个列表分别存储在六个方向上可见的节点,列表中的节点以视觉重要度大小降序组织;
38.(5.2)首次加载场景时,服务器发送所有建筑物的主节点及其关联的孔洞三角网节点;
39.(5.3)在场景中漫游时,服务器首先执行空间查询来查找在视野中的建筑物,根据每个建筑物的中心位置计算视点和每个建筑模型之间的距离,根据距离计算需要在每个建筑模型中加载的传输节点的最小视觉重要度,基于视点相对于建筑模型的位置的计算建筑物的可见朝向;
40.(5.4)根据最小视觉重要度,从每个建筑物的可见列表中查找可见的节点,然后基于视觉重要度大小的降序组织节点;如果尚未发送子节点的父节点,则在子节点的前面插入父节点以确保节点顺序。
41.进一步地,在服务器上创建哈希集合来保存已发送的传输节点,避免重复的传输;在客户端维护一个传输节点列表(tnl),记录已添加到场景的传输节点,当新的传输节点到达时,如果新节点相关联的孔洞三角网节点存在于tnl中,则移除孔洞三角网节点。
42.基于相同的发明构思,本发明提供的一种结构层级的三维建筑物渐进式编码与传输系统,包括服务端和客户端,所述客户端用于发送当前的视点信息,并接收服务端发送的传输节点数据,添加到场景中进行渲染;所述服务端包括至少一台计算设备,所述计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的结构层级的三维建筑物渐进式编码与传输方法。
43.有益效果:与传统技术方案对比,本发明提取了建筑物的主结构、独立结构和附属结构三种基本结构,在编码三维建筑物过程中,通过以结构层次的传输节点为单元进行编码,保持了三维建筑物的几何约束和拓扑约束,避免了不真实的外观变形和认知歧义。此外,采用的视点依赖的策略大幅降低了系统传输负荷,提升了用户的浏览体验。
附图说明
44.图1为使用边作为编码单元,在传输不同数据量下的建筑物的外观比较图,其中(a)示意几何约束的破坏(b)示意拓扑约束的破坏。
45.图2为本发明实施例的技术路线图。
46.图3为本发明实施例中建筑物网格分割结果图,其中(a)原始的三维建筑物模型(b)网格分割结果(可见楼梯有丰富的细节,并由大量组件组成)。
47.图4为本发明实施例中平面贪婪聚类和附属结构提取的结果图,其中(a)主要组件(b)附属结构提取结果。
48.图5为本发明实施例中从aag中提取结构示意图,其中(a)附属结构(左侧的六棱柱是一个简单附附属结构,右侧是一个复杂附属结构)(b)aag(左侧框内对应简单附属结构,右侧框内对应于复杂附属结构)。
49.图6为本发明实施例中构建传输节点示意图,其中(a)三维建筑物模型的结构(b)stg(在stg中,结构被包装为不同的传输节点)。
50.图7为本发明实施例中传输节点的构建结果图,其中(a)结构提取结果(b)传输节点的构建结果。
51.图8为本发明实施例中服务器获取传输节点的流程图。
52.图9为模型1的结构提取结果和传输节点构建结果图,其中(a)原始模型(b)独立结构提取结果(c)附属结构提取结果(d)传输节点构建结果。
53.图10为模型2的结构提取结果和传输节点构建结果图,其中(a)原始模型(b)独立结构提取结果(c)附属结构提取结果(d)传输节点构建结果。
54.图11为模型1通过接收增量从低等级模型细化为高等级模型过程图,其中(a)几何结构的变化(b)模型1接收各类型的传输节点。
55.图12为模型2通过接收增量从低等级模型细化为高等级模型过程图,其中(a)几何结构的变化(b)模型2接收各类型的传输节点。
56.图13为本发明与qem算法在模型3上的对比结果图,其中(a)纹理比较结果(b)几何比较结果。
57.图14为城市场景效果图。
58.图15为城市场景的顶点数据量统计对比图。
具体实施方式
59.下面结合附图以及具体实施方式对本发明的技术方案作进一步的介绍。
60.如图2所示,本发明实施例公开了一种结构层级的三维建筑物渐进式编码和传输方法。首先读取三维建筑物模型,使用广度优先搜索算法,将三维建筑物模型分割为网格间相互不连续的组件,依据体积和表面积提取主要组件和独立结构。对主要组件进行平面聚类,将具有相近法向量的三角形归为一类,根据平面的凹凸连接关系构建拓扑属性邻接图,定义了两种规则提出了附属结构和主结构。将建筑物模型分解为三种基本的结构表示,计算结构间的连接关系,构建结构拓扑图。在此基础上,基于图搜索算法构建四种传输增量(传输节点),计算传输节点的属性,并重新组织传输节点。根据建筑物编码结果,在实时传输时,依据视点信息查询视野内建筑物,获取可见的传输节点来响应客户端。下面对各个步骤进行详细说明。
61.1.将建筑物网格分割为组件,根据表面积与体积大小提取主要组件和独立结构。
62.从抽象的角度来看,建筑模型可以被视为不同类型的组件的组合。在本发明中,组件和结构的定义是不同的。组件是一个独立的三角形网格,不包含明确的语义信息,例如图3中的雷达接收器。结构是表达特定语义的一组三角形。结构即可以直接由组件构成,也可以嵌入到组件上的一组平面。组件可以直接表达结构,例如图3的(b)中的空调,也可以包括多个结构,例如墙体和窗户,两个结构一起形成主要组件。本发明首先将建筑物分段为多个组件,然后从组件中提取结构。使用广度优先搜索算法分割建筑物得到组件,依据组件的表面积和体积,提取主要组件。具体组件分割和主要组件的提取方法为:
63.遍历模型网格内所有三角形,建立三角形集合tset;从tset中取出一个未访问的三角形t,将t设置为已访问,将其放入队列q中,并创建一个新的组件c;从q中取出三角形t,将其添加到组件c中,遍历t的所有未访问相邻三角形,将其设置为已访问并将其放入队列q,重复本步骤,直到q中没有三角形为止;重复上述步骤,直到tset中的所有三角形都被访
design,2010.42(12):p.1178
‑
1188])对孔洞进行三角化填补来生成临时网格,为孔洞三角网。为了保持孔洞三角网的纹理,使用投影法生成临时纹理(具体可参考文献3[du,z.,et al.,texture optimization methodology for 3d building based on super face.geomatics and information science of wuhan university,2014.39(12):p.1401
‑
1405])。此步骤将生成具有纹理坐标的局部三角网,在产生传输附属结构的之前,以孔洞三角网代替附属结构。由于使用了纹理,此填补过程极大的保持了建筑物的外观。
[0069]
3.计算结构间的连接关系,构造结构拓扑图(stg)。
[0070]
至此,建筑物被分为:主结构、独立结构、附属结构。为了将结构进一步包装为传输增量,创建了结构拓扑关系图(stg),其关键工作是判断结构之间的相交关系。由于建筑物的结构数量大,结构内部三角形数量多,直接进行相交测试将是一项十分耗时的任务。所以设计了一种方法来快速计算结构之间的连接关系,方法同时考虑到可能存在的建模误差,例如未与任何结构相交的独立结构。
[0071]
首先为所有结构构建aabb包围盒。然后对所有结构两两进行aabb包围盒相交判断,如果相交,则计算其是否存在相交的三角形,如存在,判定两个结构相交。判断图中是否存在未与任何结构相连的独立结构,如果存在,将结构沿着重心放大1.1倍,即膨胀操作(具体可参考文献[zhao,j.,et al.,mathematical morphology
‑
based generalization of complex 3d building models incorporating semantic relationships.2012.68:p.95
‑
111]),重复此步骤,直到stg中不存在未与任何结构相连的独立结构。根据连接关系构建结构拓扑图。
[0072]
4.基于结构拓扑图提取传输节点,并计算用于控制传输的节点属性,依据属性组织传输节点。
[0073]
传输节点是模型完成一次细化的所传输的最小增量单元,其由结构或结构的组合体构成。依据结构的连接关系和属性定义了四种传输节点:主节点,叶子节点,组合节点,孔洞三角网节点。
[0074]
(1)主节点
[0075]
主节点是在传输过程中最先传输的内容,可以被理解成最粗略的模型,由之前得到的主结构构成,如图6中的s1。将所有主结构合并为一个传输节点,为主节点。
[0076]
(2)叶子节点
[0077]
叶子节点是指单独表达语义,仅受到传输顺序制约的节点,如图6中的s2,s6。这类节点通常只有一个邻居,可直接从附属结构和独立结构构建,它们将按照顺序依次进行传输。首先,在结构拓扑图中搜索只有一个邻居的节点,将其标记为叶子节点,将邻居节点标记为父亲,并将其从结构拓扑图中移除,重复此步骤直到没有新的叶子节点。
[0078]
(3)组合节点
[0079]
组合节点是指组合表达语义,受到整体表达制约的节点。它们常由独立结构或独立结构和附属结构混合组成,例如楼梯,水塔等具有复杂结构特征的组合体,如图6中的s7,s8,s9,s10,s11,对这些独立结构采取整体传输的策略。为提取组合节点,首先,将主节点标记成不可连通的节点,以避免在遍历节点时将主节点标记成组合节点。然后,进行广度优先搜索(bfs),将每一个连通子图构建成一个组合节点,并合并子图所有节点的数据,记录邻居为父亲节点。
[0080]
(4)孔洞三角网节点
[0081]
孔洞三角网节点是指移除附属结构后的填充的孔洞三角网。它随着孔洞三角网节点的父节点进行传输。
[0082]
在建筑物实时传输的过程中,要优先传输视觉上更加显著的传输节点。为了衡量传输节点的视觉显著程度,定义了传输节点可见性。传输节点可见性与两个因素有关,视觉重要度和朝向。
[0083]
因为主节点和孔洞三角网节点有固定的传输规则,所以只需要计算叶子节点和组合节点的视觉重要度。通常情况下,传输节点的视觉重要度由其体积表示。体积越大,视觉重要度越高。为了方便计算,直接使用传输节点的obb体积作为视觉重要度。具有较高视觉重要度的传输节点将被优先传输。
[0084]
对于建筑物而言,结构往往附于主节点的各个表面,所以该表面的朝向决定了表面连接的传输节点是否可见。如果此表面朝向与视线夹角介于(
‑
90
°
,90
°
),将无法看到此表面和表面上的传输节点,这种因素被称为传输节点的朝向可见性。为了进一步降低传输的数据量,仅加载朝向可见的传输节点。依据这个原则计算所有节点的朝向属性,本发明定义传输节点共有六个朝向,即上,下,左,右,前,后。主节点起到表达建筑外观的主要作用,所以其节点可见性为全方位可见。将直接与主节点相连的传输节点标记为第二层节点,首先计算第二层节点的视点朝向属性。计算方法如下:首先获取该传输节点t与主节点相交的平面集f={f1,f2
……
},这些平面集来自网格平面贪婪聚类后的结果。然后计算平面f1法向量与正x轴单位向量的乘积m,如果m大于d,那么认为f在正x轴可见。其中d为阈值,本发明d取值0.5。判断平面集f内所有平面在六个朝向的可见性,并将可见结果赋值给t。将t的朝向可见性传递赋值给与t直接相连和间接相连的所有传输节点,从而计算所有传输节点的朝向可见性。为了实现此目标,首先将主节点标记为不可连通节点,以每个第二层节点为起点开始广度优先搜索,将第二层节点的朝向属性赋值给遍历到的所有节点。
[0085]
为了加快在该过程中查找需要传输的节点,在服务端为每一栋建筑物维护了一个数据结构来重新组织传输节点顺序,记录建筑物id,建筑物中心位置,主节点,六张有顺序的表,其中每张表中储存六个方位上可见的节点,其节点在每个列表中按照视觉重要度降序组织。
[0086][0087][0088]
5.构建传输节点的请求与实时传输方法。
[0089]
在实时传输阶段,客户端将视点信息传输至服务端,服务端根据视点,获取当前场景中需要加载的建筑物传输节点,并有序传输到客户端,客户端接收数据并进行渲染,从而实现建筑物结构层级的渐进细化。传统方法接收数据后对模型细化的单元通常是点和边,对三角形网格需要进行额外的重建工作,而本发明以结构为细化基本单元,渲染数据是直接添加到场景中的,避免了对三角网格的重建,所以该重建方法与传统方法相比更加高效。
[0090]
服务器获取需要加载的传输节点的过程如图8所示。当第一次加载场景时,服务器将传输所有建筑物的主节点及其关联的孔洞三角网节点。在场景中漫游时,服务器首先执行空间查询来查询在视野中的建筑物。然后,根据每个建筑物的中心位置计算视点和每个建筑模型之间的距离。根据距离计算需要在每个建筑模型中加载的传输节点的最小视觉重要度,以及基于视点相对于建筑模型的位置,计算每个建筑物模型的可见朝向。根据最小视觉重要度,使用二分查找算法从每个建筑物的可见有序列表中找到需要传输的节点,然后根据视觉重要度大小的降序组织节点。如果尚未发送子节点的父节点,则在子节点的前面插入父节点以确保在子节点之前发送父节点。在服务器上创建哈希集合以保存已发送的传输节点,避免重复传输。
[0091]
在客户端维护一个传输节点列表(tnl),记录已添加到场景的传输节点。当新的传输节点到达时,如果新节点相关联的孔洞三角网节点存在于tnl中,则将移除孔洞三角网节点。
[0092]
为了验证方法的可行性,开发了一套原型系统,该系统包括三部分,第一,预处理部分,读取模型,提取结构并创建传输节点,将传输节点数据存储到磁盘文件上。第二,服务
端传输响应部分,依据接收的视点信息有序发送传输节点数据,第三,客户端部分,客户端发送当前的视点信息,并接收服务端发送的传输节点数据,添加到场景中进行渲染。实验基于osg(openscenegraph)三维引擎实现三维场景的渲染,实验使用的平台是64位的windows10操作系统,处理器为intel core i7
‑
7700hq,显卡为nvidia geforce 940mx,内存为16gb。本发明从两个方面讨论结果:首先,选择了两种不同类型的经典模型展示本发明的结构提取结果,另外通过在模型3上与传统算法进行比较,以不同的简化率来展示模型3的外观。其次,统计了本发明在大型城市场景中数据加载情况。表1统计了原型系统中使用的模型数据信息。
[0093]
表1建筑物模型统计信息
[0094][0095]
(1)结构提取合传输节点构建结构
[0096]
为了证明算法在独立结构和附属结构上的提取能力,实验使用了两个模型,一个具有丰富的独立结构(模型1),另一个具有丰富的附属结构(模型2),两个模型均使用3ds max制作而成。
[0097]
图9展示了模型1的提取结果,该三维建筑为美国纽约市某街区的建筑物,在图9的(b)中,该模型拥有大量的独立结构,这些结构体积较小,起到装饰的作用。在图9中(d)的结果展示了传输节点的构建结果,建筑物包含大量的组合节点,如信号塔,广告牌等。
[0098]
图10展示模型2的提取效果,该模型具有丰富的附属结构。图10中(b)表明,该建筑物几乎没有独立结构,图10中(c)展示了附属结构的提取结果,其中简单结构主要为窗户,窗户是现代建筑物上最常见的结构,复杂的现代建筑物上几乎布满了窗户。本发明也提取了部分复杂附属结构,如楼梯和天台的组合。图10中(d)表明,附属结构大多被构建成了叶子节点。
[0099]
在图11的(a)和图12的(a)中,模型通过接收传输节点来进行细化。在这个过程中,模型的外观并没有出现不真实的外观变形。在图11的(b)和图12的(b)中,孔洞三角网节点临时替代了低等级建筑模型中的附属结构,保持了模型的主要主观。当接收到关联的传输节点时,孔洞三角网节点被关联节点替换
[0100]
(2)与传统算法对比
[0101]
现有的三维模型的渐进编码通常基于一种简化操作。qem作为经典的简化误差度量算法,常被用于简化各类三维模型,并实现了较好的效果。为了对比建筑物模型的渐进编
码结构,从而选择了qem进行比较。
[0102]
在图13的(a)中,当模型3被qem算法简化到44%时,楼梯被部分简化了,但是本发明将楼梯构造为组合节点整体传输。当模型3被qem简化为11%时,模型3的墙体被过度简化,而墙体通常占有较大视觉面积,具有很高的视觉重要度,基于边折叠的简化难以维持几何约束关系,例如破坏了窗户和墙体的平行关系,同时容易将墙体的三角形简化为重叠的三角形,导致产生闪烁现象(z
‑
fighting问题)
[5]
。而本发明避免了对墙体这类主结构的过度简化。仅使用54%的数据,就恢复了可见方位的全部细节。
[0103]
(3)效率分析
[0104]
在网络带宽固定的情况下,三维建筑物模型的传输时间主要受传输数据总量的影响。本发明使用累计传输的顶点数量作为衡量传输数据总量的指标。在城市场景中进行漫游,如图14所示,使用本发明加载了场景的全部数据,并实时统计场景中的顶点数量。
[0105]
如图15所示,计算了使用离散lod的情况下,场景中的顶点数量。其中五个层次的离散lod的简化率分别为80%,60%,40%,20%,0%,由于离散lod的不同等级之间模型没有关联,大量数据被重复传输。本发明在加载模型全部数据时略高于模型的总数据量,这是因为本发明中使用了孔洞三角网节点,其数据是冗余的。实验证明,本场景的冗余量为6.5%,满足大规模场景的渐进式传输的需求。
[0106]
基于相同的发明构思,本发明实施例公开的一种结构层级的三维建筑物渐进式编码与传输系统,包括服务端和客户端,所述客户端用于发送当前的视点信息,并接收服务端发送的传输节点数据,添加到场景中进行渲染;所述服务端包括至少一台计算设备,所述计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的结构层级的三维建筑物渐进式编码与传输方法。