一种三维模型的高精度优先显示方法与流程

allin2023-02-22  121



1.本发明涉及一种三维可视化的高精度模型优先显示方法,尤其是涉及一种三维模型的高精度优先显示方法。


背景技术:

2.在智慧城市或者cim领域,三维可视化是很常见的一种技术手段,针对三维模型有不同的生产手段,成本不同,精度也不同。根据精度高低,对三维模型定义了7个等级:cim1~cim7,等级越高,模型的精度越高。在一个城市级的三维可视化解决方案里,因为较低等级的模型生产成本较低,一般大面积的场景都会采用低等级模型(cim1~cim2),针对重点区域的场景采用中高等级的模型(cim3~cim4),针对重点的小区或者楼栋一般采用高等级模型(cim5~cim7)。一个综合的城市级三维可视化解决方案里,基本要同时显示不同等级的三维模型。这样就会要求不同等级模型的范围要完美对接,不能缺少,也不能重叠,否则显示效果较差,不能准确支撑智慧城市方案。现在的做法是,治理不同等级的模型时,需要参考其他等级的模型范围,进行裁切、补齐,例如:某个城市全市范围是低等级模型,一个街道是中等级三维模型,叠加显示的时候就需要把这个街道范围以内的低等级模型人工去除掉。如果有一个等级的模型需要二次调整时,其他模型的范围也要手动调整,接上述例子:该城市新增了一个街道的中等级模型,需要把新增街道范围的低等级模型人工去除掉。


技术实现要素:

3.本发明提供了一种三维模型的高精度优先显示方法,解决了高等级模型自动压盖低等级模型进行显示的问题,其技术方案如下所述:一种三维模型的高精度优先显示方法,包括以下步骤:s1:准备三维模型的不同等级的数据,并获取每个等级的三维模型的多边形范围,不同等级的三维模型添加到一个三维场景中;s2:对于不同等级的三维模型,采用递归的算法,从高等级模型向低等级模型层层压盖,直至最低等级的三维模型压盖完成。
4.进一步的,步骤s1中,包括以下步骤:s11:对三维场景的内容创建不同精度的三维模型,并根据精度从低到高将三维模型划分成七个等级,即cim1~cim7;s12:获取每个等级三维模型的多边形范围,将多边形范围的具体数据存到postgresql数据库;s13:将不同等级三维模型添加到同一个三维场景中;s14:确定当前三维场景的最低海拔值,并将最低海拔值存储到postgresql数据库。
5.进一步的,步骤s2中,包括以下步骤:s21:完成最高等级的cim7等级模型压盖次一级cim6等级模型;
s22:将cim7等级模型与cim6等级模型的并集多边形范围,作为cim6等级模型的范围,实现cim6等级模型压盖次一级cim5等级模型;s23:重复步骤s21~s22的压盖操作,将每一个等级压盖后形成的新多边形范围作为结果向下一个等级进行压盖操作,如果不存在某个等级的模型,则跳过该等级的压盖计算,直至cim1等级模型压盖完成。
6.进一步的,步骤s21中,压盖处理包括以下步骤:s211:首先计算cim7等级模型多边形范围与cim6等级模型多边形范围的交集,得出一个交集多边形范围;s212:然后筛选出在交集多边形范围内的所有cim6等级模型;s213:接着将该范围内cim6等级模型中独立的单体化的三维模型进行隐藏;s214:最后将该范围内cim6等级模型中非单体化的三维模型的所有三角面片的高度设为当前三维场景的最低海拔值。
7.进一步的,步骤s22中,计算cim7等级模型多边形范围与cim6等级模型多边形范围的并集,得出一个并集多边形范围,采用图形引擎的取并集函数进行处理。
8.进一步的,在步骤s2完成后,更新三维场景中某个等级的三维模型文件,只需要将新的三维模型更新存到postgresql数据库中的该等级对应的多边形范围,再调用步骤s2,实现不同等级模型范围对接。
9.进一步的,在步骤s2完成后,重新勾选模型显示状态时,确定需要显示的等级的三维模型文件,再调用步骤s2,实现新的三维模型的压盖处理。
10.所述三维模型的高精度优先显示方法,实现了在三维显示页面中不同等级模型同时存在时,高等级模型自动压盖低等级模型。制作每个等级的三维模型时,无需再根据其他等级模型的范围进行裁切;某个等级的模型范围改变时,其他等级的模型也不再需要跟随改变。大大减少人工成本的同时,就可以实现不同等级模型范围完美对接,不缺少,也不重叠。
附图说明
11.图1是所述三维模型的高精度优先显示方法的流程示意图;图2是cim7等级模型向cim6等级模型压盖的示意图;图3是cim6等级模型向cim5等级模型压盖的示意图;图4是高等级模型向低等级模型递归进行压盖的示意图;图5是实施例中城市场景的最终显示示意图。
具体实施方式
12.所述三维模型的高精度优先显示方法,针对独立的单体化的三维模型(例如建筑模型),采用同一范围内的低等级模型隐藏,高等级模型显示的策略;针对成片的非单体化的三维模型(例如地形模型),采用同一范围内的低等级模型所有三角面片(三角面片为计算机图形学专业术语,是图形在显存中的最小单元,类似于物理学中的原子)的高度设为当前城市的最低海拔值,高等级模型正常显示。
13.所述三维模型的高精度优先显示方法,包括以下步骤:
s1:准备三维模型的不同等级的数据,并获取每个等级的三维模型的多边形范围,不同等级的三维模型添加到一个三维场景中;以某实施例进行说明:s11:某实施例中的三维场景是城市场景,对城市内容(包括楼栋、地面)创建不同精度的三维模型,并根据精度从低到高将三维模型划分成七个等级:cim1~cim7;s12:获取每个等级三维模型的多边形(polygon)范围,将多边形(polygon)范围的具体数据存到postgresql数据库;s13:将不同等级三维模型添加到同一个三维场景中,即添加到城市场景,可以使用飞渡科技的dts平台软件中的explorer加载模型,组建城市场景。
14.s14:确定当前城市的最低海拔值,并将最低海拔值存储到postgresql数据库。
15.s2:对于不同等级的三维模型,采用递归的算法,从高等级模型向低等级模型层层压盖,直至最低等级的三维模型压盖完成。具体如下所述:s21:如图2所示,cim7等级模型压盖cim6等级模型,包括以下操作步骤:s211:首先计算cim7等级模型多边形(polygon)范围与cim6等级模型多边形(polygon)范围的交集,得出一个交集多边形(polygon)范围;该步骤可以使用现有图形引擎的取交集函数进行处理;比如该步骤可以使用turf.js中的intersect函数进行处理。
16.s212:然后筛选出在交集多边形(polygon)范围内的所有cim6等级模型;该步骤可以使用现有图形引擎的函数进行处理,该函数能够判定一个模型是否属于一个指定的多边形范围;例如,该步骤可以使用turf.js中的booleancontains函数进行处理,该函数能够判定一个模型是否属于一个指定的多边形范围;s213:接着将该范围内cim6等级模型中独立的单体化的三维模型(例如建筑模型)进行隐藏,该步骤可以使用现有图形引擎的隐藏函数进行处理;例如,该步骤可以使用飞渡科技的dts平台软件中的cloud二次开发api中的tilelayer. hideactor(id, objectid, fn)函数进行处理;s214:最后将该范围内cim6等级模型中非单体化的三维模型(例如地形模型)的所有三角面片的高度设为当前城市的最低海拔值。
17.s22:如图3所示,cim6等级模型压盖cim5等级模型,包括以下操作步骤:s221:首先计算cim7等级模型多边形(polygon)范围与cim6等级模型多边形(polygon)范围的并集,得出一个并集多边形(polygon)范围;该步骤可以使用现有图形引擎的取并集函数进行处理;例如,该步骤可以使用turf.js中的union函数进行处理,可以返回两个多边形范围的并集范围。
18.s222:然后将并集多边形(polygon)范围作为cim6等级模型范围向cim5等级模型范围压盖,具体压盖处理步骤可以重复步骤s21的处理,完成cim6等级模型向cim5等级模型的压盖。
19.s23:如图4所示,重复步骤s21~s22的压盖操作,将每一个等级压盖后形成的新多边形范围作为结果向下一个等级进行压盖操作,如果不存在某个等级的模型,则跳过该等级的压盖计算,直至cim1等级模型压盖完成,最终的城市场景的显示效果如图5所示。
20.s3:每次添加新的三维模型或者重新勾选模型显示状态后,在场景界面上点击“刷新”去触发压盖计算,就可以实现同等级模型范围完美对接,不缺少,也不重叠。
21.实现效果:每次更新场景中某个等级的三维模型文件,只需要更新存到
postgresql数据库中的该等级对应的多边形(polygon)范围即可,然后调用一遍上述交互逻辑,即可实现不同等级模型范围完美对接,不缺少,也不重叠。
22.其中,添加新的三维模型时,根据精度确定新的三维模型的等级,根据其多边形范围,按照步骤s2实现新的三维模型的压盖处理。
23.重新勾选模型显示状态,是指确定是否显示某些等级的三维模型,在选定若干等级的三维模型进行显示后,按照步骤s2实现新的三维模型的压盖处理。
24.所述三维模型的高精度优先显示方法,实现了在三维显示页面中不同等级模型同时存在时,高等级模型自动压盖低等级模型。制作每个等级的三维模型时,无需再根据其他等级模型的范围进行裁切;某个等级的模型范围改变时,其他等级的模型也不再需要跟随改变。大大减少人工成本的同时,就可以实现不同等级模型范围完美对接,不缺少,也不重叠。

