CN106373175A - 一种地形高度图数据的加载方法 - Google Patents
一种地形高度图数据的加载方法 Download PDFInfo
- Publication number
- CN106373175A CN106373175A CN201610751098.3A CN201610751098A CN106373175A CN 106373175 A CN106373175 A CN 106373175A CN 201610751098 A CN201610751098 A CN 201610751098A CN 106373175 A CN106373175 A CN 106373175A
- Authority
- CN
- China
- Prior art keywords
- lod
- terrain
- accuracy class
- terrain mesh
- piece
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种地形高度图数据的加载方法,包括:预先将场景中的地形区域切分成若干地形网格,对于每块所述地形网格,生成每种预设的细节层次(LOD)精度等级的高度图数据并保存,其中,高LOD精度等级的高度图数据对应的顶点数大于低LOD精度等级的高度图数据对应的顶点数;对于当前待渲染场景中的每块地形网格,按照远处的地形网格比近处的地形网格的LOD精度等级低的原则,确定该块地形网格对应的LOD精度等级,并加载相应LOD精度等级的高度图数据至内存。采用本发明,可以大幅度减少内存开销。
Description
技术领域
本发明涉及场景渲染技术,特别是涉及一种地形高度图数据的加载方法。
背景技术
地形是当前图形引擎中重要的一部分,通过它可以创建丰富的地形地貌,如山峰、峡谷、草地和沙漠等等。许多优化方法如网格LOD、预混合贴图等应用在地形系统中,使得使用专门的地形系统要比使用静态网格渲染相同效果的场景节省更多的运算开销。地形高度图是表示地形高度图数据的一种常用手段,由于地形高度图数据通常和引擎逻辑相关,这部分数据需要一直保持在内存中。
地形高度图通常使用一张二维的强度图表示,尺寸和地形网格顶点的尺寸一致。创建地形时把高度图从磁盘中加载进内存,然后使用它生成地形网格的顶点数据。
普通游戏场景中地形的尺寸通常为512米或者1公里,但是大视距场景中地形尺寸可以达到4公里或8公里,甚至到16公里,这种情况下高度图数据占用的内存会随着地形尺寸的扩大而急剧增加,下面是高度图在指定地形尺寸下占用的内存大小(以用32位浮点数表示一个高度图数据为例)。
表1
上述表中高度图占用内存大小的计算公式是:
内存占用=地形顶点×地形顶点×每个顶点的高度图数据占用的字节。
其中,两个地形顶点分别表示对应地形尺寸的地形网格中行和列上的顶点数,地形顶点×地形顶点即可得到网格中的顶点数。
从表1中可以看出,地形尺寸每增加一倍,高度图占用的内存将增加3倍,这在实际的应用中是无法接受的。
由此可见,现有的地形高度图数据的加载方案需要占用很大的内存空间,从而存在无法实际应用的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种地形高度图数据的加载方法,该方法可以大幅度减少内存开销。
为了达到上述目的,本发明提出的技术方案为:
一种地形高度图数据的加载方法,包括:
预先将场景中的地形区域切分成若干地形网格,对于每块所述地形网格,生成每种预设的细节层次(LOD)精度等级的高度图数据并保存,其中,高LOD精度等级的高度图数据对应的顶点数大于低LOD精度等级的高度图数据对应的顶点数;
对于当前待渲染场景中的每块地形网格,按照远处的地形网格比近处的地形网格的LOD精度等级低的原则,确定该块地形网格对应的LOD精度等级,并加载相应LOD精度等级的高度图数据至内存。
综上所述,本发明提出的地形高度图数据的加载方法,通过设定不同精度LOD精度等级,并将地形场景分成若干块地形网格,对于每块地形网格预先生成各种LOD精度等级的高度图数据,在需要进行渲染时,根据场景中每块网格的远近位置,使较远处的地形网格使用较低精度的高度图数据进行加载,这样,可以大幅度减少待渲染场景的整体内存开销,且不影响场景的整体渲染效果。
附图说明
图1为本发明实施例的方法流程示意图;
图2为本发明实施例中采用最近点采样原则生成每种LOD精度等级的高度图数据示意图;
图3为一常见场景的LOD级别分布情形示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:对于场景中的每个地形网格,预先生成不同细节层次精度级别的高度图数据,在需要进行场景渲染时,根据当前场景中各地形网格的远近来确定其渲染时加载的细节层次精度级别,使得场景中远处的地形网格的细节层次精度低(即需要加载的数据少),这样,按照场景中不同地形网格的位置远近来加载不同细节层次精度的地形高度图数据,就可以大幅度减少场景渲染时需要加载的数据量,进而可以大幅度减少内存开销。
图1为本发明实施例的方法流程示意图,如图1所示,该实施例实现的地形高度图数据的加载方法主要包括:
步骤101、预先将场景中的地形区域切分成若干地形网格,对于每块所述地形网格,生成每种预设的细节层次(LOD)精度等级的高度图数据并保存,其中,高LOD精度等级的高度图数据对应的顶点数大于低LOD精度等级的高度图数据对应的顶点数。
本步骤中,需要将图形应用场景切分成合适大小的若干分块,即得到若干地形网格,然后为每个分块生成各种LOD精度等级的高度图数据并进行保存,以便在后续场景渲染时根据需要直接从中加载合适精度的高度图数据。
这里,场景的具体切分可以按照预设的单位分块尺寸进行,如果单位分块太大,则会影响渲染的效果,如果单位分块太小,则会使渲染效果过度更细腻但是同时会增加场景所包含的分块数据,相应的也会增加计算和存储开销,具体地,可由本领域技术人员根据实际需要设置单位分块尺寸。
较佳地,可以采用最近点采样的原则,生成每种LOD精度等级的高度图数据:
对于一块所述地形网格,按照LOD精度等级的降序,依次生成本块地形网格的各种所述LOD精度等级的高度图数据,其中,对于除最高的LOD精度等级之外的其他每种LOD精度等级的高度图数据,通过将相邻上一LOD精度等级的高度图数据删除其中的所有偶数行和所有偶数列的顶点的数据后得到。
较佳地,最低所述LOD精度等级对应的顶点的行数和列数均为2。
较佳地,为了确保按照上述采用最近点采样的原则生成高度图数据的方法中得到的最低LOD精度等级对应的顶点的行数和列数均为2,可以使最高的LOD精度等级对应的顶点的行数和列数均为奇数。
图2给出了一利用上述最近点采样的原则生成不同LOD精度等级的高度图数据的示例,图2中的每个点表示高度图数据中一个顶点的高度数据,其中空心点表示对应的顶点高度数据将在生成下一级高度图数据时删除,最低级别的高度图尺寸是2×2。
上述仅是一较佳的生成每种LOD精度等级的高度图数据的方法,在实际应用中不限于此,只要能满足:高LOD精度等级的高度图数据对应的顶点数大于低LOD精度等级的高度图数据对应的顶点数即可实现本发明的目的。
步骤102、对于当前待渲染场景中的每块地形网格,按照远处的地形网格比近处的地形网格的LOD精度等级低的原则,确定该块地形网格对应的LOD精度等级,并加载相应LOD精度等级的高度图数据至内存。
本步骤中,将按照场景中不同地形网格的位置远近来加载不同LOD精度的地形高度图数据,而低LOD精度的地形高度图数据占用的空间开销小,因此,就可以大幅度减少场景渲染时需要加载的整体数据量。
较佳地,可以采用下述方法来确定待渲染场景中每块地形网格对应的LOD精度等级:
对于所述待渲染场景中的每块地形网格i,按照Qi=Si/di,确定该地形网格的精度因子Qi;其中,Si为摄像机到地第i块地形网格对应的包围盒的距离;di为第i块地形网格对应的包围盒的直径;
根据每块地形网格的所述精度因子Qi,按照预设的LOD精度等级与精度因子的映射关系,确定每块地形网格对应的LOD精度等级,其中,所述映射关系中精度因子越小对应的LOD精度等级越高。
上述方法仅为一确定每块地形网格对应的LOD精度等级的较为容易实现的方法,在实际应用中并不限于此,只要能确保远处的地形网格比近处的地形网格的LOD精度等级低即可。如此,可以在不影响场景渲染的视觉效果的前提下,大幅度降低高度图数据加载所需要的内存开销,因此,遵照上述原则即可实现本发明的目的。
为了更清楚地说明本发明,下面以一个尺寸为4096米×4096米的地形为例对本发明进一步详细说明。将该地形按照512米的切分间隔进行横向和纵向的切分,切分后的每块地形网格的高度图尺寸为513×513。这里需要说明的是,为了方便计算,按照间隔距离为1米进行采样,这样,对于一块512米×512米的地形而言,其对应的顶点数为513×513,即对应的一块地形网格的高度图尺寸为513×513。一个常见场景的LOD级别分布情形如图3所示。图3中方格中的数字为这个地块网格的LOD级别值,LOD级别值越高所表示的LOD精度等级越低,基于本发明的上述技术方案,计算整个地形高度图使用的内存容量如下表。
统计地形中所有LOD级别的地块可知整个地形使用的内存约为8.76MB,而使用传统方法需要的内存开销约为64MB,由此可见,本发明可以大大减少地形图数据加载的内存开销。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种地形高度图数据的加载方法,其特征在于,包括:
预先将场景中的地形区域切分成若干地形网格,对于每块所述地形网格,生成每种预设的细节层次LOD精度等级的高度图数据并保存,其中,高LOD精度等级的高度图数据对应的顶点数大于低LOD精度等级的高度图数据对应的顶点数;
对于当前待渲染场景中的每块地形网格,按照远处的地形网格比近处的地形网格的LOD精度等级低的原则,确定该块地形网格对应的LOD精度等级,并加载相应LOD精度等级的高度图数据至内存。
2.根据权利要求1所述的方法,其特征在于,所述生成每种预设的细节层次LOD精度等级的高度图数据包括:
对于一块所述地形网格,按照LOD精度等级的降序,依次生成本块地形网格的各种所述LOD精度等级的高度图数据,其中,对于除最高的LOD精度等级之外的其他每种LOD精度等级的高度图数据,通过将相邻上一LOD精度等级的高度图数据删除其中的所有偶数行和所有偶数列的顶点的数据后得到。
3.根据权利要求1所述的方法,其特征在于,最低所述LOD精度等级对应的顶点的行数和列数均为2。
4.根据权利要求1所述的方法,其特征在于,所述确定该块地形网格对应的LOD精度等级包括:
对于所述待渲染场景中的每块地形网格i,按照Qi=Si/di,确定该地形网格的精度因子Qi;其中,Si为摄像机到地第i块地形网格对应的包围盒的距离;di为第i块地形网格对应的包围盒的直径;
根据每块地形网格的所述精度因子Qi,按照预设的LOD精度等级与精度因子的映射关系,确定每块地形网格对应的LOD精度等级,其中,所述映射关系中精度因子越小对应的LOD精度等级越高。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610751098.3A CN106373175A (zh) | 2016-08-29 | 2016-08-29 | 一种地形高度图数据的加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610751098.3A CN106373175A (zh) | 2016-08-29 | 2016-08-29 | 一种地形高度图数据的加载方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106373175A true CN106373175A (zh) | 2017-02-01 |
Family
ID=57903841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610751098.3A Pending CN106373175A (zh) | 2016-08-29 | 2016-08-29 | 一种地形高度图数据的加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106373175A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108053475A (zh) * | 2018-02-09 | 2018-05-18 | 城市生活(北京)资讯有限公司 | 一种三维地形显示方法及装置 |
CN109771949A (zh) * | 2019-01-14 | 2019-05-21 | 珠海金山网络游戏科技有限公司 | 一种游戏内动态调整渲染等级的方法和系统 |
CN111210515A (zh) * | 2019-12-30 | 2020-05-29 | 成都赫尔墨斯科技股份有限公司 | 一种基于地形实时渲染的机载合成视觉系统 |
CN111738903A (zh) * | 2020-05-18 | 2020-10-02 | 完美世界(北京)软件科技发展有限公司 | 物体分层材质的优化方法、装置及设备 |
CN115221263A (zh) * | 2022-09-15 | 2022-10-21 | 西安羚控电子科技有限公司 | 一种基于航线的地形预加载方法及预加载系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493952A (zh) * | 2009-02-26 | 2009-07-29 | 北京像素软件科技股份有限公司 | 一种3d地形渲染方法和渲染装置 |
CN101976468A (zh) * | 2010-10-22 | 2011-02-16 | 中国科学院软件研究所 | 一种多分辨率动态地形可视化方法及系统 |
CN102117497A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维地形建模方法及系统 |
CN102982580A (zh) * | 2012-11-09 | 2013-03-20 | 沈阳创达技术交易市场有限公司 | 面向大规模地形lod算法 |
US20130169629A1 (en) * | 2012-01-03 | 2013-07-04 | Electronics And Telecommunications Research Institute | Method for editing terrain data created by procedural terrain method |
-
2016
- 2016-08-29 CN CN201610751098.3A patent/CN106373175A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493952A (zh) * | 2009-02-26 | 2009-07-29 | 北京像素软件科技股份有限公司 | 一种3d地形渲染方法和渲染装置 |
CN102117497A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维地形建模方法及系统 |
CN101976468A (zh) * | 2010-10-22 | 2011-02-16 | 中国科学院软件研究所 | 一种多分辨率动态地形可视化方法及系统 |
US20130169629A1 (en) * | 2012-01-03 | 2013-07-04 | Electronics And Telecommunications Research Institute | Method for editing terrain data created by procedural terrain method |
CN102982580A (zh) * | 2012-11-09 | 2013-03-20 | 沈阳创达技术交易市场有限公司 | 面向大规模地形lod算法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108053475A (zh) * | 2018-02-09 | 2018-05-18 | 城市生活(北京)资讯有限公司 | 一种三维地形显示方法及装置 |
CN109771949A (zh) * | 2019-01-14 | 2019-05-21 | 珠海金山网络游戏科技有限公司 | 一种游戏内动态调整渲染等级的方法和系统 |
CN111210515A (zh) * | 2019-12-30 | 2020-05-29 | 成都赫尔墨斯科技股份有限公司 | 一种基于地形实时渲染的机载合成视觉系统 |
CN111738903A (zh) * | 2020-05-18 | 2020-10-02 | 完美世界(北京)软件科技发展有限公司 | 物体分层材质的优化方法、装置及设备 |
CN111738903B (zh) * | 2020-05-18 | 2024-05-10 | 完美世界(北京)软件科技发展有限公司 | 物体分层材质的优化方法、装置及设备 |
CN115221263A (zh) * | 2022-09-15 | 2022-10-21 | 西安羚控电子科技有限公司 | 一种基于航线的地形预加载方法及预加载系统 |
CN115221263B (zh) * | 2022-09-15 | 2022-12-30 | 西安羚控电子科技有限公司 | 一种基于航线的地形预加载方法及预加载系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106373175A (zh) | 一种地形高度图数据的加载方法 | |
CN104778744B (zh) | 基于Lidar数据的大规模三维森林可视化场景建立方法 | |
CN105261066B (zh) | 一种三维地理信息系统实时绘制多线程分配与控制方法 | |
KR101546703B1 (ko) | 대용량 건물 bim데이터의 시각화 시스템 | |
CN102117497B (zh) | 一种三维地形建模方法及系统 | |
KR101546705B1 (ko) | Bim데이터 처리단말 장치의 건물내부 bim데이터 가시화 방법 | |
CN103065361B (zh) | 三维海岛沙盘实现方法 | |
CN106446351A (zh) | 一种面向实时绘制的大规模场景组织与调度技术及仿真系统 | |
CN104835202A (zh) | 一种三维虚拟场景快速构建方法 | |
CN101261743B (zh) | 一种基于规则网格的大规模地形漫游模拟方法 | |
CN105956165B (zh) | 一种三维模型数据的瓦片式大文件存储组织方法 | |
CN107220372B (zh) | 一种三维地图线要素注记自动放置方法 | |
CN103268221B (zh) | 一种基于web技术的气象数据体三维显示方法及装置 | |
CN102117500A (zh) | 一种三维模型构建方法及系统 | |
CN103257876B (zh) | C3游戏地图动态加载的方法 | |
CN111784840B (zh) | 基于矢量数据自动分割lod层级三维数据单体化方法及系统 | |
CN107170040A (zh) | 一种三维桥梁场景构建方法和装置 | |
CN103714213B (zh) | 一种复杂地理信息的并行绘制方法 | |
CN115272637B (zh) | 面向大区域的三维虚拟生态环境可视化集成和优化系统 | |
CN104376050A (zh) | 一种在三维场景动态调度并显示海量矢量数据的方法 | |
CN110852952B (zh) | 一种基于gpu的大规模地形实时绘制方法 | |
CN113157988B (zh) | 由ofd格式文件表示地理信息的方法和装置 | |
CN112687007B (zh) | 一种基于lod技术的立体网格图生成方法 | |
Aliaga et al. | Visualization-based decision tool for urban meteorological modeling | |
CN103426201A (zh) | 基于三维数字城市系统海量模型数据的浏览方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170201 |