一种地形渲染方法、装置、设备及可读存储介质与流程

文档序号:17332657发布日期:2019-04-05 22:11阅读:162来源:国知局
一种地形渲染方法、装置、设备及可读存储介质与流程

本发明涉及空间地理信息技术领域,更具体地说,涉及一种地形渲染方法、装置、设备及可读存储介质。



背景技术:

现有的地形渲染方式包括:多重纹理渲染和多通道渲染。

在多重纹理渲染方式中,一个地形影像图层对应一个纹理单元,一个纹理单元对应一个纹理通道,在纹理操作管线中将多个纹理逐一应用到同一个多边形上。而由于计算机显卡可以支持的纹理单元的数目有限,因此当采用多重纹理渲染方式时,需要考虑计算机显卡可支持的纹理单元的数目,使得渲染受限。

当采用多通道渲染方式时,首先绘制第一层地形影像,开启混合功能,进而绘制第二层地形影像,以此类推,直至绘制完所有的地形影像图层。虽然多通道渲染方式可以不受纹理单元数目的限制,但受地形影像图层数目的影响,当地形影像图层的数目越多时,帧率越低,从而会导致渲染效率降低。

因此,如何避免计算机显卡对纹理单元数目的限制,并提高地形渲染效率,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种地形渲染方法、装置、设备及可读存储介质,以避免计算机显卡对纹理单元数目的限制,并提高地形渲染效率。

为实现上述目的,本发明实施例提供了如下技术方案:

一种地形渲染方法,包括:

获取地形影像数据,并对所述地形影像数据进行四叉树分割,得到多个地形瓦片;

根据所述地形影像数据的图层层数、影像宽度和影像高度创建每个地形瓦片的纹理数组;

通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;

根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。

其中,所述根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组之前,还包括:

根据每个地形瓦片的覆盖区域的大小将每个地形瓦片的覆盖区域划分网格。

其中,所述根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组,包括:

根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的第一纹理数组和第二纹理数组;

其中,所述第一纹理数组的深度为图层层数,宽度为所述地形影像数据在当前地形瓦片中的像素宽度,高度为所述地形影像数据在当前地形瓦片中的像素高度;

所述第二纹理数组的深度为图层层数,宽度和高度均为当前地形瓦片的覆盖区域划分所得的网格顶点数;

所述第一纹理数组和所述第二纹理数组分别位于不同的纹理通道。

其中,所述通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标,包括:

通过每个地形瓦片的第一纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像;

通过每个地形瓦片的第二纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理坐标;

创建地形瓦片绘制对象的纹理坐标,所述地形瓦片绘制对象的纹理坐标用于对所述第二纹理数组中的纹理进行采样。

其中,所述根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染,包括:

将各个地形瓦片按照四叉树进行组织,并通过shader对每个地形瓦片进行渲染。

其中,所述通过shader对每个地形瓦片进行渲染,包括:

针对所述地形影像数据的每个图层,根据所述地形瓦片绘制对象的纹理坐标对当前地形瓦片的第二纹理数组中的纹理进行采样,得到纹理图像对应的纹理坐标,并根据采样得到的纹理坐标对当前地形瓦片的第一纹理数组中的纹理进行采样,得到当前图层的纹理图像中片元的颜色;遍历每个地形影像数据图层,将每个图层的纹理图像中片元的颜色进行混合,完成地形渲染。

其中,还包括:

将渲染得到的图像进行可视化展示。

一种地形渲染装置,包括:

获取模块,用于获取地形影像数据,并对所述地形影像数据进行四叉树分割,得到多个地形瓦片;

创建模块,用于根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组;

存储模块,用于通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;

渲染模块,用于根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。

一种地形渲染设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任意一项所述的地形渲染方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的地形渲染方法的步骤。

通过以上方案可知,本发明实施例提供的一种地形渲染方法,包括:获取地形影像数据,并对所述地形影像数据进行四叉树分割,得到多个地形瓦片;根据所述地形影像数据的图层层数、影像宽度和影像高度创建每个地形瓦片的纹理数组;通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。

可见,所述方法首先对地形影像数据进行四叉树分割,得到多个地形瓦片,并根据地形影像数据的图层层数、影像宽度和影像高度创建每个地形瓦片的纹理数组,并通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标。也就是说,在一个地形瓦片中,地形影像数据的各个图层的数据均存储于纹理数组。不管地形影像数据具有几个图层,这些图层对应的数据均可以存储于地形瓦片的纹理数组,即:纹理数组中的数据不受图层层数的限制,一定程度上可以避免计算机显卡对纹理单元数目的限制。并且当每个地形瓦片的纹理图像和纹理坐标在纹理数组中存储完成后,可以一次性完成渲染,无需按照多通道渲染方式逐层渲染,从而提高了渲染效率。

相应地,本发明实施例提供的一种地形渲染装置、设备及可读存储介质,也同样具有上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种地形渲染方法流程图;

图2为本发明实施例公开的另一种地形渲染方法流程图;

图3为本发明实施例公开的一种地形渲染装置示意图;

图4为本发明实施例公开的一种地形渲染设备示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种地形渲染方法、装置、设备及可读存储介质,以避免计算机显卡对纹理单元数目的限制,并提高地形渲染效率。

参见图1,本发明实施例提供的一种地形渲染方法,包括:

s101、获取地形影像数据,并对地形影像数据进行四叉树分割,得到多个地形瓦片;

优选地,所述根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组之前,还包括:根据每个地形瓦片的覆盖区域的大小将每个地形瓦片的覆盖区域划分网格。

其中,地形瓦片的覆盖区域一般为矩形,可以将其划分为n乘以n的网格,n表示网格数,n大于1且为正整数。

s102、根据地形影像数据的图层层数、影像宽度和影像高度创建每个地形瓦片的纹理数组;

s103、通过每个地形瓦片的纹理数组,存储地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;

优选地,根据地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组,包括:根据地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的第一纹理数组和第二纹理数组;其中,第一纹理数组的深度为图层层数,宽度为地形影像数据在当前地形瓦片中的像素宽度,高度为地形影像数据在当前地形瓦片中的像素高度;第二纹理数组的深度为图层层数,宽度和高度均为当前地形瓦片的覆盖区域划分所得的网格顶点数;第一纹理数组和第二纹理数组分别位于不同的纹理通道。

其中,每个地形瓦片的第一纹理数组位于同一个纹理通道,每个地形瓦片的第二纹理数组位于同一个纹理通道。例如:假设第一地形瓦片的第一纹理数组为a1,第二纹理数组为a2;第二地形瓦片的第一纹理数组为b1,第二纹理数组为b2;第三地形瓦片的第一纹理数组为c1,第二纹理数组为c2;那么a1、b1和c1位于同一个纹理通道,a2、b2和c2共同位于另一个纹理通道。

优选地,所述通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标,包括:通过每个地形瓦片的第一纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像;通过每个地形瓦片的第二纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理坐标;创建地形瓦片绘制对象的纹理坐标,地形瓦片绘制对象的纹理坐标用于对第二纹理数组中的纹理进行采样。

具体的,由于各个图层可能具有不同的纹理坐标数值,不能使用统一的纹理坐标对每个图层的地形影像进行采样,因此需要通过第二纹理数组存储纹理坐标,以便于后续采样。

s104、根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。

优选地,所述根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染,包括:将各个地形瓦片按照四叉树进行组织,并通过shader对每个地形瓦片进行渲染。

其中,通过shader对每个地形瓦片进行渲染,包括:针对地形影像数据的每个图层,根据地形瓦片绘制对象的纹理坐标对当前地形瓦片的第二纹理数组中的纹理进行采样,得到纹理图像对应的纹理坐标,并根据采样得到的纹理坐标对当前地形瓦片的第一纹理数组中的纹理进行采样,得到当前图层的纹理图像中片元的颜色;遍历每个地形影像数据图层,将每个图层的纹理图像中片元的颜色进行混合,完成地形渲染。

shader为着色器,用于渲染颜色。片元指代地形影像数据覆盖的但无确定坐标的区域。其中,第二纹理数组存储的是纹理图像的纹理坐标,因此对第二纹理数组中的纹理进行采样,得到的是纹理坐标;第一纹理数组存储的是纹理图像,因此对第一纹理数组中的纹理进行采样,得到的是片元的颜色。

可见,本实施例提供了一种地形渲染方法,所述方法首先对地形影像数据进行四叉树分割,得到多个地形瓦片,并根据地形影像数据的图层层数、影像宽度和影像高度创建每个地形瓦片的纹理数组,并通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标。也就是说,在一个地形瓦片中,地形影像数据的各个图层的数据均存储于纹理数组。不管地形影像数据具有几个图层,这些图层对应的数据均可以存储于地形瓦片的纹理数组,即:纹理数组中的数据不受图层层数的限制,一定程度上可以避免计算机显卡对纹理单元数目的限制。并且当每个地形瓦片的纹理图像和纹理坐标在纹理数组中存储完成后,可以一次性完成渲染,无需按照多通道渲染方式逐层渲染,从而提高了渲染效率。

基于上述实施例,需要说明的是,还包括:将渲染得到的图像进行可视化展示。

具体的,渲染得到的图像还可以存储于任意存储介质,以便于后续查看、调整或处理。

本发明实施例公开了另一种地形渲染方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。

参见图2,本发明实施例提供的另本发明提供了一种地形渲染方法,包括以下步骤:

步骤1:按照地形影像数据的经纬度范围,对地形影像数据进行四叉树分割,得到许多矩形区域,即地形瓦片。不同的四叉树层级对应不同分辨率的地形瓦片。

步骤2:按照矩形区域的大小,将导入的地形影像数据构建成地形瓦片的绘制对象。本发明采用了纹理数组来存储各个地形影像图层对应的纹理,分别采用两个纹理通道存储纹理图片与纹理坐标,具体步骤如下:

1)建立地形瓦片的网格。设n为网格单个方向上的顶点数,则地形瓦片的网格顶点数为n*n。

2)创建地形瓦片的纹理。根据地形影像图层的层数、影像宽度和高度创建纹理数组,该纹理数组的深度为地形影像的图层数,宽度和高度为地形影像在该地形瓦片中的像素宽度和高度。遍历每个地形影像图层,将每个地形影像图层对应的纹理图像设置为该纹理数组中的一层。

3)创建地形瓦片纹理对应的纹理坐标。由于各个影像图层可能具有不同的纹理坐标数值,但各影像图层对应纹理坐标数组的大小与地形瓦片的网格顶点数一致。创建一个新的纹理数组,与步骤2)中创建的纹理数组位于不同的纹理通道。该纹理数组的宽度和高度为地形瓦片的网格顶点数n,深度为地形影像的图层数。遍历每个地形影像图层,将步骤2)中每层的纹理对应的纹理坐标创建为纹理图像,设置为步骤3)中纹理数组的一层。即采用纹理通道2存储步骤2)中所述各个地形影像图层对应的纹理图像,采用纹理通道1存储各个纹理图像对应的纹理坐标。

4)创建地形瓦片绘制对象的纹理坐标。该纹理坐标用于步骤3)中纹理通道1的纹理进行采样,从而可以获取到地形影像纹理对应的纹理坐标。

步骤3:将步骤2中构建得到的地形瓦片按照四叉树组织起来交由图形设备渲染,在gpu中利用shader进行纹理采样与混合。其步骤如下:

1)根据地形瓦片的纹理坐标采样纹理通道1,得到的颜色值为纹理通道2中地形影像对应的纹理坐标;

2)用1)中采样得到的颜色值作为纹理坐标采样纹理通道2,得到该片元的颜色值;

3)对当前场景中所有的地形影像图层均进行步骤1)、2)的操作,将得到的颜色值进行混合。

可见,本实施例采用纹理数组完成了地形影像的渲染,不会受到计算机显卡对纹理单元数量的限制,可支持加载的更多地形影像图层;在渲染过程中,将各个地形影像图层对应的纹理坐标以纹理图像的形式存储到纹理数组中,以该纹理的采样结果作为索引值来读取地形影像的纹理;并一次完成整个地形影像的渲染,提高了渲染效率。

下面对本发明实施例提供的一种地形渲染装置进行介绍,下文描述的一种地形渲染装置与上文描述的一种地形渲染方法可以相互参照。

参见图3,本发明实施例提供的一种地形渲染装置,包括:

获取模块301,用于获取地形影像数据,并对所述地形影像数据进行四叉树分割,得到多个地形瓦片;

创建模块302,用于根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组;

存储模块302,用于通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;

渲染模块304,用于根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。

其中,还包括:

划分模块,用于根据每个地形瓦片的覆盖区域的大小将每个地形瓦片的覆盖区域划分网格。

其中,所述创建模块具体用于:

根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的第一纹理数组和第二纹理数组;

其中,第一纹理数组的深度为图层层数,宽度为地形影像数据在当前地形瓦片中的像素宽度,高度为地形影像数据在当前地形瓦片中的像素高度;第二纹理数组的深度为图层层数,宽度和高度均为当前地形瓦片的覆盖区域划分所得的网格顶点数;第一纹理数组和第二纹理数组分别位于不同的纹理通道。

其中,所述存储模块具体用于:

通过每个地形瓦片的第一纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像;

通过每个地形瓦片的第二纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理坐标;

创建地形瓦片绘制对象的纹理坐标,所述地形瓦片绘制对象的纹理坐标用于对第二纹理数组中的纹理进行采样。

其中,所述渲染模块具体用于:

将各个地形瓦片按照四叉树进行组织,并通过shader对每个地形瓦片进行渲染。

其中,所述渲染模块具体用于:

针对所述地形影像数据的每个图层,根据所述地形瓦片绘制对象的纹理坐标对当前地形瓦片的第二纹理数组中的纹理进行采样,得到纹理图像对应的纹理坐标,并根据采样得到的纹理坐标对当前地形瓦片的第一纹理数组中的纹理进行采样,得到当前图层的纹理图像中片元的颜色;遍历每个地形影像数据图层,将每个图层的纹理图像中片元的颜色进行混合,完成地形渲染。

其中,还包括:

展示模块,用于将渲染得到的图像进行可视化展示。

可见,本实施例提供了一种地形渲染装置,包括:获取模块、创建模块、存储模块以及渲染模块。首先由获取模块获取地形影像数据,并对所述地形影像数据进行四叉树分割,得到多个地形瓦片;然后创建模块根据所述地形影像数据的图层层数、影像宽度和高度创建每个地形瓦片的纹理数组;进而存储模块通过每个地形瓦片的纹理数组,存储所述地形影像数据的各个图层在当前地形瓦片中的纹理图像和纹理坐标;最后渲染模块根据每个地形瓦片的纹理数组中的纹理图像和纹理坐标进行地形渲染。如此各个模块之间分工合作,各司其职,从而可以避免计算机显卡对纹理单元数目的限制,也提高了渲染效率。

下面对本发明实施例提供的一种地形渲染设备进行介绍,下文描述的一种地形渲染设备与上文描述的一种地形渲染方法及装置可以相互参照。

参见图4,本发明实施例提供的一种地形渲染设备,包括:

存储器401,用于存储计算机程序;

处理器402,用于执行所述计算机程序时实现上述任意实施例所述的地形渲染方法的步骤。

下面对本发明实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种地形渲染方法、装置及设备可以相互参照。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的地形渲染方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1