一种三维地形裁剪方法、装置、设备及可读存储介质与流程

文档序号:31699537发布日期:2022-10-01 07:23阅读:171来源:国知局
一种三维地形裁剪方法、装置、设备及可读存储介质与流程

1.本发明涉及三维信息处理技术领域,特别是涉及一种三维地形裁剪方法、装置、设备及可读存储介质。


背景技术:

2.三维地理信息系统使用地形数据叠加遥感影像或栅格地图来真实的表现现实世界中高低起伏的地形地貌,从而形成三维地理信息基础数据。在项目开发中,在地形的基础上叠加道路、建筑、树木等三维模型,以构建出一个完整的虚拟现实三维场景。除了地表以上的三维模型外,在地表以下也有一部分模型需要表现,例如地下停车场、地下矿井、下穿公路桥等,这些处在地表以下的对象会因为被地形遮挡而无法被观察到。因此,在三维场景中需要一种能够根据指定的区域范围坐标对地形进行裁剪挖除的方法,通过裁剪地形以便于用户清楚的查看地表以下的场景对象。
3.目前常用的三维地形裁剪方法是在基于gpu(graphics processing unit,图形处理器)的可编程渲染管线中编写自定义片元着色器,由裁剪区域各边生成多个竖直的裁剪面,计算片元与这些裁剪面之间的空间关系,根据结果判断片元的剔除或保留,在最终呈现的渲染结果中实现地形裁剪的效果,比如基于cesium(一种用于显示三维地球和地图的开源js库)的平面裁剪方法等。但是该方法只支持凸多边形对地形的裁剪,在针对凹多边形时需要先将其拆分为若干凸多边形再进行地形裁剪,不支持凹多边形的直接裁剪,无法满足灵活的使用需求。而且当裁剪的多边形形状复杂或者边数较多时,生成的裁剪面数量也相应增加,计算量会大幅增加,从而引发效率下降、运行卡顿等问题,影响使用体验。
4.综上所述,如何实现灵活快速的三维地形裁剪,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

