一种基于三角面片个数划分的三维金字塔构建方法技术

技术编号:30271859 阅读:17 留言:0更新日期:2021-10-09 21:28
本发明专利技术公开了一种基于三角面片个数划分的三维金字塔构建方法,步骤为:S1:分别设置单节点最大三角面片个数FaceCount参数和单构件最大三角面片个数meshFaceCount参数;S2:读取三维模型的数据,解析三维模型的几何、纹理和属性信息;S3:设置二叉树的最大深度,将读取的三维模型设置为二叉树的根节点;S4:确定节点分裂的坐标轴方向,对二叉树进行分裂;S5:遍历二叉树,重新计算二叉树每个节点外包围盒;合并三维模型中相同纹理的构件,并构建构件集合;S6:遍历二叉树节点,计算当前节点三角面片化简参数,并进行三角面化简;S7:对化简后的三角面片纹理坐标进行重新计算;S8:输出模型金字塔数据。字塔数据。字塔数据。

【技术实现步骤摘要】
一种基于三角面片个数划分的三维金字塔构建方法


[0001]本专利技术涉及三维模型索引创建
,具体涉及一种基于三角面片个数划分的三维金字塔构建方法。

技术介绍

[0002]三维GIS已经成为当今乃至未来GIS技术的主要标志性内容之一,它突破了空间信息在二维地图平面中单调表现的束缚,为各行各业以及人们的日常生活提供了更有效的辅助决策支持。随着“数字孪生”概念深入人心,在智慧城市、智慧园区、智慧工厂等行业应用中,对城市级大场景三维模型展示的需求越来越强烈。
[0003]海量二维 GIS 数据以及瓦片式地形景观数据的高效组织管理技术已经相对成熟,而高效、一体化地组织与管理复杂的海量的大场景的三维空间模型数据一直是研究的前沿难点问题,也是三维GIS从局部范围示范应用到城市级综合应用面临的主要技术挑战。由于模型数据量大、三维空间对象几何形状各异、空间分布稀疏不均,构建高效的三维空间索引成为难题。一方面,由于城市级大场景三维模型数据量巨大,很难通过化简算法,在不影响客户端展示效果的前提下,将数据量减少至可控范围;另一方面,由于三维空间对象空间分布稀疏不均,采用基于空间范围划分的方式构建的空间索引,在空间分布密集的区域会产生相对大的模型切片,影响网络传输和前端渲染效率。基于三角面片个数划分的三维金字塔构建方法,在构建模型层次树的过程中,依据模型三角面片个数以构件为单位进行划分,使得模型构件在树的各个节点中均匀分布,不会出现基于空间范围划分方式中的局部大切片现象;通过设置单瓦片最大三角面片个数,采用边距和距离加权相结合的边折叠算法对构件三角面片进行简化,限制单节点三角面片数量,满足客户端大场景三维模型展示的需求。
[0004]近年来,国内外学者在海量三维空间数据高效组织和管理领域做了大量研究,如中国专利文献CN200910063373.2专利技术提出顾及多细节层次的三维r树空间索引方法,采用可扩展多层次功能的三维R树索引结构,在节点分裂过程中,通过k

medoids算法,选择插入目标后,对从已选叶节点上溯根节点路径上各层节点的影响最小,如重叠体积,覆盖体积增长最小的节点作为插入节点,解决了R树索引空间重叠的问题,此方法本质上是基于空间范围的三维空间索引方法,不能解决模型构件空间分布不均匀对索引效率影响的问题;CN200910063371.3专利技术提出基于数据内容的三维空间数据自适应多级缓存系统,该系统的三维空间数据多级缓存采用缓存池的设计思想,通过基于数据内容的三维空间数据分类方法,将三维空间数据在缓存进行分类组织、分池管理;其中包括位于客户端的三维空间数据绘制缓存(一级缓存)、三维空间数据内存缓存(二级缓存)、三维空间数据文件缓存(三级缓存)、以及位于数据库服务器端的三维空间数据引擎服务缓存(四级缓存)。四级缓存分别由各自的缓存管理模块来控制,并通过多级缓存自适应管理模块统一管理客户端和数据库服务器端的多级缓存,自适应对各级缓存进行调整,提高了大规模三维空间数据动态调度的效率,此方法是对模型文件进行缓存,没有利用空间索引。
[0005]因此,有必要开发一种三维金字塔构建方法,能够保证空间索引效率不会受模型构件空间分布的影响,又能很好的生成层次细节模型,利用客户端渲染调度机制,满足大场景三维模型展示的需求。

