一种三维地形渲染方法及装置与流程

文档序号:16682596发布日期:2019-01-19 00:39阅读:174来源:国知局
一种三维地形渲染方法及装置与流程

本发明涉及三维地形渲染技术领域,具体而言,涉及一种三维地形渲染方法及装置。



背景技术:

在三维场景的构建过程中,地形作为视景中的主要几何模型,其需要渲染的三角面的数量在整个视景中占很大比重,因此其实时性,即漫游的流畅感对于整个视景系统的帧间速率、人机交互性和沉浸性都有极大影响。另外随着三维软件中取获的地形高程数据和卫星影像数据的规模越来越庞大,甚至已达到tb级数据规模,在显著提升地形真实性的同时,也给系统带宽和i/o通信造成了极大负担,视景系统中地形三维可视化技术中实时性与真实性之间的矛盾月越来越严重,对三维地形渲染技术的研究越来越受到研究人员的关注。



技术实现要素:

本发明实施例提供的一种三维地形渲染方法及装置,可以解决上述的技术问题。

第一方面,本发明实施例提供的一种三维地形渲染方法,包括:将外存中的待处理数据进行分块,生成多个分块数据;通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。

结合第一方面,第一方面的一种实施方式,所述的对加载的每个所述分块数据进行三维地形渲染,包括:利用gpu可编程渲染管线将对每个所述分块数据中的每一顶点和每一像素进行三维地形渲染。

结合第一方面,在第一方面的另一种实施方式,所述待处理数据包括地形高程数据和纹理数据,所述的将外存中的待处理数据进行分块,生成多个分块数据,包括:将外存中的地形高程数据和纹理数据进行分块分层,生成多个大小为257×257的分块数据,且每个所述分块数据的相邻边留有1个像素的重叠带。

结合第一方面,在第一方面的另一种实施方式,所述的通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染,包括:通过子线程基于运动趋势以实现对所述分块数据的动态调度、实时加载和卸载;通过主线程对所述分块数据实时三维地形渲染。

结合第一方面,在第一方面的另一种实施方式,在通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染之后,还包括:若所述分块数据渲染完成后,实时的卸载所述分块数据。

第二方面,本发明实施例提供的一种三维地形渲染装置,包括:数据处理模块,用于将外存中的待处理数据进行分块,生成多个分块数据;渲染模块,用于通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。

结合第二方面,第二方面的一种实施方式,所述渲染模块,还用于:通过并行且实时的加载多个所述分块数据,利用gpu可编程渲染管线将对每个所述分块数据中的每一顶点和每一像素进行三维地形渲染。

结合第二方面,在第二方面的另一种实施方式,所述数据处理模块,还用于:将外存中的地形高程数据和纹理数据进行分块分层,生成多个大小为257×257的分块数据,且每个所述分块数据的相邻边留有1个像素的重叠带。

结合第二方面,在第二方面的另一种实施方式,所述渲染模块,还用于:通过子线程基于运动趋势以实现对所述分块数据的动态调度、实时加载和卸载;通过主线程对所述分块数据实时三维地形渲染。

结合第二方面,在第二方面的另一种实施方式,在所述渲染模块,还包括:卸载模块,用于若所述分块数据渲染完成后,实时的卸载所述分块数据。

与现有技术相比,本发明实施例提供的一种三维地形渲染方法及装置有益效果是:通过将外存中的待处理数据进行分块,生成多个分块数据;通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。所以,相较于现有技术来说,通过将资源调度与图形渲染用多线程机制实现并行处理可以显著提高渲染效率,可有效避免动态加载新的分块数据时系统i/o阻塞所导致的画面卡顿现象,进而使渲染时间稳定性有效增强。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明第一实施例提供的三维地形渲染方法的流程图;

图2为地形系统框架中的可编程渲染管线模块工作示意图;

图3本发明第二实施例提供的三维地形渲染装置的功能模块示意图;

图4本发明第三实施例提供的一种终端设备的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

第一实施例

请参阅图1,是本发明实施例提供的三维地形渲染方法的流程图。下面将对图1所示的具体流程进行详细阐述。

步骤s101,将外存中的待处理数据进行分块,生成多个分块数据。

在本实施例中,所述待处理数据包括地形高程数据和纹理数据。

作为一种实施方式,步骤s101包括:将外存中的地形高程数据和纹理数据进行分块分层,生成多个大小为257×257的分块数据,且每个所述分块数据的相邻边留有1个像素的重叠带。