5.本发明的目的是提供一种三维地形裁剪方法、装置、设备及可读存储介质,以实现灵活快速的三维地形裁剪。
6.为解决上述技术问题,本发明提供如下技术方案:
7.一种三维地形裁剪方法,包括:
8.确定三维地形模型中的待裁剪多边形以及对应的投影平面;
9.将所述待裁剪多边形投影至所述投影平面,得到投影多边形,并确定所述投影多边形的包围矩形;
10.在纹理对象中绘制所述投影多边形,并根据设定的填充色进行填充;
11.调用片元着色器将所述三维地形模型中各片元的坐标投影至所述投影平面,并根据所述包围矩形确定各所述片元的纹理坐标;
12.在所述纹理对象中获取所述纹理坐标对应的纹理值,并判断所述纹理值是否为所述填充色;
13.若是,在所述片元着色器中剔除所述片元。
14.可选地,在所述根据所述包围矩形确定各所述片元的纹理坐标之前,还包括:
15.判断各所述片元的投影位置是否在所述包围矩形内;
16.若在所述包围矩形内,执行所述根据所述包围矩形确定各所述片元的纹理坐标的步骤。
17.可选地,所述确定所述投影多边形的包围矩形,包括:
18.以所述待裁剪多边形的质心为原点,确定所述投影平面的坐标轴;
19.获取所述投影多边形在所述投影平面中平行于所述坐标轴的包围矩形。
20.可选地,所述确定所述投影多边形在所述投影平面中平行于所述坐标系的包围矩形,包括:确定所述投影多边形在所述投影平面中平行于所述坐标系的最小包围矩形。
21.可选地,所述将所述待裁剪多边形投影至所述投影平面,包括:
22.将所述待裁剪多边形的各顶点投影至所述投影平面,并将各投影后的顶点按顺序连接后生成的多边形作为所述投影多边形。
23.可选地,在所述在纹理对象中绘制所述投影多边形之前,还包括:获取默认尺寸创建正方形纹理对象。
24.可选地,在所述在纹理对象中绘制所述投影多边形之前,还包括:
25.根据所述包围矩形的宽高比对应创建尺寸匹配的纹理对象。
26.一种计算机设备,包括:
27.存储器,用于存储计算机程序;
28.处理器,用于执行所述计算机程序时实现上述三维地形裁剪方法的步骤。
29.一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述三维地形裁剪方法的步骤。
30.本发明实施例所提供的方法,将裁剪多边形投影到平面后绘制在一张纹理图上,在片元着色器中将片元位置转换成纹理坐标后,通过纹理映射获取对应纹理值,根据纹理值是否为针对投影多边形设置的填充值来判断片元是否位于裁剪多边形内实现地形裁剪。其中,本方法通过纹理值实现裁剪多边形内外的区分,纹理值的区分可以忽略裁剪形状,凹、凸或者任意复杂的多边形均可以投影到平面并绘制在纹理图上,因此该方法可以广泛适用于不同形状的裁剪多边形;而且纹理值的识别判断中无需根据裁剪多边形的每条边进行逐一判断,即在裁剪多边形的边数多时也基本不影响计算效率,从而可以保障系统运行稳定流畅,能够很好的满足实际应用需求。
31.相应地,本发明实施例还提供了与上述三维地形裁剪方法相对应的三维地形裁剪装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
32.为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1为本发明实施例中一种三维地形裁剪方法的实施流程图;
34.图2为本发明实施例中一种三维地形裁剪装置的结构示意图;
35.图3为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
36.本发明的核心是提供一种三维地形裁剪方法,可以实现灵活快速的三维地形裁剪。
37.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.传统基于gpu的可编程渲染管线中编写自定义片元着色器的三维地形裁剪方法计算效率较低,以基于cesium的平面裁剪方法为例。cesium的平面裁剪是在片源着色器中视空间坐标系下完成的,其原理是将裁剪平面的位置和法向量从世界坐标系转换到视空间坐标系,然后将模型当前片元的位置由窗口坐标系转换到视空间坐标系,计算平面位置和片元位置之间的向量,并与平面法向量点乘,得到该向量在平面法线方向上的投影长度;长度等于0,则该片元位于裁剪面上,大于或小于0,则该片元位于裁剪面的正面或背面一侧,从而剔除或保留该片元,最终实现对整个模型的裁剪。
39.当前,在cesium中实现沿指定多边形区域裁剪地形,是基于上述平面裁剪算法,经过多边形的每一条边,构成垂直于地面、法线方向向右的裁剪面,遍历所有裁剪面,如果一个片元处于所有裁剪面的被剔除侧,则剔除该片元,否则,保留片元。
40.该算法实现了基于多边形裁剪地形的功能,但同时存在一定的局限性,由于其通过判断裁剪面在多边形中各边的方位来判断其是否属于裁剪多边形,因此只支持凸多边形,当应用于凹多边形时,得出的结果是混乱和错误的,这是由算法本身局限性引起的。另外,由于其在针对每个裁剪面进行判断时都需要对每个裁剪多边形的边进行方位判断,当多边形形状复杂或边数较多时,会大幅增加计算量,引起效率下降、运行卡顿的问题。
41.针对于此,本发明提出了一种三维地形裁剪方法,该方法可以支持、凸等各种形状多边形的三维地形裁剪,而且即使是多边形形状复杂、边数较多时,也不会明显降低系统运行效率,具有较高的实用价值,能够满足实际项目应用中对地形裁剪的需求。
42.请参考图1,图1为本发明实施例中一种三维地形裁剪方法的流程图,该方法包括以下步骤:
43.s101、确定三维地形模型中的待裁剪多边形以及对应的投影平面;
44.三维地形模型即本方法中待裁剪的对象,其中地形模型指详细表示地表上居民地、道路、水系、境界、土质、植被等基本地理要素且用等高线表示地面起伏的按统一规范生产的地图模型。
45.待裁剪多边形为用户在三维地形模型中自定义的需要进行地形裁剪的多边形,本发明支持凹、凸或者任意复杂的多边形对地形进行裁剪,因此对于待裁剪多边形的形状不做限定,可以根据实际使用需要进行相应绘制或编辑设置。
46.投影平面的作用在于为裁剪多边形和片元着色器中三维地形模型的片元提供共同的坐标系,从而实现裁剪多边形和片元间的数据处理。而针对投影平面的确定方式,本实
施例中不做限定,可以参照相关技术中参考平面的确定方式,比如可以将裁剪多边形所有顶点转换到世界坐标系,然后计算出裁剪多边形质心的坐标,作为投影平面上的一个点;再由世界坐标系原点和质心之间连线形成的向量,归一化后,作为平面的法向量;再根据投影平面上一点以及法向量确定一个平面,作为投影平面。而为了进一步计算的方便性,还可以将上述方法确定的投影平面旋转成水平面后作为最后确定的投影平面。本实施例中仅以上述两种投影平面的生成方式为例进行介绍,其他实现方式均可参照本实施例的介绍,在此不再赘述。
47.s102、将待裁剪多边形投影至投影平面,得到投影多边形,并确定投影多边形的包围矩形;
48.将待裁剪多边形投影至投影平面,将投影后得到的多边形作为投影多边形。其中投影的具体实现方式可以参照相关技术,为了提升投影效率,具体可以将待裁剪多边形的各顶点投影至投影平面,将各顶点投影后直接将投影后各顶点按顺序连接后形成的多边形作为投影多边形。
49.得到投影多边形后,确定投影多边形的包围矩形(指边缘线及以内包含全部投影多边形的矩形),以便于后续纹理坐标的确定。其中,对于包围矩形的计算方式不做限定,可以参照相关技术中的介绍,在此不再赘述。
50.s103、在纹理对象中绘制投影多边形,并根据设定的填充色进行填充;
51.创建一个纹理对象(一种可被shader着色器读写的存储类型),在纹理对象中绘制并填充投影后的裁剪多边形,写入纹理缓冲区。其中,设定的填充色可以自定义设定,在此不做限定。
52.s104、调用片元着色器将三维地形模型中各片元的坐标投影至投影平面,并根据包围矩形确定各片元的纹理坐标;
53.在地形模型渲染管线的片元着色器中,将地形当前片元的位置转换到世界坐标系,然后投影到投影平面,实现片元坐标投影的目的。
54.在常规渲染过程中最后通过编程控制屏幕上显示颜色的阶段叫做片元着色阶段,这个阶段通过片元着色器计算片元的最终颜色和它的深度值,处理opengl光栅化之后生成的独立片元。其中,光栅化是将一个图元转变为一个二维图像的过程,二维图像上每个点都包含了颜色、深度和纹理数据,将该点和相关信息叫做一个片元(fragment)。本方法中调用片元着色器将片元坐标投影至投影平面,投影后与裁剪多边形坐标系统一,从而以便于裁剪。
55.s105、在纹理对象中获取纹理坐标对应的纹理值,并判断纹理值是否为填充色;若是,执行步骤s106;
56.投影后的片元位置进一步转换成纹理坐标,通过纹理映射,在纹理对象上进行采样获取纹理值,如果纹理值是填充色,则说明当前片元位于裁剪多边形内,则执行步骤s106在片元着色器中剔除片元,否则保留该片元,对于该种情况本实施例中不做限定,还可以进一步进行其他的渲染处理,在此不再赘述。
57.逐片元进行上述处理后,位于裁剪多边形内的所有地形模型片元就都被剔除了,从而实现了任意凹凸多边形对三维地形模型的裁剪操作。
58.s106、在片元着色器中剔除片元。
59.基于上述介绍,本发明实施例所提供的技术方案,将裁剪多边形投影到平面后绘制在一张纹理图上,在片元着色器中将片元位置转换成纹理坐标后,通过纹理映射获取对应纹理值,根据纹理值是否为针对投影多边形设置的填充值来判断片元是否位于裁剪多边形内实现地形裁剪。其中,本方法通过纹理值实现裁剪多边形内外的区分,纹理值的区分可以忽略裁剪形状,凹、凸或者任意复杂的多边形均可以投影到平面并绘制在纹理图上,因此该方法可以广泛适用于不同形状的裁剪多边形;而且纹理值的识别判断中无需根据裁剪多边形的每条边进行逐一判断,即在裁剪多边形的边数多时也基本不影响计算效率,从而可以保障系统运行稳定流畅,能够很好的满足实际应用需求。
60.需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
61.为进一步提升三维地形裁剪效率,在步骤s104执行确定各片元的纹理坐标之前,还可以进一步执行以下步骤:
62.s107、判断各片元的投影位置是否在包围矩形内;若在包围矩形内,触发步骤s104执行根据包围矩形确定各片元的纹理坐标的步骤。
63.本实施例在计算各片元的纹理坐标之前,增加了判断投影位置是否在包围矩形的步骤,如果投影后的片元位置不在裁剪多边形包围矩形内,则保留;如果在裁剪多边形包围矩形内,则进一步转换成纹理坐标,通过纹理映射在纹理对象上进行采样获取纹理值。
64.该方法通过在纹理值的逐一判断之前首先进行片元位置的预判断,相当于增加了对片元进行预筛选步骤,预筛选出位于裁剪多边形对应的包围矩形内的片元,其中针对矩形的位置判断计算效率高,可以快速排除大批远离多边形的片元,从而可以只针对包围矩形内的片元进行纹理值的计算以及填充色的判断,实现片元位置的精准区分,可以有效节省计算资源,提升计算效率。
65.其中,上述实施例中对于包围矩形的计算确定方式不做限定,为简化计算量,提升计算效率,可选地,一种投影多边形包围矩形的计算方式如下:
66.(1)以待裁剪多边形的质心为原点,确定投影平面的坐标轴;
67.投影平面的坐标轴可以根据实际计算的需要进行设定,在此对于确定方式不做限定,比如可以将世界坐标原点到质心点之间的向量,与z轴正方向向量,进行叉乘,得到的向量作为投影平面的y轴正方向,向顺时针方向旋转90度,得到投影平面的x轴正方向。若投影平面水平时,还可以直接以世界坐标系的xy轴方向作为投影平面的xy轴方向。本实施例中仅以上述两种坐标轴的确定方式为例进行介绍,其他确定方式均可参照本实施例的介绍,在此不再赘述。
68.(2)获取投影多边形在投影平面中平行于坐标轴的包围矩形。
69.矩形平行于坐标轴指矩形的相邻边分别平行于坐标轴中的x轴和y轴,比如矩形的长边与x轴平行,短边与y轴平行;或,长边与y轴平行,短边与x轴平行。
70.上述方式得到了平行于投影平面的坐标轴的包围矩形,这样在计算片元的投影位置是否在包围矩形内时可以忽略由于包围矩形偏移带来的计算量,从而实现计算的简化以及效率的提升。
71.其中,为了进一步减少计算量,最大化一次性排除不靠近投影多边形的片元,步骤
(2)确定投影多边形在投影平面中平行于坐标系的包围矩形,具体可以为:确定投影多边形在投影平面中平行于坐标系的最小包围矩形。
72.通过确定投影多边形的最小包围矩形进行片元投影位置的排除,仅保留最小包围矩形内的片元进行进一步的细化比对,可以显著缩减计算量。
73.需要说明的是,本实施例中仅以上述包围矩形的计算方式为例进行介绍,其他计算方式均可参照本实施例的介绍,均可算作本发明的保护范围。
74.在上述实施例的基础上,纹理对象是一幅栅格图像,其尺寸越大、分辨率越高,则最终裁剪结果的精度越高,裁剪区域的边界越平滑。但过大的分辨率会影响纹理映射的效率,从而降低系统运行效率。在通常实际应用场景下,一般不需要太高的裁剪精度,因此,为进一步提升系统运行效率,本实施例中针对纹理对象进行进一步的技术限制。
75.可选地,在步骤s103执行在纹理对象中绘制投影多边形之前,可以进一步执行以下步骤:
76.步骤s108、获取默认尺寸创建正方形纹理对象。
77.获取默认尺寸创建正方形纹理对象,其中默认尺寸比如512*512的分辨率。默认尺寸的具体数值设置本实施例中不做限定。
78.固定多边形尺寸的实现方式简单,可以直接创建相应的纹理对象,无需计算,从而提升裁剪的实现效率;同时该方法可以简化后台部署步骤,提升方法上线效率。
79.或者,在步骤s103执行在纹理对象中绘制投影多边形之前,可以进一步执行以下步骤:
80.步骤s109、根据包围矩形的宽高比对应创建尺寸匹配的纹理对象。
81.本方法中提出采用和裁剪多边形包围矩形一致的宽高比定义一个矩形的纹理对象,其中,创建的纹理对象与包围矩形的尺寸比例相同,可以保证绘制的投影多边形的高清晰度以及高分辨率,避免尺寸压缩导致的分辨率受限的情况,从而可以达到在相同分辨率下实现更高裁剪精度的目的。
82.需要说明的是,本实施例中提供了两种纹理对象的创建方式,可以根据实际使用需要配置其中的一种或多种,在此不做限定。
83.相应于上面的方法实施例,本发明实施例还提供了一种三维地形裁剪装置,下文描述的三维地形裁剪装置与上文描述的三维地形裁剪方法可相互对应参照。
84.参见图2所示,该装置包括以下模块:
85.多边形确定单元110主要用于确定三维地形模型中的待裁剪多边形以及对应的投影平面;
86.投影处理单元120主要用于将待裁剪多边形投影至投影平面,得到投影多边形,并确定投影多边形的包围矩形;
87.纹理绘制单元130主要用于在纹理对象中绘制投影多边形,并根据设定的填充色进行填充;
88.纹理坐标确定单元140主要用于调用片元着色器将三维地形模型中各片元的坐标投影至投影平面,并根据包围矩形确定各片元的纹理坐标;
89.填充判断单元150主要用于在纹理对象中获取纹理坐标对应的纹理值,并判断纹理值是否为填充色;若是,触发片元剔除单元160;
90.片元剔除单元160主要用于在片元着色器中剔除片元。
91.相应于上面的方法实施例,本发明实施例还提供了一种计算机设备,下文描述的一种计算机设备与上文描述的一种三维地形裁剪方法可相互对应参照。
92.该计算机设备包括:
93.存储器,用于存储计算机程序;
94.处理器,用于执行计算机程序时实现上述方法实施例的三维地形裁剪方法的步骤。
95.具体的,请参考图3,为本实施例提供的一种计算机设备的具体结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在计算机设备301上执行存储器332中的一系列指令操作。
96.计算机设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
97.上文所描述的三维地形裁剪方法中的步骤可以由计算机设备的结构实现。
98.相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种三维地形裁剪方法可相互对应参照。
99.一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的三维地形裁剪方法的步骤。
100.该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
101.本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1