技术实现思路

[0006]本专利技术主要解决的问题是提供一种基于三角面片个数划分的三维金字塔构建方法,利用模型三角面片个数信息,以构件为单位,对模型层次树的节点进行分裂,可以保证相同层级的节点大小基本相等,不会出现局部大切片现象。
[0007]为了解决上述技术问题,本专利技术采用的技术方案是:该基于三角面片个数划分的三维金字塔构建方法,具体包括以下步骤:S1:分别设置单节点最大三角面片个数FaceCount参数和单构件最大三角面片个数meshFaceCount参数;S2:读取三维模型的数据,解析三维模型的几何、纹理和属性信息;S3:设置二叉树的最大深度Depth,并将步骤S2中读取的三维模型设置为二叉树的根节点;S4:确定节点分裂的坐标轴方向,对二叉树进行分裂,直至二叉树深度大于等于Depth或者所有叶子节点的三角面片个数都小于FaceCount参数;S5:遍历二叉树,重新计算二叉树每个节点外包围盒BoundingBox;对三维模型中相同纹理的构件进行合并,并构建构件集合;S6:遍历二叉树节点,计算当前节点三角面片化简参数,采用边折叠算法对节点进行三角面化简;S7:根据三角面片化简前后的数据,对化简后的三角面片纹理坐标进行重新计算;S8:输出模型金字塔数据。
[0008]采用上述技术方案,借助基于三角面片个数划分的三维金字塔构建方法构建模型三维空间索引,可以避免出现局部大瓦片现象,通过设置节点最大三角面片个数,动态调节节点三角面数量,减小网络数据传输延迟和客户端渲染的计算量。在海量三维模型展示场景下,由于计算机GPU性能有限,无法做到全域模型的精细化展示,可以根据采用场景计算机的GPU算力,动态调整节点三角面片个数,采用边折叠算法对模型进行三角面片化简,达到既充分利用GPU算力,又满足全域模型展示的需求的效果;通过设置二叉树的最大深度,结合单节点三角面片个数,达到自动调节树的深度的效果,如设置二叉树的最大深度为5,在二叉树深度达到5之前所有叶子节点满足节点三角面片个数小于设置的单节点最大三角面片个数,则在树深度达到5之前就会停止分裂,最终树的深度也不等于5;通过模型三角面片个数对二叉树进行分裂,不再依赖于空间范围,在模型空间密集度比较高的区域不会出现非常大的切片,保证模型构件在各个节点中均匀分布。
[0009]作为本专利技术的优选技术方案,所述步骤S1中设置单节点最大三角面片个数FaceCount参数作为二叉树单节点三角面片个数上限值;设置单个构件最大三角面片个数meshFaceCount参数作为单个构件三角面片个数上限值;所述步骤S2中解析三维模型的纹理结构并保存纹理信息到构件的material字段,计算根节点的外包盒子BoundingBox。
[0010]作为本专利技术的优选技术方案,所述步骤S4具体为:
S41:动态计算二叉树分裂方向,比较模型在在X轴、Y轴、Z轴方向的坐标范围,根据构件中心点坐标,取坐标范围差最大的坐标轴作为节点分裂的坐标轴方向;S42:将三维模型的构件根据构件中心点坐标沿步骤S41确定的坐标轴方向由小到大进行排序,遍历排序后三维模型构件,先将三维模型构件加入当前节点的left子树,当节点左子树构件三角面片个数之和大于当前节点总三角面片个数的一半时停止,将剩余的构件加入当到前节点的right子树;S43:根据步骤S1中设置的参数,以步骤S41中确定的节点分裂的坐标轴方向,对二叉树进行分裂,迭代执行步骤S41~42,直至二叉树深度大于等于Depth或者所有叶子节点的三角面片个数都小于FaceCount参数。
[0011]作为本专利技术的优选技术方案,所述步骤S5具体为:遍历二叉树,重新计算二叉树每个节点外包围盒BoundingBox,再根据纹理对构件进行合并本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于三角面片个数划分的三维金字塔构建方法,其特征在于,具体包括以下步骤:S1:分别设置单节点最大三角面片个数FaceCount参数和单构件最大三角面片个数meshFaceCount参数;S2:读取三维模型的数据,解析三维模型的几何、纹理和属性信息;S3:设置二叉树的最大深度Depth,并将步骤S2中读取的三维模型设置为二叉树的根节点;S4:确定节点分裂的坐标轴方向,对二叉树进行分裂,直至二叉树深度大于等于Depth或者所有叶子节点的三角面片个数都小于FaceCount参数;S5:遍历二叉树,重新计算二叉树每个节点外包围盒BoundingBox;对三维模型中相同纹理的构件进行合并,并构建构件集合;S6:遍历二叉树节点,计算当前节点三角面片化简参数,采用边折叠算法对节点进行三角面化简;S7:根据三角面片化简前后的数据,对化简后的三角面片纹理坐标进行重新计算;S8:输出模型金字塔数据。2.根据权利要求1所述的基于三角面片个数划分的三维金字塔构建方法,其特征在于,所述步骤S1中设置单节点最大三角面片个数FaceCount参数作为二叉树单节点三角面片个数上限值;设置单个构件最大三角面片个数meshFaceCount参数作为单个构件三角面片个数上限值;所述步骤S2中解析三维模型的纹理结构并保存纹理信息到构件的material字段,计算根节点的外包盒子BoundingBox。3.根据权利要求2所述的基于三角面片个数划分的三维金字塔构建方法,其特征在于,所述步骤S4具体为:S41:动态计算二叉树分裂方向,比较模型在在X轴、Y轴、Z轴方向的坐标范围,根据构件中心点坐标,取坐标范围差最大的坐标轴作为节点分裂的坐标轴方向;S42:将三维模型的构件根据构件中心点坐标沿步骤S41确定的坐标轴方向由小到大进行排序,遍历排序后三维模型构件,先将三维模型构件加入当前节点的left子树,当节点左子树构件三角面片个数之和大于当前节点总三角面片个数的一半时停止,将剩余的构件加入当到前节点的right子树;S43:根据步骤S1中设置的参数,以步骤S41中确定的节点分裂的坐标轴方向,对二叉树进行分裂,迭代执行步骤S41~42,直至二叉树深度大于等于Depth或者所有叶子节点的三角面片个数都小于FaceCount参数。4.根据权利要求3所述的所述的基于三角面片个数划分的三维金字塔构建方法,其特征在于,所述步骤S5具体为:遍历二叉树,重新计算二叉树每个节点外包围盒BoundingBox,再根据纹理对构件进行合并,遍历二叉树节点,构建构件集合Map<material,meshinfo>,其中material为纹理材质,meshinfo为构件集合,遍历集合Map<material,meshinfo>,对相同的material对应的构件进行合并,若当前构件三角面片个数大于设定值meshFaceCount参数,则停止当前合并,新建空的构件,进入下一轮合并。5.根据权利要求3所述的所述的基于三角面片个数划分的三维金字塔构建方法,其特征在于,所述步骤S41中动态计算二叉树分裂方向的方法,获取当前二叉树节点在各个方向
上的坐标范围差dim,具体计算方法为dim=max

min,其中max为坐标轴方向对应坐标的最大值,min为坐标轴方向对应坐标的最小值;若X轴方向对应的dim值最大,则当前节点按X轴方向进行分裂;若Y轴方向对应的dim值最大,则当前节点按Y轴方向进行分裂;若Z轴方向对应的dim值最大,则当前节点按照Z轴方向进行分裂。6.根据权利要求5所述的所述的基于三角面片个数划分的三维金字塔构建方法,其特征在于,所述步骤S43二叉树节点的分裂方法具体为:获...

【专利技术属性】
技术研发人员:徐云和姬炜李华栋
申请(专利权)人:速度时空信息科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1