可选地,将外存中的地形高程数据和纹理数据进行分块分层,生成多个大小为257×257的分块数据,包括:将外存中的地形高程数据进行分块分层,生成多个大小为257×257的地形分块数据;将外存中的纹理数据进行分块分层,生成多个大小为257×257的纹理分块数据。

可选地,根据地形分块数据构建多分辨率几何金字塔以及根据纹理分块数据构建纹理金字塔,并建立与之对应的地形块线性四叉树索引和节点组织结构地形块。

在实际使用时,对于地形高程数据处理方面,首先将以16位灰度图形式存储的地形高程数据平均分块,每块大小为257×257,各块相邻边留有1个像素的重叠带来为后面的裂缝消除算法做准备;然后构建各地形块几何多分辨率金字塔模型;最后建立与之对应的地形块线性四叉树索引和节点组织结构。

在实际使用时,对于纹理数据组织方面,首先将以16位灰度图形式存储的纹理数据平均分块,每块大小为257×257,各块相邻边留有1个像素的重叠带来为后面的裂缝消除算法做准备;然后根据纹理采样和多分辨率技术,生成与地形块几何多分辨率金字塔相匹配的纹理多分辨率金字塔模型;最后采用线性四叉树的方式对纹理影像进行管理(例如进行存储、显示、变换等)。

步骤s102,通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。

在实际使用时,一般通过cpu实现并行且实时的加载多个所述分块数据。

作为一种可选的实施方式,步骤s102包括:利用gpu可编程渲染管线将对每个所述分块数据中的每一顶点和每一像素进行三维地形渲染。

在实际使用时,gpu(graphicsprocessingunit,图形处理器)可编程渲染管线技术是使用hlsl和glsl或gpu汇编语言编写程序片段,将对分块数据中的每一顶点和对每一像素的运算放到该程序片段中进行。而地形系统框架中的可编程渲染管线模块工作在显存中,针对gpu中顶点缓存和索引缓存进行操作,在顶点着色器和片段着色器中执行cg脚本文件,完成对顶点和像素的操作。具体操作如下:

(1)对顶点缓存的操作包括顶点缓存数据类vertexdata的创建、顶点声明、顶点缓存绑定和顶点缓存的更新等操作。vertexdata类保存了所有与顶点有关的信息。每次新的渲染操作都需要一个指向vertexdata对象的指针,同时它也可以用于存储顶点位置、法线以及纹理坐标等数据。

(2)索引缓存的数据结构要比顶点缓存简单,只存储与顶点数据相对应的索引表,取代渲染几何体时直接从顶点缓存中连续地读取顶点数据,索引缓存对顶点数据进行优化,节约内存空间,加快运算速度。索引缓存数据类indexdata包括了渲染几何体索引集合所需要的所有信息,对索引缓存的操作与顶点缓存相类似,包括indexdata的创建以及更新索引缓存等操作。

作为另一种可选的实施方式,步骤s102包括:通过子线程基于运动趋势以实现对所述分块数据的动态调度、实时加载和卸载;通过主线程对所述分块数据实时三维地形渲染。

通过将资源调度与图形渲染用多线程机制实现并行处理可以显著提高渲染效率,可有效避免动态加载新的分块数据时系统i/o阻塞所导致的画面卡顿现象,进而使渲染时间稳定性有效增强。

举例来说,如图2所示,地形系统框架中的可编程渲染管线模块工作在显存中,针对gpu中顶点缓存和索引缓存进行操作,在顶点着色器和片段着色器中执行cg脚本文件,完成对顶点和像素的操作。对顶点缓存的操作包括顶点缓存数据类vertexdata的创建、顶点声明、顶点缓存绑定和顶点缓存的更新等操作。vertexdata类保存了所有与顶点有关的信息。每次新的渲染操作都需要一个指向vertexdata对象的指针,同时它也可以用于存储顶点位置、法线以及纹理坐标等数据。索引缓存的数据结构要比顶点缓存简单,只存储与顶点数据相对应的索引表,取代渲染几何体时直接从顶点缓存中连续地读取顶点数据,索引缓存对顶点数据进行优化,节约内存空间,加快运算速度。索引缓存数据类indexdata包括了渲染几何体索引集合所需要的所有信息,对索引缓存的操作与顶点缓存相类似,包括indexdata的创建以及更新索引缓存等操作。

在本实施例中,通过并行且实施的加载外存中的各个分块数据,以使得外存中的数据能够有序地被gpu执行渲染过程,进而使得内存不会被占用较多,进而实现高效的数据管理。所以,相较于现有技术中,通过将地形高程数据和纹理数据全部传给gpu以进行渲染,由于地形高程数据和纹理数据通常来说都较大,从而会导致内存被占用过多,甚至内存被占满,进而导致无法进行渲染。

举例来说,假设分块数据包括a分块、b分块和c分块,当a分块被渲染后,才加载b分块,依次类推,当b分块被渲染后,才加载c分块,从而使得进入内存的数据的大小减小,有效降低了内存的使用率,进而有效提高了渲染效率,可有效避免动态加载新的分块数据时i/o阻塞所导致的画面卡顿现象,使渲染时间稳定性有效增强。

在一可选的实施例中,在步骤s102之后,所述三维地形渲染方法还包括:若所述分块数据渲染完成后,实时的卸载所述分块数据。

在本实施例中,通过将已经渲染的分块数据进行卸载(从内存中删除)可以有效节约内存空间,避免内存被已经渲染的分块数据所占用,进一步提高了内存的使用率,实现了对数据的高效管理。

本发明实施例提供的三维地形渲染方法,通过将外存中的待处理数据进行分块,生成多个分块数据;通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。所以,相较于现有技术来说,通过将资源调度与图形渲染用多线程机制实现并行处理可以显著提高渲染效率,可有效避免动态加载新的分块数据时系统i/o阻塞所导致的画面卡顿现象,进而使渲染时间稳定性有效增强。

第二实施例

对应于第一实施例中的三维地形渲染方法,图3示出了采用第一实施例所示的三维地形渲染方法一一对应的三维地形渲染装置。如图3所示,所述三维地形渲染装置400包括数据处理模块410和渲染模块420。其中,数据处理模块410和渲染模块420的实现功能与第一实施例中对应的步聚一一对应,为避免赘述,本实施例不一一详述。

数据处理模块410,用于将外存中的待处理数据进行分块,生成多个分块数据。

可选地,所述数据处理模块410,还用于:将外存中的地形高程数据和纹理数据进行分块分层,生成多个大小为257×257的分块数据,且每个所述分块数据的相邻边留有1个像素的重叠带。

渲染模块420,用于通过并行且实时的加载多个所述分块数据,对加载的每个所述分块数据进行三维地形渲染。

可选地,所述渲染模块420,还用于:通过并行且实时的加载多个所述分块数据,利用gpu可编程渲染管线将对每个所述分块数据中的每一顶点和每一像素进行三维地形渲染。

可选地,所述渲染模块420,还用于:通过子线程基于运动趋势以实现对所述分块数据的动态调度、实时加载和卸载;通过主线程对所述分块数据实时三维地形渲染。

在一可能的实施例中,在所述渲染模块,所述三维地形渲染装置400还包括:卸载模块;

所述卸载模块,用于若所述分块数据渲染完成后,实时的卸载所述分块数据。

第三实施例

如图4所示,是终端设备300的示意图。所述终端设备300包括存储器302、处理器304以及存储在所述存储器302中并可在所述处理器304上运行的计算机程序303,所述计算机程序303被处理器304执行时实现第一实施例中的所述三维地形渲染方法,为避免重复,此处不再赘述。或者,所述计算机程序303被处理器304执行时实现第二实施例所述三维地形渲染装置中各模型/单元的功能,为避免重复,此处不再赘述。

示例性的,计算机程序303可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器302中,并由处理器304执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序303在终端设备300中的执行过程。例如,计算机程序303可以被分割成第二实施例中的数据处理模块410和渲染模块420,各模块的具体功能如第一实施例或第二实施例所述,在此不一一赘述。

终端设备300可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。

其中,存储器302可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器302用于存储程序,所述处理器304在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流程定义的方法可以应用于处理器304中,或者由处理器304实现。

处理器304可能是一种集成电路芯片,具有信号的处理能力。上述的处理器304可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

可以理解的是,图4所示的结构仅为终端设备300的一种结构示意图,终端设备300还可以包括比图4所示更多或更少的组件。图4中所示的各组件可以采用硬件、软件或其组合实现。

第四实施例

本发明实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现第一实施例中的所述三维地形渲染方法,为避免重复,此处不再赘述。或者,所述计算机程序被处理器执行时实现第二实施例所述三维地形渲染装置中各模型/单元的功能,为避免重复,此处不再赘述。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景的方法。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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