一种基于八叉树的三维建筑物模型LOD方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010267603.3
(22)申请日 2020.04.08
(71)申请人 速度时空信息科技股份有限公司
地址 210042 江苏省南京市玄武区玄武大
道699号-22号8幢
(72)发明人 李俊 范建永 朱必亮 徐忠建 
(74)专利代理机构 南京正联知识产权代理有限
公司 32243
代理人 王素琴
(51)Int.Cl.
G06T  17/00(2006.01)
(54)发明名称
一种基于八叉树的三维建筑物模型LOD方法
(57)摘要
本发明提出了一种基于八叉树的三维建筑
物模型LOD方法,具体包括如下步骤:S1读取三维
建筑物模型数据;S2设置八叉树的树深Depth参
数;S3按层次分别合并八叉树的叶节点外包围
盒,建立粗网格块;S4合并各个层次的构件的粗
网格块;S5三角化;S6计算粗网格块的法向量;S7
合并简化构件形成粗网格块的建筑物模型;S8内
部顶点刪除;S9设置材质或纹理;S10输出三维建
筑物LOD模型。基于八叉树的三维建筑物模型LOD
方法不受复杂的限制,具有较强的稳健性,生成
的LOD模型能较好保持原始建筑物模型的主要结
构特征,具有较高的相似性,即使在分辨率较低
时,
也能较好的保持其结构特征。权利要求书2页  说明书6页  附图4页CN 111161411 A 2020.05.15
C N  111161411
A
1.一种基于八叉树的三维建筑物模型LOD方法,其特征在于,具体包括如下步骤:
S1:读取三维建筑物模型数据,并将源模型作为最高级的模型;
S2:设置八叉树的树深Depth参数,分别对建筑物模型的组成部分构建深度为Depth的稀疏八叉树;
S3:按层次分别合并八叉树的叶节点外包围盒BoundingBox,建立粗网格块;
S4:合并各个层次的构件的粗网格块;设定叶节点包围盒BoundingBox相邻的最小阈值,按照Z轴、X轴、Y轴对所有叶节点的包围盒BoundingBox进行合并,组成当前层次的构件的粗网格块;
S5:三角化,即对所述步骤S4所生成的粗网格块的每个网格块的六个面进行三角化,方法是按照左手坐标系顺时针方向依次将网格立方体的每个面分成两个三角面;
S6:计算粗网格块的法向量,计算所述步骤S5生成的粗网格块的各个网格块的顶点法向量;法向量取值为向上、向下、向前、向后、向左、向右的一种;
S7:合并简化构件形成粗网格块的建筑物模型,对所述步骤S6的粗网格块进行合并,并利用所述步骤S4对合并的粗网格块的建筑物模型进行合并;
S7:内部顶点刪除,细节结构的内部顶点将被逐个删除;
S9:设置材质或纹理,如果原始建筑物模型没有纹理和材质,则使用默认材质代替;否则计算整个建筑物的纹理和材质,并将整个纹理和材质拼接成一张纹理;
S10:输出三维建筑物LOD模型。
2.根据权利要求1所述的基于八叉树的三维建筑物模型LOD方法,其特征在于,所述步骤S4根据一定阈值依次按照Z轴、X轴、Y轴对所有叶节点的包围盒BoundingBox进行合并,组成当前层次的构件的粗网格块;按照Z轴合并,循环取两个相邻网格块,计算下面网格块Z的最大值与上面网格块Z的最小值的差值,如果这个差值小于设定的阈值,则将上面网格块Z 的最大值赋给下面网格块Z的最大值,并删除上面的网格块,直至所有的网格块Z的差值都不满足以上条件;按照X轴合并,循环取两个相邻网格块,计算前面网格块X的最大值与后面网格块X的最小值的差值,如果这个差值小于设定的阈值,则将后面网格
块X的最大值赋给前面网格块X的最大值,并删除后面的网格块,直至所有的网格块X的差值都不满足以上条件;按照Y轴合并,循环取两个相邻网格块,计算左边网格块Y的最大值与右边网格块Y的最小值的差值,如果这个差值小于设定的阈值,则将右边网格块Y的最大值赋给左网格块Y的最大值,并删除右的网格块,直至所有的网格块Y的差值都不满足以上条件。
3.根据权利要求1所述的基于八叉树的三维建筑物模型LOD方法,其特征在于,所述步骤S6中计算粗网格块的法向量,法向量的取值范围为向上、向下、向前、向后、向左、向右分别对应:
4.根据权利要求1所述的基于八叉树的三维建筑物模型LOD方法,其特征在于,在所述步骤S8中,对内部顶点刪除时,邻接顶点可看作是内部顶点,删除算法采用QEM模型简化算法。
5.根据权利要求1所述的基于八叉树的三维建筑物模型LOD方法,其特征在于,在所述步骤S9中,设置材质或纹理,纹理包含下、上、前、后、左、右,并将所有纹理拼接成一张纹理;整个纹理的底部颜
值为(188.0f/255.0f,188.0f/255.0f,222.0f/255.0f),设置视口坐标、原点屏幕左下角、向右为X轴、向上Y轴,以及相机所在的位置、看物体的方向以及近截面,并分别在不同的坐标下,将原始三维模型的上TOP、下BOTTOM、前FRONT、后REAR、左LEFT、右RIGHT面分别投影在相同的平面上,相对应的行列值分别是(0, 0)、(0, 1) 、(1, 0) 、(1, 1) 、( 2, 0) 、(2, 1)。
6.根据权利要求5所述的基于八叉树的三维建筑物模型LOD方法,其特征在于,所述步骤S9中,计算纹理坐标,对所述步骤S8中的网格块计算其顶点的纹理坐标,计算坐标需要各个面相对应的行列值, TOP计算方法如下:
BOTTOM的计算方法如下:
FRONT的计算方法如下:
REAR的计算方法如下:
LEFT的计算方法如下:
RIGHT的计算方法如下:
其中Del:整个模型的最大的边长,c_x,c_y:整个模型的中心点的x、y坐标,v.x:顶点的x坐标,v.y:顶点的y坐标,(s,t) :该顶点的纹理坐标。
一种基于八叉树的三维建筑物模型LOD方法
技术领域
[0001]本发明涉及一种三维建筑物模型处理技术领域,特别涉及一种基于八叉树的三维建筑物模型LOD方法。
背景技术
[0002]随着“智慧城市”概念的提出,把海量的三维建筑数据应用于城市地理信息的管理已是大势所趋。相对于城市的其它类型的数据,三维建筑物模型具有更大的数据量和更复杂的几何结构特征。一方面数据量大不利于数据传输和实时渲染。另一方面,复杂的结构特征包含一些细节,模型达到一定的量级之后,
一些细节将难以被用户感知到。基于八叉树的三维建筑物模型LOD方法核心就是解决以上两个方面的问题,关键是对模型进行简化降低模型的复杂度,减少模型的数据量。
[0003]近年来,在上述技术研究的基础上,国内外学者开始研究三维建筑物模型的简化和多层次细节分层技术,并提出了建筑物模型的L O D构建方法,如中国专利文献201110317931.0发明提出一种三维模型渐进网格数据组织方法,利用三维模型的原始网格生成渐进网格数据并进行多尺度分层组织的方法实现三维模型的无冗余、多尺度增量式的数据组织,有利于复杂三维模型的快速传输和高效可视化;中国专利文献CN201210090628.6解决现有的基于二维图像的建筑物模型构建方法中存在的顶面结构不够细致而导致构建精度不高的问题;中国专利文献 CN201810893994.2从已获得的参数化三维模型中删除与模型结构无关的非关键信息;将删除了所述非关键信息的参数化三维模型进行几何参数多边形化处理,得到网格模型;基于无损压缩编码算法对所述网格模型进行编码压缩,得到轻量化模型,此方法未涉及LOD方面的内容。OGC提出的CityGML标准将三维建筑物模型分为5个层次,可没有提供构建LOD的方法和工具,导致有标准,没有构建符合此标准的工具,导致标准的推行不尽人意。
[0004]因此,有必要开发一种构建三维建筑模型LOD模型的方法,能够不受建筑物复杂的限制,具有较强的稳健性,生成的LOD模型能较好保持原始建筑物模型的主要结构特征,具有较高的相似性,即使在分辨率较低时,也能较好的保持其结构特征,并能提高实时渲染的效率。
发明内容
[0005]本发明要解决的技术问题是提供一种基于八叉树的三维建筑物模型LOD方法,利用八叉树叶节点的合并和分裂,一是,能够对三维建筑物模型进行简化,以减少低层次模型的数据量,二是,生成的LOD模型能较好保持原始建筑物模型的主要结构特征,保持与原始模型的相似性,以提高辨识度。
[0006]为了解决上述技术问题,本发明采用的技术方案是:该基于八叉树的三维建筑物模型LOD方法,具体包括如下步骤:
(1)读取三维建筑物模型数据,并将源模型作为最高级的模型;
(2)设置八叉树的树深Depth参数,分别对建筑物模型的组成部分(构件)构建深度为Depth的稀疏八叉树;
(3)按层次分别合并八叉树的叶节点外包围盒BoundingBox,建立粗网格块;
(4)合并各个层次的构件的粗网格块;设定叶节点包围盒BoundingBox相邻的最小阈值,按照Z轴、X轴、Y轴对所有叶节点的包围盒BoundingBox进行合并,组成当前层次的构件的粗网格块;
(5)三角化,即对所述步骤(4)所生成的粗网格块的每个网格块的六个面进行三角化,方法是按照左手坐标系依次将网格立方体的每个面分成两个三角面;
(6)计算粗网格块的法向量,计算所述步骤(5)生成的粗网格块的各个网格块的顶点法向量;法向量取值为向上、向下、向前、向后、向左、向右的一种;
(7)合并简化构件形成粗网格块的建筑物模型,对所述步骤(6)的粗网格块进行合并,并利用所述步骤(4)对合并的粗网格块的建筑物模型进行合并;
(8)内部顶点刪除,为了有效保持模型表面格网的局部拓扑,细节结构的内部顶点将被逐个删除;
(9)设置材质或纹理,如果源建筑物模型没有纹理和材质,则使用默认材质代替;否则计算整个建筑物的纹理和材质,并将整个纹理和材质拼接成一张纹理,以减少存储空间;
(10)输出三维建筑物LOD模型,以便于其它软件进行可视化。
[0007]采用上述技术方案,借助稀疏八叉树模型对三维建筑物模型构建LOD,可以在高层次的保证建筑物模型的细节,如以原始模型最为最高级的模型;根据设置的八叉树的树深,可以控制LOD的层级树,达到最低级最大化的简化模型;对构成模型的各个构件分别进行稀疏八叉树的剖分,可以尽量保证复杂建筑物模型的相似度,增强粗模型的辨识度;对于合并后的模型的内部点删除,可以删除模型内部的顶点,减少模型的数据量,提高数据的渲染效率和传输和IO效率;三维模型纹理合并成一张纹理,不但可以减少模型的数据量,同样可以提高渲染的效率。
[0008]本发明的基于八叉树的三维建筑物模型LOD方法不受复杂的限制,具有较强的稳健性,生成的LOD模型能较好保持原始建筑物模型的主要结构特征,具有较高的相似性,即使在分辨率较低时,也能较好的保持其结构特征。
[0009]作为本发明的优选技术方案,所述步骤(4)根据一定阈值依次按照Z轴、X轴、Y轴对所有叶节点的包围盒BoundingBox进行合并,组成当前层次的构件的粗网格块;按照Z轴合并,循环取两个相邻网格块,计算下面网格块Z的最大值与上面网格块Z的最小值的差值,如果这个差值小于设定的阈值,则将上面网格块Z的最大值赋给下面网格块Z的最大值,并删除上面的网格块,直至所有的网格块Z的差值都不满足以上条件;按照X轴合并,循环取两个相邻网格块,计算前面网格块X的最大值与后面网格块X的最小值的差值,如果这个差值小于设定的阈值,则将后面网格块X的最大值赋给前面网格块X的最大值,并删除后面的网格块,直至所有的网格块X的差值都不满足以上条件;按照Y轴合并,循环取两个相邻网格块,计算左边网格块Y的最大值与右边网格块Y的最小值的差值,如果这个差值小于设定的阈值,则将右边网格块Y的最大值赋给左网格块Y的最大值,并删除右的网格块,直至所有的网格块Y的差值都不满足以上条件。
[0010]作为本发明的优选技术方案,所述步骤(6)中计算粗网格块的法向量,法向量的取

本文发布于:2024-09-20 16:23:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/423426.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   建筑物   网格   方法   纹理   八叉树
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议