技术特征:
1.一种三维模型的高精度优先显示方法,包括以下步骤:s1:准备三维模型的不同等级的数据,并获取每个等级的三维模型的多边形范围,不同等级的三维模型添加到一个三维场景中;s2:对于不同等级的三维模型,采用递归的算法,从高等级模型向低等级模型层层压盖,直至最低等级的三维模型压盖完成。2.根据权利要求1所述的三维模型的高精度优先显示方法,其特征在于:步骤s1中,包括以下步骤:s11:对三维场景的内容创建不同精度的三维模型,并根据精度从低到高将三维模型划分成七个等级,即cim1~cim7;s12:获取每个等级三维模型的多边形范围,将多边形范围的具体数据存到postgresql数据库;s13:将不同等级三维模型添加到同一个三维场景中;s14:确定当前三维场景的最低海拔值,并将最低海拔值存储到postgresql数据库。3.根据权利要求1所述的三维模型的高精度优先显示方法,其特征在于:步骤s2中,包括以下步骤:s21:完成最高等级的cim7等级模型压盖次一级cim6等级模型;s22:将cim7等级模型与cim6等级模型的并集多边形范围,作为cim6等级模型的范围,实现cim6等级模型压盖次一级cim5等级模型;s23:重复步骤s21~s22的压盖操作,将每一个等级压盖后形成的新多边形范围作为结果向下一个等级进行压盖操作,如果不存在某个等级的模型,则跳过该等级的压盖计算,直至cim1等级模型压盖完成。4.根据权利要求3所述的三维模型的高精度优先显示方法,其特征在于:步骤s21中,压盖处理包括以下步骤:s211:首先计算cim7等级模型多边形范围与cim6等级模型多边形范围的交集,得出一个交集多边形范围;s212:然后筛选出在交集多边形范围内的所有cim6等级模型;s213:接着将该范围内cim6等级模型中独立的单体化的三维模型进行隐藏;s214:最后将该范围内cim6等级模型中非单体化的三维模型的所有三角面片的高度设为当前三维场景的最低海拔值。5.根据权利要求3所述的三维模型的高精度优先显示方法,其特征在于:步骤s22中,计算cim7等级模型多边形范围与cim6等级模型多边形范围的并集,得出一个并集多边形范围,采用图形引擎的取并集函数进行处理。6.根据权利要求2所述的三维模型的高精度优先显示方法,其特征在于:在步骤s2完成后,更新三维场景中某个等级的三维模型文件,只需要将新的三维模型更新存到postgresql数据库中的该等级对应的多边形范围,再调用步骤s2,实现不同等级模型范围对接。7.根据权利要求2所述的三维模型的高精度优先显示方法,其特征在于:在步骤s2完成后,重新勾选模型显示状态时,确定需要显示的等级的三维模型文件,再调用步骤s2,实现新的三维模型的压盖处理。

技术总结
本发明提供一种三维模型的高精度优先显示方法,包括以下步骤:S1:准备三维模型的不同等级的数据,并获取每个等级的三维模型的多边形范围,不同等级的三维模型添加到一个三维场景中;S2:对于不同等级的三维模型,采用递归的算法,从高等级模型向低等级模型层层压盖,直至最低等级的三维模型压盖完成。所述三维模型的高精度优先显示方法,实现了在三维显示页面中不同等级模型同时存在时,高等级模型自动压盖低等级模型,大大减少人工成本的同时,就可以实现不同等级模型范围完美对接,不缺少,也不重叠。不重叠。不重叠。


技术研发人员:宋彬 杨柳忠 朱旭平 黄亚昌
受保护的技术使用者:北京飞渡科技有限公司
技术研发日:2022.06.02
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-5274.html

最新回复(0)