CN104318617A - 一种面向虚拟应急演练的三维地理场景仿真方法 - Google Patents

一种面向虚拟应急演练的三维地理场景仿真方法 Download PDF

Info

Publication number
CN104318617A
CN104318617A CN201410551640.1A CN201410551640A CN104318617A CN 104318617 A CN104318617 A CN 104318617A CN 201410551640 A CN201410551640 A CN 201410551640A CN 104318617 A CN104318617 A CN 104318617A
Authority
CN
China
Prior art keywords
formula
vertices
index
dem
dimensional
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.)
Granted
Application number
CN201410551640.1A
Other languages
English (en)
Other versions
CN104318617B (zh
Inventor
林广发
刘鑫垚
张明锋
李清远
杨城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Normal University
Original Assignee
Fujian Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Normal University filed Critical Fujian Normal University
Priority to CN201410551640.1A priority Critical patent/CN104318617B/zh
Publication of CN104318617A publication Critical patent/CN104318617A/zh
Application granted granted Critical
Publication of CN104318617B publication Critical patent/CN104318617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models

Abstract

本发明涉及一种面向虚拟应急演练的三维地理场景仿真方法。首先,利用GIS软件获得DEM中的高程数据,利用配准过的高分辨率遥感影像解译地表附属物信息,或者利用已有的实测图层获得地物和土地利用信息;接着,在游戏引擎中利用这些具有真实地理意义的信息建立地形地貌,其中的关键技术过程是游戏引擎中的直角坐标系与GIS软件中地理坐标系之间的转换;最后,在游戏引擎平台上组合重构具有真实地理意义的三维地形与地理要素模型,实现逼真三维场景的建立。本发明操作方便,不需要限制区域的形状大小,且保证DEM高程准确性,能自动生成具有真实地理意义的三维场景。

Description

一种面向虚拟应急演练的三维地理场景仿真方法
技术领域
本发明涉及一种面向虚拟应急演练的三维地理场景仿真方法。
背景技术
严肃游戏自20世纪80年代诞生至今,一直被广泛应用于军事、医学、教育、科研等各个领域。严肃游戏是一种不以娱乐为目的的游戏。严肃游戏与娱乐游戏的关键区别在于游戏是否具有真实性和科学性。利用严肃游戏可以对现实中可能发生的一些事故灾害进行模拟,例如地震、火灾、地铁反恐等,并且可以让用户以任意角色的形式进入这些游戏场景中,身临其境地感受事故发生的过程,从而达到对用户进行教育和培训的目的。因此,严肃游戏一直被广泛应用于突发事件和应急推演中,是目前该领域的研究热点,也将是未来应急推演领域的发展趋势。严肃游戏中要求场景贴近真实,游戏逻辑具有科学依据,并且游戏中的角色行为具有真实的物理意义,如行走的速度、距离,角色所处的位置等。而要保证严肃游戏的科学性和真实性的前提是在游戏中用户所处的环境是具有真实意义的,因此,搭建逼真的三维地理场景是进行基于严肃游戏的三维仿真系统的关键步骤和基础工作。
与自然灾害等事件相关的仿真应急演练往往需要建立大区域范围的虚拟场景,这与一般的虚拟现实游戏场景存在很大的差别。而目前的游戏引擎例如Cry Engine, Unreal Engine, Unity3D等都还不像地理信息系统(GIS)软件一样能快速的建立起大区域范围并且具有真实意义的三维地理场景。
在游戏引擎中现有的建立三维地理场景的方法有两种:
第一种方法:利用三维建模软件建立三维地形再导入游戏引擎。首先利用三维建模软件建立三维场景,再导出为游戏引擎中可以支持的文件格式,然后导入游戏引擎中建立三维模型。以Unity3D游戏引擎为例,在《A new method of virtual reality based on Unity3D》, 《The research of making scenic wandering system based on Unity 3D》, 《基于Unity3D的虚拟漫游系统》等文献中报道的研究案例均使用了这个方法建立地形。一般模式是利用3D Max建立三维场景后导出成FBX文件;然后将FBX文件导入到Unity3D中;接着,人工在Unity3D中调整每个块的地理位置,使每个块能无缝连接起来;最后,在三维地形上添加房屋等其他的三维模型。
第二种方法:利用灰度图制作三维地形。该方法需要提供灰度图(RAW格式)作为高程数据,而且图片形状必须为正方形,边长必须是2的指数幂,灰度从0到255共256级;区域的高程进行分级,灰度0表示最低处的高程,灰度255表示最高的高程。在文献《试验场三维GIS实现的新方法》,《三维图形引擎大规模场景实时渲染技术研究与应用》和专利《一种自动生成Torque引擎中三维地形的方法》中,均使用了灰度图的方式建立地形。其具体实施步骤为:提取地形图中等高线、高程点数据构建约束Delaunay三角网;根据地形范围确定一个正方形区域以对应长宽均为256象素的高度图,在三角网中内插出每个象素所对应点的高程值,遍历得到高程范围,生成具有256等级的灰度图,0表示最低,255表示最高。
第一种利用三维软件建立三维地形再导入游戏引擎的方法,缺点是:
①操作繁琐;
②需要在引擎中调整每个块地理位置,使每个块能无缝连接起来,这样的方法会带来块之间的接缝误差;
③生成的三维场景不具备真实的地理意义,没有原始坐标。
第二种利用灰度图的方式来制作三维地形的方法,缺点是:
①需要提供灰度图作为高程数据来源,所提供的灰度图有形状和大小的限制,要求形状必须为正方形,边长必须是2的指数幂;
②用灰度值表示高程值,将区域的高程划分为256级,0表示最低,255表示最高,这样的高程数据,其三维地形的误差会随着相对高差的增加而增大,1000米高差即可达近4米,不能符合实际演练(如应急疏散)的需求;
③生成的三维场景不具备真实的地理意义。
针对以上两种方法中存在的缺点,本发明的目的是解决以上两种方法中存在的制作步骤繁琐、数据来源限制多,且不能在真正意义上构建起具有真实地理意义的三维地理场景的问题。
发明内容
本发明的目的在于提供一种操作方便,不需要限制区域的形状大小,且保证DEM高程准确性,能自动生成具有真实地理意义的三维场景的面向虚拟应急演练的三维地理场景仿真方法。
为实现上述目的,本发明的技术方案是:一种面向虚拟应急演练的三维地理场景仿真方法,包括如下步骤,
步骤S1:获取需仿真区域的遥感影像及通过GIS软件获取DEM中的高程数据,并对需仿真区域进行实地考察或找到更大比例尺的地形图、更高精度的几何校正过的遥感影像,以获取用于配准遥感影像的特征控制点坐标;
步骤S2:对步骤S1中的遥感影像和DEM中的高程数据进行预处理:对遥感影像先配准后裁剪,对DEM中的高程数据先裁剪后重采样,以得到空间参考一致、大小匹配、空间分辨率相同的遥感影像和DEM;
步骤S3:以行序优先的方式读取遥感影像和DEM的行列数及分辨率信息,并以List列表文本文件的形式存储行列矩阵,存储格式为List={h1, h2, h3, …, hi, …, hn};其中,hi表示对应第i个DEM网格的高程值;读取顺序是场景西南角第一个网格点的开始为1,以行序优先的方式向东方向逐个读取各个网格点的高程值至文本文件中;
步骤S4:构建具有准确的相对地理位置的网格化三维地形,具体如下:
因DEM网格为正方形,游戏引擎中的地形网格为三角形;以Mesh来表示网格类,并以Mesh.vertices,Mesh.triangles和Mesh.uv这三个数组分别用于存储三角形网格的顶点位置、所有三角形顶点的索引和网格基础纹理坐标;并将DEM的正方形网格的中心点坐标及其高程相应转换为游戏引擎中三角形网格的顶点坐标及其高程值:
设顶点的集合为{ vertices[0], vertices[1], vertices[2], …, vertices[vertices_count]},其中每个顶点均为三维坐标,如式(1)~(5)所示:
Mesh.vertices = vertices                                       公式(1)
Vector3[] vertices = new Vector3[vertices_count]                   公式(2)
vertices[index] = new Vector3(Xindex, Yindex, Zindex)                  公式(3)
Xindex- Xindex-1 = CellSize                                      公式(4)
Zindex- Zindex-1 = CellSize                                       公式(5)
在公式(1)~(5)中,vertices[index]表示每个顶点的三维坐标数组,index为顶点的索引值,vertices_count表示顶点的个数;Mesh.vertices中的数组由三维向量数组vertices[index]组成;Xindex为经度,Yindex为高程,Zindex为纬度;在建立地形时将Z轴设为指向正北方向,沿X轴或Z轴方向相邻的两个顶点之间的距离与DEM分辨率大小相等;CellSize为DEM的分辨率大小;
Mesh.triangles是一个存储顶点数组索引的三角形列表,该数组的长度只能是3的整数倍,数组中的id和vertices数组中的顶点ID一一对应,triangle数组的表示如下:
int sum = col * row * 6                                       公式(6)
Mesh.triangles = triangles                                     公式(7)
int[] triangles = new int[sum]                                  公式(8)
在公式(6)~(8)中,triangles为整数型数组,sum为triangles数组的长度,row和col表示DEM的行列数,数组储存每个三角形对应的顶点索引ID值;
Mesh.uv是表示网格基础纹理坐标的二维数组,纹理的集合为{UV[0], UV[1], UV[2], …, UV[vertices_count]},UV[i]由二维向量组成;如公式(9)~(13)所示:
Mesh.vertices = UV                                        公式(9)
Vector2[] UV= new Vector2(VERTICES_COUNT)               公式(10)
UV [index] = new Vector2(j * v, i * u);                         公式(11)
u = 1 / row                                               公式(12)
v = 1 / col                                                公式(13)
在公式(9)~(13)中,row为DEM的行数,col为DEM的列数;i, j分别表示顶点所在的DEM栅格位置的行、列号;Vector2(j * v, i * u)表示纹理的坐标数组;
步骤S5:根据上述方法将三维地形转换到游戏引擎中,使其具有三维地形层次细节管理功能;
步骤S6:将游戏引擎中的直角坐标系转换为地理坐标系,具体如下:
一般情况下应急演练的场景大小相比于地球而言可以不考虑地球曲率,故此处忽略地球曲率,所以在步骤S4建立完具有相对位置准确的地形后,定义Z轴为正北方向,将场景西南角移动到游戏坐标原点(0,0,0)位置,场景中角色的实际空间位置坐标,根据公式(14)~(16)确定:
player_x = (playercur.x – southwest.x) * x_offset / x_w_offset+ geo _x     公式(14)
player_z = (playercur.z – southwest.z) * z_offset / z_w_offset + geo _z     公式(15)
player_height = playercur.y                                          公式(16)
在公式(14)~(16)中,player_x, player_z和player_height分别表示角色所在位置的真实世界的经度、纬度和高程值;playercur.x和playercur.z表示角色在游戏引擎的虚拟场景中的X轴和Z轴的坐标值;(southwest.x,southwest.z)表示区域西南角点在游戏虚拟场景坐标中的坐标值,即为(0,0);x_offset和z_offset表示场景对应实际地理区域的经度跨度和纬度跨度;x_w_offset和z_w_offset分别表示游戏虚拟场景的x轴方向的宽度和y轴方向的长度;geo _x和geo _z表示场景的西南角点的真实世界经度和纬度;游戏场景中的高程值与真实世界的高程值不必转换,因此playercur.y表示角色在游戏引擎中的高度值(即Y轴的值),也就是角色在真实世界中的高度值player_height;
步骤S7:在步骤S6建立的具有真实地理意义的三维地形上添加地理要素,完成具有真实地理意义的仿真场景的建立。
在本发明实施例中,所述步骤S2中,对遥感影像和DEM中的高程数据进行预处理的软件包括ENVI、MapInfo、ERDAS和PCI软件。
在本发明实施例中,所述游戏引擎包括Unity3D、Cry Engine和 Unreal Engine引擎。
相较于现有技术,本发明具有以下有益效果:
1、本发明是以实测的DEM信息为基础,在游戏引擎中自动化地创建具有地理位置和区域大小相对准确的网格地形,所以,与利用在三维软件建立完的三维地形导入游戏引擎建立三维地形的方法相比,更加方便,而且可以避免由于软件之间的兼容性问题而产生的在游戏引擎导入的三维地形被切割为很多块的问题;
2、与利用RAW格式高度图制作三维地形的方式相比,由于本发明的方法是利用GIS软件获取实测的DEM数据,没有对高程数据进行分级量化,从而保证地形高程的准确性,并且不需要限定场景的形状大小。
附图说明
图1为本发明的总体技术实现方案。
图2为本发明一实施例技术实现方案。
图3为本发明对遥感影像和DEM数据的处理技术路线图。
图4为本发明经过“Object2Terrain.cs”转换后具有Unity3D地形系统的地形。
图5为本发明道路生成后的场景。
图6为本发明FBX文件导入到Unity3D后的建筑三维模型。
图7为本发明Unity3D中第三人称视角的仿真地理场景。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
如图1所示,一种面向虚拟应急演练的三维地理场景仿真方法,包括如下步骤,
步骤S1:获取需仿真区域的遥感影像及通过GIS软件获取DEM中的高程数据,并对需仿真区域进行实地考察或找到更大比例尺的地形图、更高精度的几何校正过的遥感影像,以获取用于配准遥感影像的特征控制点坐标;
步骤S2:对步骤S1中的遥感影像和DEM中的高程数据进行预处理:对遥感影像先配准后裁剪,对DEM中的高程数据先裁剪后重采样,以得到空间参考一致、大小匹配、空间分辨率相同的遥感影像和DEM;所述步骤S2中,对遥感影像和DEM中的高程数据进行预处理的软件包括ENVI、MapInfo、ERDAS和PCI软件;
步骤S3:以行序优先的方式读取遥感影像和DEM的行列数及分辨率信息,并以List列表文本文件的形式存储行列矩阵,存储格式为List={h1, h2, h3, …, hi, …, hn};其中,hi表示对应第i个DEM网格的高程值;读取顺序是场景西南角第一个网格点的开始为1,以行序优先的方式向东方向逐个读取各个网格点的高程值至文本文件中;
步骤S4:构建具有准确的相对地理位置的网格化三维地形,具体如下:
因DEM网格为正方形,游戏引擎中的地形网格为三角形;以Mesh来表示网格类,并以Mesh.vertices,Mesh.triangles和Mesh.uv这三个数组分别用于存储三角形网格的顶点位置、所有三角形顶点的索引和网格基础纹理坐标;并将DEM的正方形网格的中心点坐标及其高程相应转换为游戏引擎中三角形网格的顶点坐标及其高程值:
设顶点的集合为{ vertices[0], vertices[1], vertices[2], …, vertices[vertices_count]},其中每个顶点均为三维坐标,如式(1)~(5)所示:
Mesh.vertices = vertices                                       公式(1)
Vector3[] vertices = new Vector3[vertices_count]                   公式(2)
vertices[index] = new Vector3(Xindex, Yindex, Zindex)                  公式(3)
Xindex- Xindex-1 = CellSize                                      公式(4)
Zindex- Zindex-1 = CellSize                                       公式(5)
在公式(1)~(5)中,vertices[index]表示每个顶点的三维坐标数组,index为顶点的索引值,vertices_count表示顶点的个数;Mesh.vertices中的数组由三维向量数组vertices[index]组成;Xindex为经度,Yindex为高程,Zindex为纬度;在建立地形时将Z轴设为指向正北方向,沿X轴或Z轴方向相邻的两个顶点之间的距离与DEM分辨率大小相等;CellSize为DEM的分辨率大小;
Mesh.triangles是一个存储顶点数组索引的三角形列表,该数组的长度只能是3的整数倍,数组中的id和vertices数组中的顶点ID一一对应,triangle数组的表示如下:
int sum = col * row * 6                                       公式(6)
Mesh.triangles = triangles                                     公式(7)
int[] triangles = new int[sum]                                  公式(8)
在公式(6)~(8)中,triangles为整数型数组,sum为triangles数组的长度,row和col表示DEM的行列数,数组储存每个三角形对应的顶点索引ID值;
Mesh.uv是表示网格基础纹理坐标的二维数组,纹理的集合为{UV[0], UV[1], UV[2], …, UV[vertices_count]},UV[i]由二维向量组成;如公式(9)~(13)所示:
Mesh.vertices = UV                                        公式(9)
Vector2[] UV= new Vector2(VERTICES_COUNT)               公式(10)
UV [index] = new Vector2(j * v, i * u);                         公式(11)
u = 1 / row                                               公式(12)
v = 1 / col                                                公式(13)
在公式(9)~(13)中,row为DEM的行数,col为DEM的列数;i, j分别表示顶点所在的DEM栅格位置的行、列号;Vector2(j * v, i * u)表示纹理的坐标数组;
步骤S5:根据上述方法将三维地形转换到游戏引擎中,使其具有三维地形层次细节管理功能;
步骤S6:将游戏引擎中的直角坐标系转换为地理坐标系,具体如下:
一般情况下应急演练的场景大小相比于地球而言可以不考虑地球曲率,故此处忽略地球曲率,所以在步骤S4建立完具有相对位置准确的地形后,定义Z轴为正北方向,将场景西南角移动到游戏坐标原点(0,0,0)位置,场景中角色的实际空间位置坐标,根据公式(14)~(16)确定:
player_x = (playercur.x – southwest.x) * x_offset / x_w_offset+ geo _x     公式(14)
player_z = (playercur.z – southwest.z) * z_offset / z_w_offset + geo _z     公式(15)
player_height = playercur.y                                          公式(16)
在公式(14)~(16)中,player_x, player_z和player_height分别表示角色所在位置的真实世界的经度、纬度和高程值;playercur.x和playercur.z表示角色在游戏引擎的虚拟场景中的X轴和Z轴的坐标值;(southwest.x,southwest.z)表示区域西南角点在游戏虚拟场景坐标中的坐标值,即为(0,0);x_offset和z_offset表示场景对应实际地理区域的经度跨度和纬度跨度;x_w_offset和z_w_offset分别表示游戏虚拟场景的x轴方向的宽度和y轴方向的长度;geo _x和geo _z表示场景的西南角点的真实世界经度和纬度;游戏场景中的高程值与真实世界的高程值不必转换,因此playercur.y表示角色在游戏引擎中的高度值(即Y轴的值),也就是角色在真实世界中的高度值player_height;
步骤S7:在步骤S6建立的具有真实地理意义的三维地形上添加地理要素,完成具有真实地理意义的仿真场景的建立。
所述游戏引擎包括Unity3D、Cry Engine和 Unreal Engine引擎。
以下为本发明的具体实施例。
为了便于本领域技术人员的理解,下面以利用最常用的GIS软件ArcGIS Desktop(美国ESRI公司开发)与游戏引擎Unity3D相结合,构建仿真地理场景为例,对本发明的方法步骤进行详细描述。图2是案例的技术流程图。具体实施步骤如下
1. 图3说明了在ArcGIS Desktop处理遥感影像和DEM数据的技术路线。以实地外业调查得到的GPS数据为参考控制点,利用Georeferencing工具对影像进行配准,将原本偏移的影像校正到正确的位置;将DEM数据重采样成40米分辨率。
2. 读取DEM的行列数和分辨率信息,并将高程数据导入到文本文件中。
3. 在Unity3D中应用Mesh类,根据DEM分辨率、行列数和高程数据确定网格中各个顶点的位置和网格基本纹理坐标,从而创建具有地理位置和区域大小相对准确的网格地形。
4. 利用“Object2Terrain.cs”将网格地形转换为Unity3D地形系统。利用地形编辑器进一步设置遥感影像的解译结果为地形纹理贴图。转换后得到的Unity3D地形系统具有(Level Of Detail, LOD)层次细节管理功能;结果如图4所示。
5. 将游戏引擎中的直角坐标系转换为地理坐标系。在场景不大的情况下,可以不考虑地球曲率,在Unity3D中利用UpDate( )中的方法实时获取角色的位置信息,并实时根据转换公式计算出角色所在位置的真实地理坐标和高程。 
6. 对地理要素的建模,主要包括道路、河流、建筑物等。其中道路与河流利用EasyRoad3D插件进行制作,根据遥感影像解译出道路,并设置相应的路面贴图材质,需要适当地将道路模型抬高一定高度,以保证道路完全覆盖在地形表面,效果如图5所示。三维建筑模型在3DS Max2012中完成制作,3DS Max中的单位设置为厘米,将遥感影像作为底图确定每个建筑物的具体位置,对研究区中居民区、工厂、景区等进行建模。以研究区中的古堡建筑为例,在3DMax中完成三维模型后导出成FBX文件,然后再导入到Unity3D中,结果如图6所示。
7. 在具有真实地理意义的三维地形上,根据地理要素在遥感影像中的位置,将相应的地理要素模型整合进来,完成区域三维仿真地理场景的建立。图7是在Unity3D中整合所有数据后的第三人称角色的界面视图,图中右上角为场景的小地图,小地图中的红点为角色所在的位置,左上角是角色的生命值,左下角显示角色的所在的地理坐标、高程值。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

Claims (3)

1.一种面向虚拟应急演练的三维地理场景仿真方法,其特征在于:包括如下步骤,
步骤S1:获取需仿真区域的遥感影像及通过GIS软件获取DEM中的高程数据,并对需仿真区域进行实地考察或找到更大比例尺的地形图、更高精度的几何校正过的遥感影像,以获取用于配准遥感影像的特征控制点坐标;
步骤S2:对步骤S1中的遥感影像和DEM中的高程数据进行预处理:对遥感影像先配准后裁剪,对DEM中的高程数据先裁剪后重采样,以得到空间参考一致、大小匹配、空间分辨率相同的遥感影像和DEM;
步骤S3:以行序优先的方式读取遥感影像和DEM的行列数及分辨率信息,并以List列表文本文件的形式存储行列矩阵,存储格式为List={h1, h2, h3, …, hi, …, hn};其中,hi表示对应第i个DEM网格的高程值;读取顺序是场景西南角第一个网格点的开始为1,以行序优先的方式向东方向逐个读取各个网格点的高程值至文本文件中;
步骤S4:构建具有准确的相对地理位置的网格化三维地形,具体如下:
因DEM网格为正方形,游戏引擎中的地形网格为三角形;以Mesh来表示网格类,并以Mesh.vertices,Mesh.triangles和Mesh.uv这三个数组分别用于存储三角形网格的顶点位置、所有三角形顶点的索引和网格基础纹理坐标;并将DEM的正方形网格的中心点坐标及其高程相应转换为游戏引擎中三角形网格的顶点坐标及其高程值:
设顶点的集合为{ vertices[0], vertices[1], vertices[2], …, vertices[vertices_count]},其中每个顶点均为三维坐标,如式(1)~(5)所示:
Mesh.vertices = vertices                                       公式(1)
Vector3[] vertices = new Vector3[vertices_count]                   公式(2)
vertices[index] = new Vector3(Xindex, Yindex, Zindex)                  公式(3)
Xindex - Xindex-1 = CellSize                                      公式(4)
Zindex - Zindex-1 = CellSize                                       公式(5)
在公式(1)~(5)中,vertices[index]表示每个顶点的三维坐标数组,index为顶点的索引值,vertices_count表示顶点的个数;Mesh.vertices中的数组由三维向量数组vertices[index]组成;Xindex为经度,Yindex为高程,Zindex为纬度;在建立地形时将Z轴设为指向正北方向,沿X轴或Z轴方向相邻的两个顶点之间的距离与DEM分辨率大小相等;CellSize为DEM的分辨率大小;
Mesh.triangles是一个存储顶点数组索引的三角形列表,该数组的长度只能是3的整数倍,数组中的id和vertices数组中的顶点ID一一对应,triangle数组的表示如下:
int sum = col * row * 6                                       公式(6)
Mesh.triangles = triangles                                     公式(7)
int[] triangles = new int[sum]                                  公式(8)
在公式(6)~(8)中,triangles为整数型数组,sum为triangles数组的长度,row和col表示DEM的行列数,数组储存每个三角形对应的顶点索引ID值;
Mesh.uv是表示网格基础纹理坐标的二维数组,纹理的集合为{UV[0], UV[1], UV[2], …, UV[vertices_count]},UV[i]由二维向量组成;如公式(9)~(13)所示:
Mesh.vertices = UV                                        公式(9)
Vector2[] UV= new Vector2(VERTICES_COUNT)               公式(10)
UV [index] = new Vector2(j * v, i * u);                         公式(11)
u = 1 / row                                               公式(12)
v = 1 / col                                                公式(13)
在公式(9)~(13)中,row为DEM的行数,col为DEM的列数;i, j分别表示顶点所在的DEM栅格位置的行、列号;Vector2(j * v, i * u)表示纹理的坐标数组;
步骤S5:根据上述方法将三维地形转换到游戏引擎中,使其具有三维地形层次细节管理功能;
步骤S6:将游戏引擎中的直角坐标系转换为地理坐标系,具体如下:
一般情况下应急演练的场景大小相比于地球而言可以不考虑地球曲率,故此处忽略地球曲率,所以在步骤S4建立完具有相对位置准确的地形后,定义Z轴为正北方向,将场景西南角移动到游戏坐标原点(0,0,0)位置,场景中角色的实际空间位置坐标,根据公式(14)~(16)确定:
player_x = (playercur.x – southwest.x) * x_offset / x_w_offset+ geo _x     公式(14)
player_z = (playercur.z – southwest.z) * z_offset / z_w_offset + geo _z     公式(15)
player_height = playercur.y                                          公式(16)
在公式(14)~(16)中,player_x, player_z和player_height分别表示角色所在位置的真实世界的经度、纬度和高程值;playercur.x和playercur.z表示角色在游戏引擎的虚拟场景中的X轴和Z轴的坐标值;(southwest.x,southwest.z)表示区域西南角点在游戏虚拟场景坐标中的坐标值,即为(0,0);x_offset和z_offset表示场景对应实际地理区域的经度跨度和纬度跨度;x_w_offset和z_w_offset分别表示游戏虚拟场景的x轴方向的宽度和y轴方向的长度;geo _x和geo _z表示场景的西南角点的真实世界经度和纬度;游戏场景中的高程值与真实世界的高程值不必转换,因此playercur.y表示角色在游戏引擎中的高度值(即Y轴的值),也就是角色在真实世界中的高度值player_height;
步骤S7:在步骤S6建立的具有真实地理意义的三维地形上添加地理要素,完成具有真实地理意义的仿真场景的建立。
2.根据权利要求1所述的一种面向虚拟应急演练的三维地理场景仿真方法,其特征在于:所述步骤S2中,对遥感影像和DEM中的高程数据进行预处理的软件包括ENVI、MapInfo、ERDAS和PCI软件。
3.根据权利要求1所述的一种面向虚拟应急演练的三维地理场景仿真方法,其特征在于:所述游戏引擎包括Unity3D、Cry Engine和 Unreal Engine引擎。
CN201410551640.1A 2014-10-17 2014-10-17 一种面向虚拟应急演练的三维地理场景仿真方法 Active CN104318617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410551640.1A CN104318617B (zh) 2014-10-17 2014-10-17 一种面向虚拟应急演练的三维地理场景仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410551640.1A CN104318617B (zh) 2014-10-17 2014-10-17 一种面向虚拟应急演练的三维地理场景仿真方法

Publications (2)

Publication Number Publication Date
CN104318617A true CN104318617A (zh) 2015-01-28
CN104318617B CN104318617B (zh) 2017-03-08

Family

ID=52373843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410551640.1A Active CN104318617B (zh) 2014-10-17 2014-10-17 一种面向虚拟应急演练的三维地理场景仿真方法

Country Status (1)

Country Link
CN (1) CN104318617B (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105045970A (zh) * 2015-07-01 2015-11-11 国家电网公司 基于Unity动态生成三维场景的仿真系统及其实现方法
CN106371603A (zh) * 2016-09-18 2017-02-01 成都动鱼数码科技有限公司 基于位置服务和增强现实技术的角色定位捕捉方法
CN106709994A (zh) * 2017-01-22 2017-05-24 北京航空航天大学 面向航空消防训练的森林火灾三维视景的构建方法
CN106875483A (zh) * 2017-01-26 2017-06-20 北京航空航天大学 一种直升机地震救援仿真场景模块化构建方法和系统
CN106898045A (zh) * 2017-02-24 2017-06-27 郑州大学 一种基于sgog瓦块的大区域真三维地理场景自适应构建方法
CN107133295A (zh) * 2017-04-26 2017-09-05 航天科技控股集团股份有限公司 一种基于记录仪管理平台的加速逆地址解析方法及装置
CN107358649A (zh) * 2017-06-07 2017-11-17 腾讯科技(深圳)有限公司 地形文件的处理方法和装置
CN107564058A (zh) * 2017-08-30 2018-01-09 网易(杭州)网络有限公司 对象位置显示方法及装置
CN107610233A (zh) * 2017-09-15 2018-01-19 中国人民解放军63816部队 一种基于实景的仿真场景构建方法
CN107909538A (zh) * 2017-12-07 2018-04-13 北京像素软件科技股份有限公司 地形数据处理方法及装置
CN109214076A (zh) * 2018-08-28 2019-01-15 太原理工大学 一种支撑综采工作面地理环境及装备的虚拟规划方法
CN110196717A (zh) * 2019-06-22 2019-09-03 中国地质大学(北京) 一种Web3D网络交流平台及其建设方法
CN110384926A (zh) * 2019-07-26 2019-10-29 网易(杭州)网络有限公司 位置确定方法及装置
CN111383349A (zh) * 2018-12-27 2020-07-07 珠海金山网络游戏科技有限公司 一种地形场景编辑方法及装置、计算设备及存储介质
CN111540046A (zh) * 2018-12-27 2020-08-14 北京国网富达科技发展有限责任公司 一种基于虚拟现实的输电通道仿真方法
CN112037122A (zh) * 2020-08-31 2020-12-04 四川易利数字城市科技有限公司 一种在游戏引擎中使用地理坐标的方法
CN112286518A (zh) * 2020-12-15 2021-01-29 成都四方伟业软件股份有限公司 一种3d可视化自动化场景构建方法及系统
CN112559665A (zh) * 2020-12-18 2021-03-26 中科三清科技有限公司 空气质量模式预报数据可视化方法及装置
CN112749244A (zh) * 2020-12-30 2021-05-04 苏州美房云客软件科技股份有限公司 基于虚幻引擎的数字孪生城市空间坐标系实现方法、装置及存储介质
CN113750516A (zh) * 2021-08-27 2021-12-07 广州市城市规划勘测设计研究院 一种在游戏引擎中实现三维gis数据加载方法、系统及设备
CN113838199A (zh) * 2021-09-22 2021-12-24 中北大学 一种三维地形生成方法
CN115983162A (zh) * 2023-03-20 2023-04-18 水利部珠江水利委员会水文局 一种基于数字孪生的流域建模方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100280799A1 (en) * 2009-04-29 2010-11-04 Ji Gu Method and system for modeling three-dimensional smoke propagation animation
CN103970920A (zh) * 2013-02-05 2014-08-06 周柏贾 地震应急演练虚拟仿真系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100280799A1 (en) * 2009-04-29 2010-11-04 Ji Gu Method and system for modeling three-dimensional smoke propagation animation
CN103970920A (zh) * 2013-02-05 2014-08-06 周柏贾 地震应急演练虚拟仿真系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DIMITRIOS SIASSAKOS等: "The management of a simulated emergency: Better teamwork, better performance", 《RESUSCITATION》 *
REN AIZHU等: "Simulation of Emergency Evacuation in Virtual Reality", 《TSINGHUA SCIENCE AND TECHNOLOGY》 *
YOHEI MURAKAMI等: "Scenario Description for Multi-Agent Simulation", 《PROCEEDINGS OF THE SECOND INTERNATIONAL JOINT CONFERENCE ON AUTONOMOUS AGENTS AND MULTIAGENT SYSTEMS》 *
刘骞: "基于GIS的井喷事故可视化应急演练系统的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
王杨等: "地震救援演练仿真系统的研究", 《计算机仿真》 *

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105045970A (zh) * 2015-07-01 2015-11-11 国家电网公司 基于Unity动态生成三维场景的仿真系统及其实现方法
CN105045970B (zh) * 2015-07-01 2019-01-25 国家电网公司 基于Unity动态生成三维场景的仿真系统及其实现方法
CN106371603A (zh) * 2016-09-18 2017-02-01 成都动鱼数码科技有限公司 基于位置服务和增强现实技术的角色定位捕捉方法
CN106709994A (zh) * 2017-01-22 2017-05-24 北京航空航天大学 面向航空消防训练的森林火灾三维视景的构建方法
CN106709994B (zh) * 2017-01-22 2020-10-09 北京航空航天大学 面向航空消防训练的森林火灾三维视景的构建方法
CN106875483A (zh) * 2017-01-26 2017-06-20 北京航空航天大学 一种直升机地震救援仿真场景模块化构建方法和系统
CN106898045A (zh) * 2017-02-24 2017-06-27 郑州大学 一种基于sgog瓦块的大区域真三维地理场景自适应构建方法
CN106898045B (zh) * 2017-02-24 2020-02-07 郑州大学 一种基于sgog瓦块的大区域真三维地理场景自适应构建方法
CN107133295A (zh) * 2017-04-26 2017-09-05 航天科技控股集团股份有限公司 一种基于记录仪管理平台的加速逆地址解析方法及装置
CN107133295B (zh) * 2017-04-26 2020-08-07 航天科技控股集团股份有限公司 一种基于记录仪管理平台的加速逆地址解析方法及装置
CN107358649A (zh) * 2017-06-07 2017-11-17 腾讯科技(深圳)有限公司 地形文件的处理方法和装置
CN107564058A (zh) * 2017-08-30 2018-01-09 网易(杭州)网络有限公司 对象位置显示方法及装置
CN107564058B (zh) * 2017-08-30 2019-12-31 网易(杭州)网络有限公司 对象位置显示方法及装置
CN107610233A (zh) * 2017-09-15 2018-01-19 中国人民解放军63816部队 一种基于实景的仿真场景构建方法
CN107909538B (zh) * 2017-12-07 2021-05-25 北京像素软件科技股份有限公司 地形数据处理方法及装置
CN107909538A (zh) * 2017-12-07 2018-04-13 北京像素软件科技股份有限公司 地形数据处理方法及装置
CN109214076B (zh) * 2018-08-28 2022-11-04 太原理工大学 一种支撑综采工作面地理环境及装备的虚拟规划方法
CN109214076A (zh) * 2018-08-28 2019-01-15 太原理工大学 一种支撑综采工作面地理环境及装备的虚拟规划方法
CN111383349A (zh) * 2018-12-27 2020-07-07 珠海金山网络游戏科技有限公司 一种地形场景编辑方法及装置、计算设备及存储介质
CN111540046B (zh) * 2018-12-27 2023-11-10 北京国网富达科技发展有限责任公司 一种基于虚拟现实的输电通道仿真方法
CN111383349B (zh) * 2018-12-27 2023-09-29 珠海金山数字网络科技有限公司 一种地形场景编辑方法及装置、计算设备及存储介质
CN111540046A (zh) * 2018-12-27 2020-08-14 北京国网富达科技发展有限责任公司 一种基于虚拟现实的输电通道仿真方法
CN110196717A (zh) * 2019-06-22 2019-09-03 中国地质大学(北京) 一种Web3D网络交流平台及其建设方法
CN110384926B (zh) * 2019-07-26 2023-05-16 网易(杭州)网络有限公司 位置确定方法及装置
CN110384926A (zh) * 2019-07-26 2019-10-29 网易(杭州)网络有限公司 位置确定方法及装置
CN112037122A (zh) * 2020-08-31 2020-12-04 四川易利数字城市科技有限公司 一种在游戏引擎中使用地理坐标的方法
CN112286518A (zh) * 2020-12-15 2021-01-29 成都四方伟业软件股份有限公司 一种3d可视化自动化场景构建方法及系统
CN112559665A (zh) * 2020-12-18 2021-03-26 中科三清科技有限公司 空气质量模式预报数据可视化方法及装置
CN112749244A (zh) * 2020-12-30 2021-05-04 苏州美房云客软件科技股份有限公司 基于虚幻引擎的数字孪生城市空间坐标系实现方法、装置及存储介质
CN113750516A (zh) * 2021-08-27 2021-12-07 广州市城市规划勘测设计研究院 一种在游戏引擎中实现三维gis数据加载方法、系统及设备
CN113838199A (zh) * 2021-09-22 2021-12-24 中北大学 一种三维地形生成方法
CN113838199B (zh) * 2021-09-22 2023-07-11 中北大学 一种三维地形生成方法
CN115983162A (zh) * 2023-03-20 2023-04-18 水利部珠江水利委员会水文局 一种基于数字孪生的流域建模方法

Also Published As

Publication number Publication date
CN104318617B (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
CN104318617B (zh) 一种面向虚拟应急演练的三维地理场景仿真方法
CN104835202A (zh) 一种三维虚拟场景快速构建方法
CN104766366A (zh) 一种三维虚拟现实演示的建立方法
CN105976426B (zh) 一种快速的三维地物模型构建方法
CN103065361B (zh) 三维海岛沙盘实现方法
CN109584364A (zh) 一种基于倾斜三维模型的2.5维电子地图的生成方法及装置
CN103971414A (zh) 一种可视化真三维图的制作方法及系统
CN108009314A (zh) 一种基于考古发掘资料的遗址区早期地形三维重建方法
CN109801371B (zh) 一种基于Cesium的网络三维电子地图构建方法
Tobiáš et al. Rapid reconstruction of historical urban landscape: The surroundings of Czech chateaux and castles
CN105741340B (zh) 一种用于网页展示的输电线路三维场景仿真方法和系统
Dukai et al. Generating, storing, updating and disseminating a countrywide 3D model
CN111831778A (zh) 一种三维地理信息系统快速集成展现的方法
Litwin et al. Improving the Perception in Urban Planning by 3D Modelling and 3D Visualization
Morandi et al. Interactive past: from 3D reconstruction to augmented and virtual reality applied to archaeological heritage. The medieval site of Bastia St. Michele (Cavaion Veronese, Verona, Italy)
Mitasova et al. Building open source geospatial education at research universities
Senyurdusev et al. Exploring the opportunities of open source data use in creation 3d procedural city models
Xie Application of computer simulation virtual reality simulation technology in the statistical analysis of urban building communities
Efren et al. Procedural Placement of Existing Building Models in Virtual Cities
Punia et al. Three dimensional modelling and rural landscape geo-visualization using geo-spatial science and technology
Ifatimehin et al. Attributes of topographic mapping of a fast urbanizing area in Nigeria, using remote sensing and GIS
Ting et al. Application of ground-based 3D laser scanning technology in engineering surveying
Tejeda-Sánchez et al. Geomatic Archaeological Reconstruction and a Hybrid Viewer for the Archaelogical Site of Cáparra (Spain)
KR101323262B1 (ko) 지질구조 측점의 공간데이터베이스 구축 방법 및 시스템
Ozerbıl et al. Oblique Aerial Image Acquisition, 3D City Modeling, 3D City Guide Project for Konya Metropolitan Municipality

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant