CN112843700B - 地形图像的生成方法、装置、计算机设备和存储介质 - Google Patents
地形图像的生成方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112843700B CN112843700B CN202110243990.1A CN202110243990A CN112843700B CN 112843700 B CN112843700 B CN 112843700B CN 202110243990 A CN202110243990 A CN 202110243990A CN 112843700 B CN112843700 B CN 112843700B
- Authority
- CN
- China
- Prior art keywords
- terrain
- target
- height map
- data
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/63—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
Abstract
本申请涉及一种地形图像的生成方法、装置、计算机设备和存储介质。从高度图中提取高度数据,并确定所述高度图中各像素点的法线数据;基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;对所述目标子块数据进行渲染得到地形图像。采用本方法能够降低存储的数据量,并在渲染时降低计算资源的消耗。
Description
技术领域
本申请涉及图像处理技术领域,特别是涉及一种地形图像的生成方法、装置、计算机设备和存储介质。
背景技术
随着图像处理技术的不断发展,图像处理技术也被应用到各个不同的应用领域中,例如通过图像处理技术来进行地形渲染,以显示地形图像。在当前虚幻引擎的移动端地形系统中,需要将地形高度相关数据进行存储,以便在渲染地形大块时,利用该地形高度相关数据进行地形大块的渲染,然后将渲染的地形图像进行显示。然而,采用上述方案将会存储大量的数据,而且渲染时消耗大量的计算资源。
发明内容
基于此,有必要针对上述技术问题,提供一种的地形图像的生成方法、装置、计算机设备和存储介质,能够降低存储的数据量,并在渲染时降低计算资源的消耗。
一种地形图像的生成方法,所述方法包括:
从高度图中提取高度数据,并确定所述高度图中各像素点的法线数据;
基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
对所述目标子块数据进行渲染得到地形图像。
一种地形图像的生成装置,所述装置包括:
提取模块,用于从高度图中提取高度数据;
第一确定模块,用于确定所述高度图中各像素点的法线数据;
生成模块,用于基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
第二确定模块,用于在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
筛选模块,用于从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
渲染模块,用于对所述目标子块数据进行渲染得到地形图像。
在其中的一个实施例中,所述目标节点是通过对所述节点树的节点逐个遍历所得;所述装置还包括:
去重模块,用于在逐个遍历所述节点树的节点的过程中,每查找出与所述视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;基于所述目标节点的序列号,对各所述目标节点进行去重处理;
划分模块,用于在去重后的目标节点中获取将连续的序列号所对应的目标节点;
所述渲染模块,还用于分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;根据所述实例化元素数据进行渲染得到地形图像。
在其中的一个实施例中,所述提取模块,还用于从地形资源文件中读取待解压高度图;对所述待解压高度图进行异步解压,得到解压后的高度图;在所述高度图中提取像素值;根据提取的像素值确定各所述高度图对应的高度数据。
在其中的一个实施例中,所述装置还包括:
获取模块,用于获取目标分辨率的所述高度图;
切块模块,用于根据所述目标分辨率和预设块尺寸对所述高度图进行切块;
导入模块,用于将切块后的所述高度图导入目标绘制引擎;
压缩模块,用于在所述目标绘制引擎中对切块后的所述高度图进行压缩;
存储模块,用于将压缩后的高度图作为所述待解压高度图存储至所述地形资源文件中。
在其中的一个实施例中,所述压缩模块,还用于在所述目标绘制引擎中,从切块后的所述高度图中提取小波系数,将所述小波系数进行量化,将量化后的小波系数进行压缩编码;
所述提取模块,还用于基于与所述小波算法对应的逆变换对所述待解压高度图进行异步解压,得到解压后的高度图。
在其中的一个实施例中,所述装置还包括:
修改模块,用于对于导入目标绘制引擎的所述高度图,当所述高度图的目标分辨率高于所述目标绘制引擎默认的分辨率时,则将所述目标绘制引擎中的地形坐标类型从整型修改为浮点型;
所述筛选模块,还用于确定所述目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;所述顶点坐标的类型为所述浮点型;依据各所述地形顶点的顶点坐标渲染所述待渲染子地形块,得到由各子地形块组成的地形图像。
在其中的一个实施例中,所述筛选模块,还用于对于所述目标子块数据对应的待渲染子地形块中的各地形顶点,获取各所述地形顶点所在网格的网格坐标;获取各所述地形顶点的偏移值;根据所述网格坐标和所述偏移值确定各所述地形顶点的水平坐标;根据所述高度图中各像素点的像素值得到各所述地形顶点的高度值;根据所述水平坐标和所述高度值确定各所述地形顶点的顶点坐标。
在其中的一个实施例中,所述筛选模块,还用于依据各所述地形顶点的顶点坐标合并成实例化元素数据;将所述实例化元素数据传递至所述目标绘制引擎的着色器,以使所述着色器基于所述实例化元素数据渲染所述待渲染子地形块。
在其中的一个实施例中,所述第一确定模块,还用于在对所述高度图中当前的像素点进行法线数据计算时,获取与所述当前的像素点相邻的像素点对应的像素值;基于所述相邻的像素点对应的像素值,确定所述当前的像素点的法线数据,直至得到所述高度图中各像素点的法线数据。
在其中的一个实施例中,所述节点树包括至少两个节点层级的四叉树;所述生成模块,还用于构造地形的根节点;以所述根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;所述目标层级为所述当前节点层级的下一层级;当所述目标层级的节点满足停止分解条件时,将所述目标层级的节点作为叶子节点,得到所述四叉树。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
从高度图中提取高度数据,并确定所述高度图中各像素点的法线数据;
基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
对所述目标子块数据进行渲染得到地形图像。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
从高度图中提取高度数据,并确定所述高度图中各像素点的法线数据;
基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
对所述目标子块数据进行渲染得到地形图像。
上述地形图像的生成方法、装置、计算机设备和存储介质,从高度图中提取高度数据,并确定高度图中各像素点的法线数据,由于只存储高度图,法线数据在生成过程中计算出来,从而可以有效地降低了地形资源文件的大小,避免了存储资源的浪费。基于高度数据和法线数据生成与高度图对应的地形块数据,将地形块数据中的各子块数据存放于节点树的节点;确定视场区域,从节点树的节点中筛选位于视场区域内的目标节点,从而将不在视场区域内的子块数据删除,只对目标节点中的目标子块数据进行渲染得到地形图像,从而可以避免在渲染地形大块时需要渲染该地形大块的所有地形块数据,降低了渲染时消耗的计算资源,有利于提高运行速率。
附图说明
图1为一个实施例中地形图像的生成方法的应用环境图;
图2为一个实施例中地形图像的生成方法的流程示意图;
图3为一个实施例中视锥体的示意图;
图4为一个实施例中得到地形图像的步骤的流程示意图;
图5为另一个实施例中地形图像的生成方法的流程示意图;
图6为一个实施例中应用于游戏应用场景的地形示意图;
图7a为另一个实施例中地形图像的生成方法的流程示意图;
图7b为另一个实施例中地形图像的生成方法的流程示意图;
图8为一个实施例中计算当前像素点的法线过程中,当前像素点与相邻像素点的示意图;
图9为一个实施例中合并不同子块数据的示意图;
图10为一个实施例中地形子块与地形网格的示意图;
图11为一个实施例中地形图像的生成装置的结构框图;
图12为另一个实施例中地形图像的生成装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在描述具体实施例之前,这里先对本申请所出现的一些术语进行解释,具体如下:
贴图UV坐标:用来采样贴图(Texture)像素的坐标,一般左上角是(0,0),右下角(1,1)。
包围盒(Box),是用于框定地形的一个立体盒子。
地形高度,可以指地形中的每一个顶点(Vertex)竖直方向上的坐标,在坐标的取值范围内,中间值为0,低于这个值为负值,高于这个值为正值。
高度图,该高度图中像素XY与地形网格(Grid)的顶点坐标XY相对应,将地形网格中每个顶点的高度量化到特定的范围,将其作为一个贴图的像素,从而可以得到高度图。
异步执行:当执行某项任务时,需等待该项任务完成之后,再转到另一项任务。
Vertex Shader(顶点着色引擎),该顶点着色引擎也称为顶点遮蔽器,是一种增加各式特效在3D场影中的处理单元,顶点着色引擎的可程式化特性允许开发者靠加载新的软件指令来调整各式的特效,每一个顶点将被各种的数据变素清楚地定义,至少包括每一顶点的x、y、z坐标,每一点顶点可能包含的数据有颜色、最初的径路、材质和光线特征等。
Pixel Shader(像素着色器),该像素着色器是一组指令,这组指令在像素被渲染时执行。在每个执行时间,都会有很多像素被渲染。
Compute Shader(计算着色器),给计算着色器是一组指令,这组指令主要是执行通用计算,将高度数据计算存储到另外一张贴图里。
VTF(Vertex Texture Fetch,顶点纹理拾取),可以指在顶点着色器里读取贴图。
QuadTree(四叉树),该四叉树是一种树状数据结构,在每一个节点上会有四个子区块。
Vertex Buffer(顶点缓冲),该顶点缓冲可以是一块存放顶点数据的内存缓冲区。
Index Buffer(索引缓冲),该索引缓冲用于在绘制时,每一个索引(Index)元素,指明顶点(Vertex)的偏移位置。
Instanced Buffer(实例化缓冲):用于存放实例化(Instance)数据的内存缓冲区。其中,实例化数据可以指在绘制地形时对地形网格的顶点数据(包括高度数据和法线数据)进行实例化所得的数据,属于实例绘制过程中的基本单位数据。例如,地形中有许多相同的物体(如花、草石头等),在进行地形绘制时,可以采用实例绘制的方式,将地形网格的顶点数据转换成实例化数据,然后将该实例化数据提交给GPU(图形处理器)进行绘制,从而可以减少提交次数,加快地形的绘制效率。
小波算法:是一种资料压缩(data compression)的算法,主要是利用离散小波转换来处理。该小波算法也能适用于图像压缩(image compression)、视频压缩(videocompression)和音频压缩(audio compression)。
本申请提供的地形图像的生成方法,可以应用于如图1所示的应用环境中。在该应用环境中,包括终端102、终端104和服务器106。其中,该地形图像的生成方法可以由终端102、终端104或服务器106执行,也可以由其中的至少两种设备协同执行。这里,以由终端104执行地形图像的生成方法为例,终端104从服务器106获取高度图,该高度图可以是由终端102处理并上传至服务器106,然后从高度图中提取高度数据,并确定高度图中各像素点的法线数据;基于高度数据和法线数据生成与高度图对应的地形块数据;在地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;从各节点中的子块数据中筛选位于视场区域内的目标子块数据;对视场区域内的目标子块数据进行渲染得到地形图像,然后进行显示。
其中,终端102和终端104可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
服务器106可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端102、终端104和服务器106之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种地形图像的生成方法,以该方法应用于图1中的终端104为例进行说明,包括以下步骤:
S202,从高度图中提取高度数据,并确定高度图中各像素点的法线数据。
其中,高度图中各像素点的像素值可用来表示地形高度,从而可以利用该高度图来创建地形。对应地,高度图可以是用于表示地形高度的图像。需要指出的是,在利用高度图创建地形时,可以先创建与该高度图尺寸相同的地形网格,并将该高度图上用于表示地形高度的像素值作为该地形网格中顶点的高度值。因此,高度图中的像素点与地形网格中的顶点一一对应,且每一个像素点都指定了地形网格中某个顶点的高度值。此外,法线数据可以是表示高度图中各像素点的法线的向量数据,也可以指地形网格中顶点的法线的向量数据,用来渲染地形的光线。例如,在创建地形时,可以根据该法线数据来渲染地形的光线,从而在视觉上可以观看出地形光照处和背光处的明亮度。
在实际应用中,上述的高度图可以是单通道的灰度图,其像素值的取值范围为0~255。其中,该高度图中的像素值表示地形高度,亮度越大对应的地形高度越高。需要指出的是,该高度图在存储于地形资源文件之前,可以对该高度图进行切块,以便将切块后的高度图存储于地形资源文件,因此S202中所述的高度图即为切块后的高度图。
具体地,终端可以从地形资源文件的高度图中提取高度数据,并确定高度图中各像素点的法线数据。其中,地形资源文件可以是用于存储与地形相关的资源文件,如存储与地形相关的高度图。
在一个实施例中,终端可以根据虚拟角色的方位获取虚拟环境相应的高度图,然后从地形资源文件的高度图中提取高度数据。例如,用户在玩游戏时,终端可以根据用户操作的虚拟角色的方位获取高度图,以便将该虚拟角色附近的地形图像显示出来。
对于高度数据的提取,具体步骤可以包括:终端从地形资源文件中读取待解压高度图,其中,该待解压高度图是地形资源文件中经过压缩的高度图;对待解压高度图进行异步解压,得到解压后的高度图;在高度图中提取像素值;根据提取的像素值确定各高度图对应的高度数据。其中,待解压高度图指的是压缩后的高度图。
在一个实施例中,对于地形资源文件的获取,终端可以从服务器获取地形资源文件,或者从本地获取地形资源文件,然后从该地形资源文件中提取对应的高度图。
在一个实施例中,该地形资源文件中可以只保存与地形相关的高度图,不保存该地形相关的法线数据,如此,可以有效地降低资源包的大小。例如,对于游戏应用场景,地形资源文件中不保存法线数据,可以有效降低游戏包体大小。
在设计过程中,对于地形资源文件的形成,可以采用以下方法步骤得到地形资源文件:终端获取目标分辨率的高度图;根据目标分辨率和预设块尺寸对高度图进行切块;将切块后的高度图导入目标绘制引擎;在目标绘制引擎中对切块后的高度图进行压缩;将压缩后的高度图作为待解压高度图存储至地形资源文件中。其中,切块可以指将高分辨率的高度图切分成小块的高度图,例如,分辨率为1024×1024的高度图切分成分辨率为256×256的高度图。目标绘制引擎可以是虚幻引擎(Unreal Engine,UE),如UE4或UE5。通过将高度图导入目标绘制引擎,可以通过目标绘制引擎来压缩高度图并存储于地形资源文件中,可以有效地降低了地形资源文件的数据大小,而且地形资源只存储压缩后的高度图,而不存储法线数据,进一步降低了地形资源文件的数据大小,避免了存储资源的浪费。
具体地,在进行压缩时,终端可以采用小波算法对切块后的高度图进行压缩。其中,终端采用小波算法压缩的步骤具体可以包括:终端从切块后的所述高度图中提取小波系数,将所述小波系数进行量化,将量化后的小波系数进行压缩编码。对应地,对于S202,在获得地形资源文件中的待解压高度图(即压缩后的高度图)时,终端采用小波算法逆变换对待解压高度图进行解压,得到解压后的高度图。
在一个实施例中,在设计过程中,终端在获得未切块的高度图(如分辨率为1024×1024的高度图)后,确定该高度图的目标分辨率,根据目标分辨率和预设块尺寸对该高度图进行切块,以便将切块后的高度图进行压缩以保存至地形资源文件,因此地形资源文件中的高度图是切块后的小块高度图。其中,切块后的高度图尺寸大小可以是预先进行设定,具体的可以为预设块尺寸。例如,将原始的高度图切成小块的高度图,该小块的高度图也可称为瓦块(Tile),所有瓦块大小是固定的,具体大小可以是TileSize,高度图的目标分辨率为MapW×MapH,对应的Tile数量即为(MapW/TileSize)×(MapH/TileSize)。举例来说,在得到分辨率为1024×1024的高度图时,假设每个瓦块大小的TileSize=256×256,则对应的Tile数量即为(1024/256)×(1024/256)=16。
S204,基于高度数据和法线数据生成与高度图对应的地形块数据。
其中,一个高度图可以对应一个地形块。地形块数据可以指包含高度数据和法线数据的地形块图形,或者是基于高度数据和法线数据形成的地形块图形,该地形块图形可以是高度法线图,根据该地形块数据可以获得地形的高度和法线。地形块数据对应的地形可以是LOD(Levels of Detail,多细节层次)地形,在LOD地形当中,距离虚拟摄像头较近的地形,地形的三角网格较多;对应地,距离虚拟摄像头较远的地形,地形的三角网格较少,因此在生成地形图形时渲染速度高,对于游戏应用场景而言,游戏运行效率高,而且在距离虚拟摄像头较近的地方,看到的地形就更细致更真实。其中,虚拟摄像头可以是配置在虚拟角色某个部位(如头部)上的虚拟的摄像头,用于确定虚拟角色的视场区域,即该虚拟摄像头的拍摄区域即为虚拟对象所观察到的视场区域。此外,在第一人称视角下,该虚拟角色的视场区域也是操作该虚拟对象的用户在显示器上所观看到的画面区域。
在一个实施例中,对于地形块数据的生成,终端可以根据高度数据生成三维的地形高度贴图,然后将法线数据保存至该地形高度贴图中,从而得到与高度图对应的地形块数据。例如,在异步解压高度图得到高度数据之后,进入构建地形高度贴图的过程,即把地形网格中顶点的法线数据存储到该地形高度贴图上,得到与高度图对应的地形块数据。
在另一个实施例中,对于地形块数据的生成,终端可以将高度数据写入到贴图数据中,然后发起计算着色器(Compute Shader)请求,以使计算着色器将贴图数据和法线数据写入另一地形贴图中,得到地形块数据。
S206,在地形块数据中的各子块数据存放于节点树的节点后,确定视场区域。
其中,该节点树可以包括至少两个节点层级的四叉树(QuadTree),该四叉树的每一个节点上有四个子区块,每个子区块可存放地形块数据中的子块数据。
其中,视场区域可以指虚拟角色所观察的视野范围。例如,在游戏应用场景中,用户控制的虚拟角色所能观察到的视野范围。
在一个实施例中,由用户控制的虚拟角色均配置了一个虚拟摄像头,如在虚拟角色的头部设置虚拟摄像头,跟随虚拟角色的移动而移动。具体地,终端根据虚拟角色的方位确定虚拟摄像头的方位,然后根据该范围确定视场区域。其中,方位可以指方向和位置。
具体地,视场区域可以是视锥体所包含的区域。参考图3,终端在根据虚拟角色的方位确定虚拟摄像头的方位之后,根据虚拟摄像头的方位确定视场区域,然后生成包括视场区域的视锥体。例如,先确定视场区域的边界点,该边界点可以是边界顶点,如图3中的边界顶点A~E,然后将边界顶点A~E连接起来,从而可以得到视锥体。其中,边界可以指视场区域与非可视区域之间交界的界线。对应地,边界点即为边界上的顶点。
在一个实施例中,在S206之前,终端可以先构建四叉树(QuadTree),对于四叉树的构建,具体方法可以包括:终端构造地形的根(Root)节点;以根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;其中,该目标层级为当前节点层级的下一层级;当目标层级的节点满足停止分解条件时,将目标层级的节点作为叶子节点,得到四叉树。例如,终端先构造最顶层的节点,然后逐层分解(即将一个父节点分解成4个小的子节点),每个子节点对应的区块均分1/4父节点的区块,直到不能分解(即达到最小的地形块)。
其中,在四叉树中,每个节点对应一个地形的区块。根(Root)节点对应的区块最大,该区块的尺寸与包围整个地形块的Box的尺寸一致,节点层级(Level)记为0。该地形块与切块后的高度图尺寸一致,一个切块后的高度图对应一个地形块;此外,需要指出的是,该Box的尺寸可以大于或等于地形块的尺寸。在构建根节点后,再往下处理低节点层级的节点,每个节点的下一个节点层级都由4个子节点组成,由于是规则的QuadTree,所以每个子节点边的大小都是父节点的1/4。此外,4个子节点对应的区块大小相同,该4个子节点的区块是对父节点的区块(LocalBox)进行均分所得的。
S208,从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据。
其中,该节点树为四叉树,每个四叉树中节点的区块均存储了地形块数据,并且每个节点均保存了该地形块数据的位置信息,从而在进行节点筛选时,可以根据各节点所保存的位置判断是否存在位于视场区域内的目标节点。具体地,终端可以获取视场区域各边界或边界顶点的坐标,从而得到视场区域所有的坐标取值范围;当节点树中的目标节点对应的位置信息落入该坐标取值范围时,表示目标节点落入视场区域内。例如,如图3所示,目标节点所保存的位置信息为a=(0.5,0.5),若视场区域边界顶点B~E的坐标分别为(0,0),(0,1),(1,0),(1,1),从而该视场区域所有的坐标取值范围为x:0~1,y:0~1,而a=(0.5,0.5)中的数值0.5属于0~1之间的一个值,因此可以确定目标节点位于视场区域内。
在一个实施例中,在确定视场区域后,得到视场区域的边界,然后查找节点树中落入视场区域内的节点,该节点即为所要获取的目标节点,然后从该目标节点中获取目标子块数据。
在一个实施例中,S208之前,终端可以生成一个视锥体,具体步骤包括:终端确定虚拟摄像头的方位;根据虚拟摄像头的方位确定视场区域,以便生成包括该视场区域的视锥体。其中,视锥体内的区域即为视场区域,处于该视锥体内的区域是虚拟对象能够观看到的范围。因此,对于游戏应用场景,若游戏画面为第一人称视角的画面,用户在玩游戏的过程中,虚拟对象所能观看到的视场区域也是用户需要在显示器上所要看到的视场区域,如同用户置身于游戏环境中。
在一个实施例中,终端生成包括视场区域的视锥体,在节点树的节点中查找与视锥体相交的目标节点;获取存放于目标节点中的目标子块数据。其中,节点中的子块数据具有位置信息,视锥体也具有位置信息,因此将节点树与视锥体置于同一坐标系中,然后计算节点树中的节点是否与视锥体相交,也即节点树中的节点是否位于视锥体的边界范围内,从而得到与视锥体相交的目标节点。
在一个实施例中,目标节点是通过对节点树的节点逐个遍历所得;该方法还包括:在逐个遍历节点树的节点的过程中,每查找出与视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;基于目标节点的序列号,对各目标节点进行去重处理;在去重后的目标节点中获取将连续的序列号所对应的目标节点。由于在进行实例绘制时,需要将各目标子块数据转化为实例化数据,而且各实例化数据的序列是连续的,因此这里获取连续序列号所对应的目标节点,以便将连续序列号所对应的目标节点中的目标子块数据转化为实例化数据。
S210,对目标子块数据进行渲染得到地形图像。
在一个实施例中,S210具体可以包括:终端分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;根据实例化元素数据进行渲染得到地形图像。其中,该实例化元素数据也可称为实例化数据,是指在绘制地形时对地形网格的顶点数据(包括高度数据和法线数据)进行实例化所得的数据,属于实例绘制过程中的基本单位数据。
上述实施例中,从地形资源文件的高度图中提取高度数据,并确定高度图中各像素点的法线数据,由于地形资源文件只存储高度图,法线数据在生成过程中计算出来,从而可以有效地降低了地形资源文件的大小,避免了存储资源的浪费。基于高度数据和法线数据生成与高度图对应的地形块数据,将地形块数据中的各子块数据存放于节点树的节点;确定视场区域,从节点树的节点中筛选位于视场区域内的目标节点,从而将不在视场区域内的子块数据删除,只对目标节点中的目标子块数据进行渲染得到地形图像,从而可以避免在渲染地形大块时需要渲染该地形大块的所有地形块数据,降低了渲染时消耗的计算资源,有利于提高运行速率。
在一个实施例中,如图4所示,该方法还包括:
S402,对于导入目标绘制引擎的高度图,当高度图的目标分辨率高于目标绘制引擎默认的分辨率时,则将目标绘制引擎中的地形坐标类型从整型修改为浮点型。
其中,目标绘制引擎中原始的地形坐标属于整数型的坐标,为了适应更高精度的地形,将地形坐标的类型改为浮点型。其中,地形坐标属于整数型:指的是地形坐标的取值是整数,如地形坐标为(1,1)。地形坐标属于浮点型指的是地形坐标的取值为小数,该小数可以是一位小数或多位小数,如一位小数的地形坐标为(1.0,1.0),二位小数的地形坐标为(1.00,1.00)。在实际应用中,浮点型可以是16位小数。
例如,高精度地图的分辨率是1024×1024,对应的高精度地形坐标的取值是0,1,2,3…,1024;目标绘制引擎默认的正常精度地图的分辨率为256×256,当高度图的目标分辨率高于目标绘制引擎默认的分辨率时,由于在目标绘制引擎设置的高度图的大小倍数是4。那么该高精度地形坐标的取值除以4,得到正常精度的浮点坐标,其取值为0,0.25,0.75,1.0,…,256。如此,可以得到的局部网格横坐标和纵坐标范围仍然是0~256,其中有些坐标变成了浮点型数据,即不全是正整数。需要指出的是,上述高度图的大小倍数是目标绘制引擎中的一个参数。用户在导入高精度的高度图时,可以设置该高度图的大小倍数,以便在利用高精度的高度图绘制地形时,可以将高精度地形坐标转换为目标绘制引擎所支持的0~256范围内的数值,从而得到正常精度的浮点坐标,因此目标绘制引擎可以支持利用高精度的高度图来绘制地形。
S404,确定目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;顶点坐标的类型为浮点型。
在一个实施例中,S404具体可以包括:终端对于目标子块数据对应的待渲染子地形块中的各地形顶点,获取各地形顶点所在网格的网格坐标,其中该网格坐标转为浮点型的坐标;获取各地形顶点的偏移值,该地形顶点的偏移值是相对于当前地形网格左上角顶点的偏移量;根据网格坐标和偏移值确定各地形顶点的水平坐标;根据高度图中各像素点的像素值得到各地形顶点的高度值;根据水平坐标和高度值确定各地形顶点的顶点坐标,该顶点坐标的类型为浮点型。其中,地形顶点可以指地形的一个坐标点,与地形网格中的顶点相对应,即在根据地形网格绘制地形时,地形网格中的每个顶点对应一个地形顶点。
在获得地形顶点的高度值之后,可以将该高度值存储到关于地形位置的Z分量里,其中,关于地形位置的分量包括X、Y和Z三个分量,Z分量用于存储地形顶点的高度值,而X分量和Y分量用于存储X坐标值和Y坐标值。对于X坐标值和Y坐标值的获取,可以通过获取法线数据来得到X坐标值和Y坐标值,将法线数据中的X坐标值和Y坐标值分别存储于X分量和Y分量,该XYZ分量即为地形顶点的顶点坐标。其中,X、Y和Z三个分量分别是地形系统中的三个用于保存地形位置(即地形顶点)的分量。
S406,依据各地形顶点的顶点坐标渲染待渲染子地形块,得到由各子地形块组成的地形图像。
在一个实施例中,S406具体可以包括:依据各地形顶点的顶点坐标合并成实例化元素数据;将实例化元素数据传递至目标绘制引擎的着色器,以使着色器基于实例化元素数据渲染待渲染子地形块。
上述实施例中,当绘制高于目标绘制引擎所支持的分辨率的地形图像时,可以对目标绘制引擎原始的坐标类型进行修改,即修改为浮点型,从而可以支持高精度的高度图,以生成高精度的地形图像,提高了图像的分辨率。当绘制与目标绘制引擎所支持的分辨率一致的地形图像时,可以采用目标绘制引擎原始的坐标类型,从而使得目标绘制引擎可以灵活支持不同分辨率的地形图像的绘制。
在一个实施例中,如图5所示,S202中的“确定高度图中各像素点的法线数据”具体可以包括:
S502,在对高度图中当前的像素点进行法线数据计算时,获取与当前的像素点相邻的像素点对应的像素值。
其中,相邻的像素点可以是当前的像素点的上下左右像素点。例如,当前的像素点为O,其相邻像素点可以是与像素点O上下左右相邻的像素点。
S504,基于相邻的像素点对应的像素值,确定当前的像素点的法线数据,直至得到高度图中各像素点的法线数据。
其中,终端可以使用Compute Shader进行法线数据计算,计算法线方法可参考如下法线数据计算公式:
N=(2×(R-L),2×(B-T),-4)
其中,N表示当前计算的像素点O的法线数据,该法线数据的表现形式为向量,通过上述公式可以计算出用于表示像素点O法线的向量。需要指出的是,上述公式中的“2×(R-L)”、“2×(B-T)”和“-4”分别为向量中的一个分量。而T、B、L和R分别表示像素点O的上下左右像素点的像素值,而像素点O是当前计算的像素点,如图8所示。然后计算除O点之外的其他像素点,直至得到高度图中各像素点的法线数据。通过上述公式可以实时计算出法线数据,从而只保存高度图,而无需额外保存法线数据,在绘制地形时,可以实时采用上述公式并将高度图中各像素点的像素值作为该式中的参数便可计算出法线数据,因此可以有效地避免因保存法线数据而造成存储资源的浪费。
S506,基于高度数据和法线数据生成与高度图对应的地形块数据。
S508,在地形块数据中的各子块数据存放于节点树的节点后,确定视场区域。
S510,从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据。
S512,对目标子块数据进行渲染得到地形图像。
其中,上述S506~S512的具体步骤可以上述实施例中的S204~S210。
上述实施例中,通过相邻的像素点的像素值可以计算出高度图中各像素点的法线数据,从而无需在地形资源文件存储法线数据,只需存储高度图即可,从而可以有效地降低了地形资源文件的大小,避免了存储资源的浪费。
作为一个示例,本申请还提供一种游戏应用场景,该游戏应用场景应用上述的地形图像的生成方法。具体地,该地形图像的生成方法在该游戏应用场景的应用如下:
用户在进行游戏的过程中,可以根据所控制的虚拟对象的方位从地形资源文件中读取高度图,然后从该高度图中提取高度数据,并确定高度图中各像素点的法线数据;基于高度数据和法线数据生成与高度图对应的地形块数据;在地形块数据中的各子块数据存放于节点树的节点后,确定虚拟对象的视场区域;从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据;对目标子块数据进行渲染得到地形图像,然后显示地形图像,如图6所示。在游戏过程中,当显示出地形图像之后,还会将位于该地形图像中的敌方角色显示出来,此时用户可以通过游戏道具(如狙击枪)瞄准敌方角色31的位置,然后进行攻击。
作为一个示例,本申请的方法包括:在数据准备阶段,先对未切块的高度图进行切块,如将分辨率为1024×1024的高度图切分成4个256×256的小块高度图,然后将切块后的高度图导入虚幻引擎。在UE4(Unreal Engine4,虚幻引擎4)中,采用小波压缩算法压缩地形的高度图到Cooked资源(即上述的地形资源文件),地形资源文件中只存储高度图,不存储法线数据。因此,对于游戏应用场景,由于地形资源文件不存储法线数据,从而使游戏包体减小。
在进行地形渲染时,获取地形资源文件中的高度图,然后采用异步线程解压该高度图,得到高度数据。接着,计算着色器根据高度图计算法线数据,然后将该法线数据和高度数据写入地形高度贴图中。其中,地形高度贴图中的RG(Red Green,红色和绿色)值用来表示高度数据,GA(Green Alpha,绿色和不透明度参数)表示法线数据。
其中,在进行地形渲染时,由于UE4的地形精度最高只有256×256,而在利用高分辨率(如1024×1024)的高度图绘制地形时,地形精度达到1024×1024,此时UE4无法支持,因此可以在不改变精度256×256的坐标上限的情况下,使用浮点坐标使之支持更高分辨率的高度图。具体过程可以是:通过高精度的高度图得到地形的顶点坐标时,利用在UE4中设置的高度图的大小倍数4对该顶点坐标求商,从而得到浮点型的、且数值大小在0~256范围内的顶点坐标。因此,可以支持单块精度是1024×1024的地形,从而给地形系统提供非常高的多边形细节,能在移动设备(如手机)下绘制很细的小河流。
此外,在进行地形绘制时,为了避免对大的地形块数据中的某些未在显示器上显示的子块数据进行渲染,需要将地形块数据切分成更小的子块数据,然后将这些子块数据放进四叉树中进行筛选,即把四叉树中与视锥体相交的节点中的子块数据筛选出来,然后采用实例绘制的方式将该子块数据转换成实例化数据,然后对该实例化数据进行渲染,从而在固定视角下,只有在视野范围内和少量边缘地形块的子块数据被绘制,可以减少不必要的渲染,提高了渲染的效率。
接下来对,对上述各技术点进行进一步阐述,如图7a和图7b所示,具体如下所述:
(1)数据准备阶段
准备好未分块的高度图,然后对未分块的高度图进行切分,从而得到小块的高度图,其中,小块的高度图的尺寸是固定的。例如,假设每块高度图的尺寸TileSize=256×256,地图总的分辨率MapW×MapH=1024×1024,对应切的高度图块数就是(MapW/TileSize)/(MapH/TileSize)=(1024/256)×(1024/256)=16。
在UE4中填写高度图的大小倍数,以兼容UE4原有的地形系统。然后,执行高度图的导入,其中,高精度的高度图大小/高精度高度图的大小倍数=UE4原始高度图大小,这样就和原有UE4高度图大小兼容。
在导入高度图之后,使用小波算法压缩高度图,并将压缩好的高度图存储到地形资源文件中。其中,地形资源文件中存储压缩后的高度图,不存储法线数据,而法线数据可以在绘制地形时根据高度图构建法线数据。
(2)解压和生成高度贴图
在绘制地形的过程中,可以先从地形资源文件中按照虚拟对象的方位读取虚拟环境对应的高度图,然后采用异步处理的方式来对地形资源文件中读取的高度图进行解压,得到解压后的高度图。
其中,在对从地形资源文件中读取的高度图进行异步解压时,可以使用小波算法解压高度图得到高度数据,具体地:在从地形资源文件中读取的高度图中提取小波系数,将所述小波系数进行量化,将量化后的小波系数进行压缩编码。当完成异步解压过程时,进入构建地形高度贴图的过程,具体过程如下:先根据解压后的高度图计算地形网格顶点的法线数据,然后将该法线数据和高度数据存储到一张空白的贴图上,得到地形高度贴图。其中,在计算法线数据时,可以通过计算着色器计算法线数据计算,计算法线方法可参考如下法线计算公式:
N=(2×(R-L),2×(B-T),-4)
其中,N表示当前计算的像素点O的法线数据,该法线数据的表现形式为向量,通过上述公式可以计算出用于表示像素点O法线的向量。需要指出的是,上述公式中的“2×(R-L)”、“2×(B-T)”和“-4”分别为向量中的一个分量。而T、B、L和R分别表示像素点O的上下左右像素点的像素值,而像素点O是当前计算的像素点,如图8所示。
(3)在地形绘制时修改坐标类型
原始地形坐标都是整数,为了适应更高精度的地形,将其改为16位float数。对应地,坐标要在高精度的高度图坐标基础上除以高度图的大小倍数。因此,在游戏应用场景中,可以在游戏运行时,若高度图的分辨率高于UE4所支持的分辨率时,可以对基于高度图所得的地形坐标进行修改,得到浮点型的地形坐标。
例如,高精度地图的分辨率是1024×1024,对应的高精度地形坐标的取值是0,1,2,3…,1024;目标绘制引擎默认的正常精度地图的分辨率为256×256,当高度图的目标分辨率高于目标绘制引擎默认的分辨率时,由于在目标绘制引擎设置的高度图的大小倍数是4。那么该高精度地形坐标的取值除以4,得到正常精度的浮点坐标,其取值为0,0.25,0.75,1.0,…,256。如此,可以得到的局部网格横坐标和纵坐标范围仍然是0~256,其中有些坐标变成了浮点型数据,即不全是正整数。
(4)子块数据的筛选,以及获得实例化数据的过程
根据分块参数决定要将地形大块分成多少小块。
将每个地形块数据切分成多个子块数据,然后放进四叉树的相应节点,并且再节点中记录该子块数据的坐标。当绘制大块地形时,先根据虚拟对象的方位生成视锥体,然后计算视锥体和四叉树的节点之间存在相交的目标节点。获取目标节点中的子块数据(即为上述实施例中的目标子块数据),然后将目标子块数据转换成实例化数据,返回给UE4进行地形绘制。
在进行实例绘制时,各实例化数据的序列是连续的,因此在相交的目标节点中先把重复的目标节点进行删除,然后获取连续序列号所对应的目标节点,以便将连续序列号所对应的目标节点中的目标子块数据转化为实例化数据。
如图9所示,图9是实例化绘制过程中,将连续序列号对应的目标节点进行去重以及组合的例子。在遍历视锥体与四叉树中存在相交的目标节点的过程中,每次遍历得到一个相交的目标节点时,都会记载该目标节点的序列号。当在遍历四叉树中的一条子链a时,得到与视锥体相交的序列号为[0,1,2]的目标节点;同理,当在遍历四叉树中的一条子链b时,得到与视锥体相交的序列号为[5,6]的目标节点;当在遍历四叉树中的一条子链c时,得到与视锥体相交的序列号为[6,7,8]的目标节点,此时将出现重复的序列号为6的目标节点进行去重,然后进行组合得到[5,6,7,8]共四个目标节点。然后将这两组连续的目标节点中的子块数据转换为实例化数据。
(5)四叉树的构造
以根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;其中,该目标层级为当前节点层级的下一层级;当目标层级的节点满足停止分解条件时,将目标层级的节点作为叶子节点,得到四叉树。例如,终端先构造最顶层的节点,然后逐层分解(即将一个父节点分解成4个小的子节点),每个子节点对应的区块均分1/4父节点的区块,直到不能分解(即达到最小的地形块)。
(6)多细节层次的地形绘制
地形由规则的格子组成,每个格子由四个顶点组成,3D绘制多变地形的多边形是以三角型位形为单位,所以一个格子需要6个索引,(3个索引顶点组成一个三角型)。
传统的地形采用固定LOD,没有使用不同级别LOD融合。在本实施例中,最高级别LOD有所有的地形格子,下面一级别的LOD,地形宽和高格子数量各是原来的一半,再下面一级别,就在上一个级别上再减少一半,以此类推。每个级别LOD都生成对应的Index Buffer,当绘制不同LOD的时候,就选择不同的Index Buffer。
(7)LandscapeVertex Shader修改
UE4自带的移动(Mobile)版本,没有采样高度图的功能。
UE4自带的桌面(Desktop)版本,法线数据是在像素着色器中计算出来的。本申请中将这个采样过程改到了顶点着色器中进行计算,通过插值(Interpolant)函数传递到像素着色器,从而像素着色器在绘制地形时,对地形进行像素级的渲染,即渲染地形的像素得到地形图像。
在获得地形顶点的高度值之后,可以将该高度值存储到关于地形位置的Z分量里,其中,关于地形位置的分量包括X、Y和Z三个分量,Z分量用于存储地形顶点的高度值,而X分量和Y分量用于存储X坐标值和Y坐标值。对于X坐标值和Y坐标值的获取,可以通过获取法线数据来得到X坐标值和Y坐标值,将法线数据中的X坐标值和Y坐标值分别存储于X分量和Y分量,该XYZ分量即为地形顶点的顶点坐标。其中,X、Y和Z三个分量分别是地形系统中的三个用于保存地形位置(即地形顶点)的分量。
(8)实例化绘制
原有的UE4实现,地形网格的顶点坐标是直接传进去的。由于要进行实例绘制,所以增加了实例属性,即把包含地形网格的坐标的子块数据转换成实例化数据,然后将该实例化数据传输至图形处理器,从而利用图形处理器进行实例绘制。
其中,对于顶点坐标XY的计算,可以用如下方式计算:
顶点坐标X=LocalPos.x+Instance.x×(SectionSize)
顶点坐标Y=LocalPos.y+Instance.y×(SectionSize)。
其中,LocalPos.x和LocalPos.y是当前顶点的网格坐标,Instance.x和Instance.y是当前顶点所在地形子块的块坐标,SectionSize是每一个地形子块的单个网格的大小(横向和纵向相同)。如图10所示,图10是由8×8个小块组成的一个大地形块的例子,每个小块有4×4的地形网格。其中,图10中黑色粗体的坐标为地形子块的坐标,如黑色粗体的坐标(0,0)和(1,0)分别为第一个地形子块和第二个地形子块的坐标(即块坐标Instance.x和Instance.y);黑色细体的坐标为地形网格在地子块中的坐标(即网格坐标LocalPos.x和LocalPos.y),如第二个地形子块中黑色细体的坐标(0,0)和(3,3),分别表示第1个地形网格a在第二个地形子块中的坐标,以及第16个地形网格b在第二个地形子块中的坐标。
应该理解的是,虽然图2、4、5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4、5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种地形图像的生成装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:提取模块1102、第一确定模块1104、生成模块1106、第二确定模块1108、筛选模块1110和渲染模块1112,其中:
提取模块1102,用于从高度图中提取高度数据;
第一确定模块1104,用于确定高度图中各像素点的法线数据;
生成模块1106,用于基于高度数据和法线数据生成与高度图对应的地形块数据;
第二确定模块1108,用于在地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
筛选模块1110,用于从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据;
渲染模块1112,用于对目标子块数据进行渲染得到地形图像。
上述实施例中,从地形资源文件的高度图中提取高度数据,并确定高度图中各像素点的法线数据,由于地形资源文件只存储高度图,法线数据在生成过程中计算出来,从而可以有效地降低了地形资源文件的大小,避免了存储资源的浪费。基于高度数据和法线数据生成与高度图对应的地形块数据,将地形块数据中的各子块数据存放于节点树的节点;确定视场区域,从节点树的节点中筛选位于视场区域内的目标节点,从而将不在视场区域内的子块数据删除,只对目标节点中的目标子块数据进行渲染得到地形图像,从而可以避免在渲染地形大块时需要渲染该地形大块的所有地形块数据,降低了渲染时消耗的计算资源,有利于提高运行速率。
在一个实施例中,第二确定模块1108,还用于确定虚拟摄像头的方位;根据虚拟摄像头的方位确定视场区域;
筛选模块1110,还用于生成包括视场区域的视锥体,在节点树的节点中查找与视锥体相交的目标节点;获取存放于目标节点中的目标子块数据。
在一个实施例中,目标节点是通过对节点树的节点逐个遍历所得;如图12所示,该装置还包括:
去重模块1114,用于在逐个遍历节点树的节点的过程中,每查找出与视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;基于目标节点的序列号,对各目标节点进行去重处理;
划分模块1116,用于在去重后的目标节点中获取将连续的序列号所对应的目标节点;
渲染模块1112,还用于分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;根据实例化元素数据进行渲染得到地形图像。
在一个实施例中,提取模块1102,还用于从地形资源文件中读取待解压高度图;对待解压高度图进行异步解压,得到解压后的高度图;在高度图中提取像素值;根据提取的像素值确定各高度图对应的高度数据。
在一个实施例中,如图12所示,该装置还包括:
获取模块1118,用于获取目标分辨率的高度图;
切块模块1120,用于根据目标分辨率和预设块尺寸对高度图进行切块;
导入模块1122,用于将切块后的高度图导入目标绘制引擎;
压缩模块1124,用于在目标绘制引擎中对切块后的高度图进行压缩;
存储模块1126,用于将压缩后的高度图作为待解压高度图存储至地形资源文件中。
在一个实施例中,压缩模块1124,还用于在目标绘制引擎中,从切块后的高度图中提取小波系数,将小波系数进行量化,将量化后的小波系数进行压缩编码;
提取模块1102,还用于基于与小波算法对应的逆变换对待解压高度图进行异步解压,得到解压后的高度图。
在一个实施例中,如图12所示,该装置还包括:
修改模块1128,用于对于导入目标绘制引擎的高度图,当高度图的目标分辨率高于目标绘制引擎默认的分辨率时,则将目标绘制引擎中的地形坐标类型从整型修改为浮点型;
筛选模块1110,还用于确定目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;顶点坐标的类型为浮点型;依据各地形顶点的顶点坐标渲染待渲染子地形块,得到由各子地形块组成的地形图像。
在一个实施例中,筛选模块1110,还用于对于目标子块数据对应的待渲染子地形块中的各地形顶点,获取各地形顶点所在网格的网格坐标;获取各地形顶点的偏移值;根据网格坐标和偏移值确定各地形顶点的水平坐标;根据高度图中各像素点的像素值得到各地形顶点的高度值;根据水平坐标和高度值确定各地形顶点的顶点坐标。
在一个实施例中,筛选模块1110,还用于依据各地形顶点的顶点坐标合并成实例化元素数据;将实例化元素数据传递至目标绘制引擎的着色器,以使着色器基于实例化元素数据渲染待渲染子地形块。
在一个实施例中,第一确定模块1104,还用于在对高度图中当前的像素点进行法线数据计算时,获取与当前的像素点相邻的像素点对应的像素值;基于相邻的像素点对应的像素值,确定当前的像素点的法线数据,直至得到高度图中各像素点的法线数据。
在一个实施例中,节点树包括至少两个节点层级的四叉树;生成模块1106,还用于构造地形的根节点;以根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;其中,该目标层级为当前节点层级的下一层级;当目标层级的节点满足停止分解条件时,将目标层级的节点作为叶子节点,得到四叉树。
关于地形图像的生成装置的具体限定可以参见上文中对于地形图像的生成方法的限定,在此不再赘述。上述地形图像的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种地形图像的生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时,使得处理器执行以下步骤:从高度图中提取高度数据,并确定高度图中各像素点的法线数据;基于高度数据和法线数据生成与高度图对应的地形块数据;在地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据;对目标子块数据进行渲染得到地形图像。
在一个实施例中,计算机程序被处理器执行确定视场区域的步骤时,使得处理器具体执行以下步骤:确定虚拟摄像头的方位;根据虚拟摄像头的方位确定视场区域。以及,执行从节点树的节点中筛选位于视场区域内的目标节点,得到目标节点中的目标子块数据的步骤时,使得处理器具体执行以下步骤:生成包括视场区域的视锥体,在节点树的节点中查找与视锥体相交的目标节点;获取存放于目标节点中的目标子块数据。
在一个实施例中,目标节点是通过对节点树的节点逐个遍历所得;计算机程序被处理器执行时,使得处理器还执行以下步骤:在逐个遍历节点树的节点的过程中,每查找出与视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;基于目标节点的序列号,对各目标节点进行去重处理;在去重后的目标节点中获取将连续的序列号所对应的目标节点。以及,计算机程序被处理器执行对目标子块数据进行渲染得到地形图像的步骤时,使得处理器具体执行以下步骤:分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;根据实例化元素数据进行渲染得到地形图像。
在一个实施例中,计算机程序被处理器执行从高度图中提取高度数据的步骤时,使得处理器具体执行以下步骤:从地形资源文件中读取待解压高度图;对待解压高度图进行异步解压,得到解压后的高度图;在高度图中提取像素值;根据提取的像素值确定各高度图对应的高度数据。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行以下步骤:获取目标分辨率的高度图;根据目标分辨率和预设块尺寸对高度图进行切块;将切块后的高度图导入目标绘制引擎;在目标绘制引擎中对切块后的高度图进行压缩;将压缩后的高度图作为待解压高度图存储至地形资源文件中。
在一个实施例中,计算机程序被处理器执行在目标绘制引擎中对切块后的高度图进行压缩的步骤时,使得处理器具体执行以下步骤:在目标绘制引擎中,从切块后的高度图中提取小波系数,将小波系数进行量化,将量化后的小波系数进行压缩编码;以及,执行对待解压高度图进行异步解压,得到解压后的高度图的步骤时,使得处理器具体执行以下步骤:基于与小波算法对应的逆变换对待解压高度图进行异步解压,得到解压后的高度图。
在一个实施例中,计算机程序被处理器执行时,使得处理器还执行以下步骤:对于导入目标绘制引擎的高度图,当高度图的目标分辨率高于目标绘制引擎默认的分辨率时,则将目标绘制引擎中的地形坐标类型从整型修改为浮点型;以及,执行对目标子块数据进行渲染得到地形图像的步骤时,使得处理器具体执行以下步骤:确定目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;顶点坐标的类型为浮点型;依据各地形顶点的顶点坐标渲染待渲染子地形块,得到由各子地形块组成的地形图像。
在一个实施例中,计算机程序被处理器执行确定目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标的步骤时,使得处理器具体执行以下步骤:对于目标子块数据对应的待渲染子地形块中的各地形顶点,获取各地形顶点所在网格的网格坐标;获取各地形顶点的偏移值;根据网格坐标和偏移值确定各地形顶点的水平坐标;根据高度图中各像素点的像素值得到各地形顶点的高度值;根据水平坐标和高度值确定各地形顶点的顶点坐标。
在一个实施例中,计算机程序被处理器执行依据各地形顶点的顶点坐标渲染待渲染子地形块的步骤时,使得处理器具体执行以下步骤:依据各地形顶点的顶点坐标合并成实例化元素数据;将实例化元素数据传递至目标绘制引擎的着色器,以使着色器基于实例化元素数据渲染待渲染子地形块。
在一个实施例中,计算机程序被处理器执行确定高度图中各像素点的法线数据的步骤时,使得处理器具体执行以下步骤:在对高度图中当前的像素点进行法线数据计算时,获取与当前的像素点相邻的像素点对应的像素值;基于相邻的像素点对应的像素值,确定当前的像素点的法线数据,直至得到高度图中各像素点的法线数据。
在一个实施例中,节点树包括至少两个节点层级的四叉树;计算机程序被处理器执行时,使得处理器还执行以下步骤:构造地形的根节点;以根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;其中,该目标层级为当前节点层级的下一层级;当目标层级的节点满足停止分解条件时,将目标层级的节点作为叶子节点,得到四叉树。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (24)
1.一种地形图像的生成方法,其特征在于,所述方法包括:
从高度图中提取高度数据,并确定所述高度图中各像素点的法线数据;所述高度图是解析地形资源文件所得的,所述地形资源文件是目标绘制引擎对导入的所述高度图进行压缩并存储至相应文件所得的;
基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
对于导入所述目标绘制引擎的高度图,当所述高度图的目标分辨率高于目标绘制引擎默认的分辨率时,则将所述目标绘制引擎中的地形坐标类型从整型修改为浮点型;
对所述目标子块数据进行渲染得到地形图像,包括:
确定所述目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;所述顶点坐标的类型为所述浮点型;
依据各所述地形顶点的顶点坐标渲染所述待渲染子地形块,得到由各子地形块组成的地形图像。
2.根据权利要求1所述的方法,其特征在于,所述确定视场区域包括:
确定虚拟摄像头的方位;
根据所述虚拟摄像头的方位确定视场区域;
所述从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据包括:
生成包括所述视场区域的视锥体,在所述节点树的节点中查找与所述视锥体相交的目标节点;
获取存放于所述目标节点中的目标子块数据。
3.根据权利要求2所述的方法,其特征在于,所述目标节点是通过对所述节点树的节点逐个遍历所得;所述方法还包括:
在逐个遍历所述节点树的节点的过程中,每查找出与所述视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;
基于所述目标节点的序列号,对各所述目标节点进行去重处理;
在去重后的目标节点中获取连续的序列号所对应的目标节点;
所述对所述目标子块数据进行渲染得到地形图像包括:
分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;
根据所述实例化元素数据进行渲染得到地形图像。
4.根据权利要求1所述的方法,其特征在于,所述从高度图中提取高度数据包括:
从地形资源文件中读取待解压高度图;
对所述待解压高度图进行异步解压,得到解压后的高度图;
在所述高度图中提取像素值;
根据提取的像素值确定各所述高度图对应的高度数据。
5.根据权利要求4所述的方法,其特征在于,所述从地形资源文件中读取待解压高度图之前,所述方法还包括:
获取目标分辨率的所述高度图;
根据所述目标分辨率和预设块尺寸对所述高度图进行切块;
将切块后的所述高度图导入目标绘制引擎;
在所述目标绘制引擎中对切块后的所述高度图进行压缩;
将压缩后的高度图作为所述待解压高度图存储至所述地形资源文件中。
6.根据权利要求5所述的方法,其特征在于,所述在所述目标绘制引擎中对切块后的所述高度图进行压缩包括:
在所述目标绘制引擎中,从切块后的所述高度图中提取小波系数,将所述小波系数进行量化,将量化后的小波系数进行压缩编码;
所述对所述待解压高度图进行异步解压,得到解压后的高度图包括:
基于与小波算法对应的逆变换对所述待解压高度图进行异步解压,得到解压后的高度图。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据包括:
根据所述高度数据生成三维的地形高度贴图;
将所述法线数据保存至该地形高度贴图中,得到与所述高度图对应的地形块数据。
8.根据权利要求1所述的方法,其特征在于,所述确定所述目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标包括:
对于所述目标子块数据对应的待渲染子地形块中的各地形顶点,获取各所述地形顶点所在网格的网格坐标;
获取各所述地形顶点的偏移值;
根据所述网格坐标和所述偏移值确定各所述地形顶点的水平坐标;
根据所述高度图中各像素点的像素值得到各所述地形顶点的高度值;
根据所述水平坐标和所述高度值确定各所述地形顶点的顶点坐标。
9.根据权利要求8所述的方法,其特征在于,所述依据各所述地形顶点的顶点坐标渲染所述待渲染子地形块包括:
依据各所述地形顶点的顶点坐标合并成实例化元素数据;
将所述实例化元素数据传递至所述目标绘制引擎的着色器,以使所述着色器基于所述实例化元素数据渲染所述待渲染子地形块。
10.根据权利要求1至6任一项所述的方法,其特征在于,所述确定所述高度图中各像素点的法线数据包括:
在对所述高度图中当前的像素点进行法线数据计算时,获取与所述当前的像素点相邻的像素点对应的像素值;
基于所述相邻的像素点对应的像素值,确定所述当前的像素点的法线数据,直至得到所述高度图中各像素点的法线数据。
11.根据权利要求1至6任一项所述的方法,其特征在于,所述节点树包括至少两个节点层级的四叉树;所述方法还包括:
构造地形的根节点;
以所述根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;所述目标层级为所述当前节点层级的下一层级;
当所述目标层级的节点满足停止分解条件时,将所述目标层级的节点作为叶子节点,得到所述四叉树。
12.一种地形图像的生成装置,其特征在于,所述装置包括:
提取模块,用于从高度图中提取高度数据;所述高度图是解析地形资源文件所得的,所述地形资源文件是目标绘制引擎对导入的所述高度图进行压缩并存储至相应文件所得的;
第一确定模块,用于确定所述高度图中各像素点的法线数据;
生成模块,用于基于所述高度数据和所述法线数据生成与所述高度图对应的地形块数据;
第二确定模块,用于在所述地形块数据中的各子块数据存放于节点树的节点后,确定视场区域;
筛选模块,用于从所述节点树的节点中筛选位于所述视场区域内的目标节点,得到所述目标节点中的目标子块数据;
修改模块,用于对于导入所述目标绘制引擎的高度图,当所述高度图的目标分辨率高于目标绘制引擎默认的分辨率时,则将所述目标绘制引擎中的地形坐标类型从整型修改为浮点型;
渲染模块,用于确定所述目标子块数据对应的待渲染子地形块中各地形顶点的顶点坐标;所述顶点坐标的类型为所述浮点型;依据各所述地形顶点的顶点坐标渲染所述待渲染子地形块,得到由各子地形块组成的地形图像。
13.根据权利要求12所述的装置,其特征在于,所述第二确定模块,还用于确定虚拟摄像头的方位;根据所述虚拟摄像头的方位生成包括所述视场区域的视锥体;
所述筛选模块,还用于生成包括所述视场区域的视锥体,在所述节点树的节点中查找与所述视锥体相交的目标节点;获取存放于所述目标节点中的目标子块数据。
14.根据权利要求13所述的装置,其特征在于,所述目标节点是通过对所述节点树的节点逐个遍历所得;所述装置还包括:
去重模块,用于在逐个遍历所述节点树的节点的过程中,每查找出与所述视锥体相交的目标节点时,获取当前查找的目标节点的序列号,直至得到所有目标节点的序列号;基于所述目标节点的序列号,对各所述目标节点进行去重处理;
划分模块,用于在去重后的目标节点中获取连续的序列号所对应的目标节点;
所述渲染模块,还用于分别对连续序号所对应的目标节点中的目标子块数据转换为实例化元素数据;根据所述实例化元素数据进行渲染得到地形图像。
15.根据权利要求12所述的装置,其特征在于,所述提取模块,还用于从地形资源文件中读取待解压高度图;对所述待解压高度图进行异步解压,得到解压后的高度图;在所述高度图中提取像素值;根据提取的像素值确定各所述高度图对应的高度数据。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取目标分辨率的所述高度图;
切块模块,用于根据所述目标分辨率和预设块尺寸对所述高度图进行切块;
导入模块,用于将切块后的所述高度图导入目标绘制引擎;
压缩模块,用于在所述目标绘制引擎中对切块后的所述高度图进行压缩;
存储模块,用于将压缩后的高度图作为所述待解压高度图存储至所述地形资源文件中。
17.根据权利要求16所述的装置,其特征在于,所述压缩模块,还用于在所述目标绘制引擎中,从切块后的所述高度图中提取小波系数,将所述小波系数进行量化,将量化后的小波系数进行压缩编码;
所述提取模块,还用于基于与小波算法对应的逆变换对所述待解压高度图进行异步解压,得到解压后的高度图。
18.根据权利要求12至17任一项所述的装置,其特征在于,所述生成模块,还用于根据所述高度数据生成三维的地形高度贴图;将所述法线数据保存至该地形高度贴图中,得到与所述高度图对应的地形块数据。
19.根据权利要求12所述的装置,其特征在于,所述筛选模块,还用于对于所述目标子块数据对应的待渲染子地形块中的各地形顶点,获取各所述地形顶点所在网格的网格坐标;获取各所述地形顶点的偏移值;根据所述网格坐标和所述偏移值确定各所述地形顶点的水平坐标;根据所述高度图中各像素点的像素值得到各所述地形顶点的高度值;根据所述水平坐标和所述高度值确定各所述地形顶点的顶点坐标。
20.根据权利要求19所述的装置,其特征在于,所述筛选模块,还用于依据各所述地形顶点的顶点坐标合并成实例化元素数据;将所述实例化元素数据传递至所述目标绘制引擎的着色器,以使所述着色器基于所述实例化元素数据渲染所述待渲染子地形块。
21.根据权利要求12至17任一项所述的装置,其特征在于,所述第一确定模块,还用于在对所述高度图中当前的像素点进行法线数据计算时,获取与所述当前的像素点相邻的像素点对应的像素值;基于所述相邻的像素点对应的像素值,确定所述当前的像素点的法线数据,直至得到所述高度图中各像素点的法线数据。
22.根据权利要求12至17任一项所述的装置,其特征在于,所述节点树包括至少两个节点层级的四叉树;
所述生成模块,还用于构造地形的根节点;以所述根节点为起始节点,沿子节点方向逐层对当前节点层级的节点进行分解,得到目标层级的节点;所述目标层级为所述当前节点层级的下一层级;当所述目标层级的节点满足停止分解条件时,将所述目标层级的节点作为叶子节点,得到所述四叉树。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
24.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110243990.1A CN112843700B (zh) | 2021-03-05 | 2021-03-05 | 地形图像的生成方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110243990.1A CN112843700B (zh) | 2021-03-05 | 2021-03-05 | 地形图像的生成方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112843700A CN112843700A (zh) | 2021-05-28 |
CN112843700B true CN112843700B (zh) | 2022-08-19 |
Family
ID=75993717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110243990.1A Active CN112843700B (zh) | 2021-03-05 | 2021-03-05 | 地形图像的生成方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112843700B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047998B (zh) * | 2021-11-30 | 2024-04-19 | 珠海金山数字网络科技有限公司 | 对象更新方法及装置 |
CN114332396B (zh) * | 2021-12-30 | 2022-12-02 | 北京发现角科技有限公司 | 不同层级相邻地形过渡效果的实现方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108198143A (zh) * | 2017-12-28 | 2018-06-22 | 中国测绘科学研究院 | 一种去LoD层级约束的三维地形裂缝消除方法 |
CN109745704A (zh) * | 2018-11-19 | 2019-05-14 | 苏州蜗牛数字科技股份有限公司 | 一种体素地形的管理方法 |
CN109902135A (zh) * | 2019-02-19 | 2019-06-18 | 武大吉奥信息技术有限公司 | 一种矢量瓦片预处理方法及装置 |
CN112090084A (zh) * | 2020-11-23 | 2020-12-18 | 成都完美时空网络技术有限公司 | 对象的渲染方法和装置、存储介质和电子设备 |
CN112365572A (zh) * | 2020-09-30 | 2021-02-12 | 深圳市为汉科技有限公司 | 一种基于曲面细分的渲染方法及其相关产品 |
CN112417965A (zh) * | 2020-10-21 | 2021-02-26 | 湖北亿咖通科技有限公司 | 激光点云处理方法、电子装置和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8947448B2 (en) * | 2009-12-24 | 2015-02-03 | Sony Corporation | Image processing device, image data generation device, image processing method, image data generation method, and data structure of image file |
US20150348315A1 (en) * | 2014-05-30 | 2015-12-03 | Apple Inc. | Dynamic Lighting Effects For Textures Without Normal Maps |
-
2021
- 2021-03-05 CN CN202110243990.1A patent/CN112843700B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108198143A (zh) * | 2017-12-28 | 2018-06-22 | 中国测绘科学研究院 | 一种去LoD层级约束的三维地形裂缝消除方法 |
CN109745704A (zh) * | 2018-11-19 | 2019-05-14 | 苏州蜗牛数字科技股份有限公司 | 一种体素地形的管理方法 |
CN109902135A (zh) * | 2019-02-19 | 2019-06-18 | 武大吉奥信息技术有限公司 | 一种矢量瓦片预处理方法及装置 |
CN112365572A (zh) * | 2020-09-30 | 2021-02-12 | 深圳市为汉科技有限公司 | 一种基于曲面细分的渲染方法及其相关产品 |
CN112417965A (zh) * | 2020-10-21 | 2021-02-26 | 湖北亿咖通科技有限公司 | 激光点云处理方法、电子装置和存储介质 |
CN112090084A (zh) * | 2020-11-23 | 2020-12-18 | 成都完美时空网络技术有限公司 | 对象的渲染方法和装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112843700A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
CN107358649B (zh) | 地形文件的处理方法和装置 | |
US9773343B2 (en) | Method for real-time and realistic rendering of complex scenes on internet | |
KR101286148B1 (ko) | 화상파일 생성장치, 화상처리장치, 화상파일 생성방법, 및 화상처리방법 | |
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
CN112843700B (zh) | 地形图像的生成方法、装置、计算机设备和存储介质 | |
US20230108967A1 (en) | Micro-meshes, a structured geometry for computer graphics | |
CN110706341A (zh) | 一种城市信息模型的高性能渲染方法、装置及存储介质 | |
CN111127615A (zh) | 一种三维模型的数据调度方法、装置及电子设备 | |
US10262451B1 (en) | View-dependent color compression | |
US10482629B2 (en) | System, method and computer program product for automatic optimization of 3D textured models for network transfer and real-time rendering | |
KR100959349B1 (ko) | 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법을 가속화하는 방법 | |
CN112370784A (zh) | 虚拟场景显示方法、装置、设备以及存储介质 | |
US11418769B1 (en) | Viewport adaptive volumetric content streaming and/or rendering | |
US10347034B2 (en) | Out-of-core point rendering with dynamic shapes | |
CN106780693B (zh) | 一种通过绘制方式选择三维场景中物体的方法及系统 | |
US11908062B2 (en) | Efficient real-time shadow rendering | |
CN115082609A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
CN115006842A (zh) | 场景地图生成方法、装置、存储介质及计算机设备 | |
Scholz et al. | Level of Detail for Real-Time Volumetric Terrain Rendering. | |
CN109597865B (zh) | 基于嵌入式平台的海量地理信息数据的存储与检索方法 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
CN111729303B (zh) | 一种大地图烘焙切割方法及恢复方法 | |
CN117237503B (zh) | 一种地理要素数据加速渲染及装置 | |
Kang et al. | An efficient simplification and real-time rendering algorithm for large-scale terrain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40043881 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |