本文作者:kaifamei

海量三维模型的单体化渲染方法、存储介质及电子设备与流程

更新时间:2024-11-15 16:42:50 0条评论

海量三维模型的单体化渲染方法、存储介质及电子设备与流程



1.本发明涉及三维建模技术与三维可视化技术,具体地,涉及一种海量三维模型的单体化渲染方法、存储介质及电子设备。


背景技术:

2.随着数字孪生技术的发展,智慧城市建设以城市全要素数字化、可视化和精细化管理为目标,致力于构建高精度三维场景。而精细化三维场景往往需要展示海量三维模型,包括建筑、路灯、井盖、行道树等,如何优化三维模型,提升场景可视化渲染能力,保证场景高性能运行已经成为智慧城市建设的重要工作。
3.目前,为了优化包含海量要素的三维场景,主要通过模型合并、模型顶点简化、模型纹理合并等方法减少三维框架渲染的次数或者模型本身的体量。其中,对于结构简单的三维模型,如路灯、井盖、垃圾桶等,模型顶点简化和模型纹理合并的方法收效甚微,而将模型合并会出现难以对单个模型进行点选的问题。
4.申请号为cn201711494536.3公开了一种支持单模型交互的三维模型合并方法,将合并前的原始模型对象保留在内存,同时创建用于检索原始三维模型对象的索引数据结构,通过索引查询原始模型后,将其加载到三维场景中。针对海量三维构件模型,将模型合并后再加载能有效减少渲染框架的渲染次数,显著提升可视化性能。但现有方案将原模型保留在内存中,无疑增加了内存的消耗;通过索引查询原有模型,并没有满足用户通过点击交互查询的需求;此外,通过将目标三维模型对象叠加在合并后的三维模型对象之上,达到单体模型交互的效果,容易出现因模型面片距离过近而产生闪面的情况。


技术实现要素:

5.针对现有技术中存在的问题,本发明提供了一种海量三维模型的单体化渲染方法、存储介质及电子设备,在保证高性能加载海量三维构件模型的同时支持单体点选。
6.为实现上述目的,本发明采用如下技术方案:一种海量三维模型的单体化渲染方法,具体包括如下步骤:步骤1、收集某场景下所有同类型构件的二维gis数据,并通过二维gis数据与构件的预制件模型构建构件模型,将所有的构件模型按顺序合并,形成载入三维场景的合并模型mergedmodel;步骤2、通过鼠标点击选择一个待单体化渲染的构件模型,获取鼠标点击的屏幕位置,通过射线拾取获得合并模型mergedmodel上的最近相交面,得到所述最近相交面的索引;步骤3、根据预制件模型的面片数和所述最近相交面的索引,求取最近相交面对应的构件模型在合并模型mergedmodel中的索引;步骤4、根据最近相交面对应的构件模型在合并模型mergedmodel中的索引在二维gis数据中查询对应构件模型的业务信息;
步骤5、利用最近相交面对应的构件模型在合并模型mergedmodel中的索引将合并模型mergedmodel中所有的构件模型及其渲染信息分为三组,中间一组为点击选中的单个构件模型,根据获取的业务信息新建单个模型材质,将新建的单个模型材质赋给中间一组模型,再将三组模型分别进行渲染,实现单体化渲染。
7.进一步地,步骤1包括如下子步骤:步骤1.1、收集某场景下所有同类型构件所在点位、高度、方位角及业务信息,形成二维gis数据,并给二维gis数据建立索引字段bh;步骤1.2、根据索引字段bh从小到大依次遍历二维gis数据中的要素,以克隆预制件模型作为该要素对应的初始构件模型,再根据要素的点位和高度信息构建的三维坐标确定构件模型的准确位置,根据要素的方位角信息与预制件模型的方位角的角度差值调整构件模型的朝向,完成所有独立构件模型的构建;步骤1.3、将所有独立的构件模型按照索引字段bh从小到大的顺序依次进行合并,形成载入三维场景的合并模型mergedmodel。
8.进一步地,步骤2包括如下子步骤:步骤2.1、通过鼠标点击选择一个待单体化渲染的构件模型,获取鼠标点击的屏幕坐标(x,y),获取合并模型mergedmodel的三维场景窗口宽度width、窗口高度height,将所述屏幕坐标转换成标准化设备坐标(x,y,z):化设备坐标(x,y,z):化设备坐标(x,y,z):步骤2.2、将标准化设备坐标(x,y,z)根据投影矩阵、视图矩阵计算所述屏幕坐标的世界坐标p:步骤2.3、以合并模型mergedmodel所在三维场景中的相机位置为起点,构建经过所述世界坐标p的射线,拾取射线与合并模型mergedmodel的最近相交面,得到最近相交面的索引。
9.进一步地,步骤3中最近相交面对应的构件模型在合并模型mergedmodel中的索引的计算过程为:其中,index为最近相交面对应的构件模型在合并模型mergedmodel中的索引,fi
为最近相交面的索引,fn为单个预制件模型的面片数,为向下取整。
10.进一步地,步骤5中合并模型mergedmodel分成三组具体为:第一组模型由第0到(index-1)个构件模型组成;第二组模型由第index个构件模型组成;第三组模型由第(index+1)到( total-1)个构件模型组成,其中,index为最近相交面对应的构件模型在合并模型mergedmodel中的索引,total为二维gis数据中要素的总数量。
11.进一步地,步骤5中所述渲染信息包括:顶点位置、uv、面索引、法线。
12.进一步地,所述顶点位置、uv、面索引、法线均以数组形式存储数值,对于每类数据,根据单个预制件模型中该类数据的长度n进行分组:第一组的数组由原数据中的第0 到(index*n-1)个元素组成,第二组的数组由原数据中的第index* n到((index +1)* n
ꢀ‑
1)个元素组成,第三组的数组由原数据中的第((index +1)* n)到(total* n
ꢀ‑
1)个元素组成,其中,total为二维gis数据中要素的总数量,index为最近相交面对应的构件模型在合并模型mergedmodel中的索引。
13.进一步地,在进行下一次单体化渲染过程前,先将经单体化渲染的渲染信息合并,并指定使用原有材质,进行合并模型mergedmodel的恢复。
14.本发明还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序使计算机执行所述的海量三维模型的单体化渲染方法。
15.本发明还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现所述的海量三维模型的单体化渲染方法。
16.与现有技术相比,本发明具有如下有益效果:本发明海量三维模型的单体化渲染方法基于二维gis数据和预制件模型进行构件模型构建,并按序完成合并,鼠标点击后可通过预制件模型的几何特征准确计算构件模型的索引,实现对合并模型中单个构件模型的信息获取和单体化渲染,无需在内存中保留原模型,在显著提升三维场景承载量和渲染性能的同时,也能满足用户对单个构建点击交互、信息查询的需求。
附图说明
17.为了更清晰的说明本发明的技术方案,下面对所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
18.图1是本发明海量三维模型的单体化渲染方法的流程示意图;图2是采用本发明单体化渲染方法加载四万张座椅模型性能图;图3是使用本发明单体化渲染方法与未使用本方法加载座椅模型的能力对比图。
具体实施方式
19.下面结合附图对本发明的技术方案作进一步地解释说明。
20.如图1为本发明海量三维模型的单体化渲染方法的流程示意图,该方法具体包括以下步骤:步骤1、收集某场景下所有同类型构件的二维gis数据,并通过二维gis数据与构件的预制件模型构建构件模型,将所有的构件模型按顺序合并,形成载入三维场景的合并模型mergedmodel;具体包括如下子步骤:步骤1.1、收集某场景下所有同类型构件所在点位、高度、方位角及业务信息,形成二维gis数据;为了有序地进行构件模型建立和数据查询,在二维gis数据中建立索引字段bh,bh字段为整型,取值从0开始,按序增1;步骤1.2、根据索引字段bh从小到大依次遍历二维gis数据中的要素,以克隆预制件模型作为该要素对应的初始构件模型,再根据要素的点位和高度信息构建的三维坐标确定构件模型的准确位置,根据要素的方位角信息与预制件模型的方位角的角度差值调整构件模型的朝向,以实现构件模型的精准建模;基于此,完成所有独立构件模型的构建;步骤1.3、将所有独立的构件模型按照索引字段bh从小到大的顺序依次进行合并,形成载入三维场景的合并模型mergedmodel。
21.步骤2、通过鼠标点击选择一个待单体化渲染的构件模型,获取鼠标点击的屏幕位置,通过射线拾取合并模型mergedmodel上的最近相交面,得到所述最近相交面的索引;具体包括如下子步骤:步骤2.1、通过鼠标点击选择一个待单体化渲染的构件模型,获取鼠标点击的屏幕坐标(x,y),获取合并模型mergedmodel的三维场景窗口宽度width、窗口高度height,将所述屏幕坐标转换成标准化设备坐标(x,y,z):述屏幕坐标转换成标准化设备坐标(x,y,z):述屏幕坐标转换成标准化设备坐标(x,y,z):步骤2.2、将标准化设备坐标(x,y,z)根据投影矩阵、视图矩阵计算所述屏幕坐标的世界坐标p:其中,为的逆矩阵,为的逆矩阵。
22.步骤2.3、以合并模型mergedmodel所在三维场景中的相机位置为起点,构建经过所述世界坐标p的射线,通过射线拾取得到射线与合并模型mergedmodel相交的最近一个面。合并模型mergedmodel是由面构成的,每个面具有对应的索引,索引由0开始;而射线拾取是按序对面与射线进行相交检测,能得到最近相交面在合并模型mergedmodel所有面中的索引。
23.步骤3、通过分析合并模型mergedmodel与预制件模型间的关系,可知合并模型mergedmodel的总面数等于预制件模型的面数乘以要素总数,所以可以根据预制件模型的面片数和所述最近相交面的索引,准确求取最近相交面对应的构件模型在合并模型mergedmodel中的索引:其中,index为最近相交面对应的构件模型在合并模型mergedmodel中的索引,fi为最近相交面的索引,fn为单个预制件模型的面片数,为向下取整,由于二维gis数据中索引字段bh从0开始编号,所以此处选择向下取整。
24.步骤4、根据最近相交面对应的构件模型在合并模型mergedmodel中的索引在二维gis数据中查询对应构件模型的业务信息;步骤5、利用最近相交面对应的构件模型在合并模型mergedmodel中的索引将合并模型mergedmodel中的所有构件模型及其渲染信息分为三组,中间一组为点击选中的单个构件模型,然后根据获取的业务信息新建单个模型材质,将新建的单个模型材质赋给中间一组模型,再将三组模型分别进行渲染,这样第一、第三组仍为原有材质,而选中的单个构件模使用新的材质,从而实现单体化渲染。
25.本发明中合并模型mergedmodel分成三组具体为:第一组模型由第0到(index-1)个构件模型组成;第二组模型由第index个构件模型组成;第三组模型由第(index+1)到( total-1)个构件模型组成,其中,index为最近相交面对应的构件模型在合并模型mergedmodel中的索引,total为二维gis数据中要素的总数量。
26.本发明中渲染信息包括:顶点位置、uv、面索引、法线,顶点位置、uv、面索引、法线均以数组形式存储数值,对于每类数据,根据单个预制件模型中该类数据的长度n进行分组:第一组的数组由原数据中的第0 到(index*n-1)个元素组成,第二组的数组由原数据中的第index* n 到((index +1)* n
ꢀ‑
1)个元素组成,第三组的数组由原数据中的第((index +1)* n)到(total* n
ꢀ‑
1)个元素组成。
27.在进行下一次单体化渲染过程时,可先将顶点位置、uv、面索引、法线这些渲染信息合并,并指定使用原有材质,即可恢复合并模型mergedmodel原有显示效果,然后通过鼠标再次点击待单体化渲染的构件模型,重复步骤2-5的过程,完成待单体化渲染的构件模型的渲染过程。
28.将本发明单体化渲染方法用于加载体育馆中四万张座椅模型,如图2所示,加载后
系统帧率为59.4fps,而运行设备的刷新率为59.997hz,即已经接近最高帧率,运行非常流畅。图3是对比使用本发明单体化渲染方法与独立加载四万张座椅模型的对比情况,如未对座椅模型进行合并,加载出4万个独立模型,总面数为16万,帧率仅为8.4fps,运行十分卡顿;而采用本发明单体化渲染方法,同样的4万个模型加载后帧率为59.4fps,运行非常流畅。此外,采用本发明单体化渲染方法即使将构件模型增加到1千万个,其帧率仍能稳定在59.4fps,说明本发明单体化渲染方法具有极高的稳定性。
29.在本技术所公开的实施方式中,计算机存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序。计算机存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
30.本领域普通技术人员可以意识到,结合本技术所公开的实施方式描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
31.以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施方式,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-15-862-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2022-11-27 21:15:02

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论