海量地形三维仿真系统的设计与实现

2011-02-10 05:45:24许文波周虹霞黄健熙
电子科技大学学报 2011年3期
关键词:碰撞检测格网瓦片

许文波,李 莉,周虹霞,黄健熙,黄 波

(1. 电子科技大学自动化工程学院 成都 610054; 2. 四川电力科学研究所 成都 610072 3. 四川省军区军训教研室 成都 610041; 4. 中国农业大学信息与电气工程学院 北京 海淀区 100083)

海量三维大地形系统一直是视景仿真领域研究的热点和难点。从90年代中期开始,美国Skyline公司开发了Skyline TerraSuite三维GIS软件,能够无缝集成航空影像、卫星数据、数字高程模型和其他2D或3D信息源,包括GIS数据集层。它在快速数据融合、更新数据库、支持大型数据库和实时信息流通信技术等方面具有显著的优势。该软件还提供了二次开发工具为用户提供定制和功能扩充服务,但它在复杂三维实体的建模方面功能较弱,而且购买价格比较昂贵。2005年6月底,Google公司在Keyhole公司开发的EarthView基础上推出了桌面工具Google Earth,是目前最完善的海量遥感影像数据服务平台,较好地实现了海量影像、DEM和矢量数据的传输、可视化等功能。微软公司推出的MSN Virtual Earth Beta版能够在线显示45°视野的街道卫星地图以及覆盖式的街道影像,但不能无级放大地图,下载速度不够理想。

三维仿真系统可广泛应用于军事、房地产、航空航天、教育、娱乐、工程施工、城市规划等行业[1]。在军事模拟训练领域,文献[2]实现舰炮射击模拟训练系统,该训练系统利用Vega结合Creator进行开发,建立了桌面式的仿真沙盘系统;文献[3-4]进行了协同作战、弹舰电子对抗等类似系统的开发研究;在城市规划与建设领域,文献[5]利用Vega仿真引擎结合VC++6.0编程实现了佛山市城市规划电子沙盘系统;文献[6]应用ArcGIS的内置定制环境VBA对ArcGIS应用程序进行客户化,设计并实现了重庆市区域规划电子沙盘系统;文献[7]研制的南水北调电子沙盘系统,是南水北调工程仿真系统的重要组成部分。

本文基于VegaPrime和CTS (creator terrain studio)开发了一个具有通用功能的大地形三维仿真系统,通过动态实时调度取舍地形瓦片,实现了大地形海量数据的显示以及虚拟纹理的正确映射,并在此基础上基于MFC平台开发了9个功能模块。基于该系统,可以做进一步的行业定制,形成面向更为特定行业应用的三维电子沙盘。

1 研究区介绍

本文以福建省为研究区,具体经纬度范围为东经115.256°~119.996°,北纬27.905°~24.151°,总计面积约为21万平方公里(其中包括了海域面积)。该区域的地貌特征为多丘陵和山地,少平原,平均海拔不高,大部分地区在海拔1 000 m以下,东南部为海域,西北方向的海拔也很低。

2 数据准备与预处理

一个显示内容丰富、层次性好、漫游自然流畅的电子沙盘一般应包括地形数据、地形纹理和3D模型等。

2.1 地形数据

本文系统采用的DEM数据是美国国家航空航天局(NASA)发布的世界范围的数字高程数据SRTM 3。福建省全覆盖数据共16景,数据大小约为1.2 GB。

2.2 纹理数据

纹理数据来源于NASA的地球资源卫星系列的LandSat 5上的专题制图仪(thematic mapper,TM)所获取的多波段扫描影像。TM有7个波段,其影像的空间分辨率除了热红外波段为120 m外,其余均为30 m,像幅185 km×185 km。本文采用5、4、3波段彩色合成,福建全省覆盖共16景数据,数据大小约为3 GB。

2.3 3D模型

在实时仿真特别是军事上的仿真中采用大量的3D模型,用户可以动态加载这些模型到场景中与场景完成交互,如电子沙盘里面常用到的旗帜标注。Vega Prime主要支持FLT格式的3D模型,其本身提供了一个FLT的3D标准模型库,如果库中没有需要用的模型,可以使用Creator软件制作。

2.4 地形数据与纹理数据的预处理

DEM数据需要进行的预处理主要包括拼接和裁剪。TM数据需要先进行波段的组合,形成彩色影像,本文选择5、4、3波段合成。将波段合成的TM数据进行拼接与裁剪处理。CTS要求DEM数据和TM纹理数据有一致的投影坐标信息,因此最后还需要对两类数据进行投影以及数据格式的转换。

2.5 虚拟纹理和地形格网的生成

将经过预处理后的数据在CTS里利用纹理和地形向导的进程流水线生成虚拟纹理和地形格网。重要的参数设置主要有:1) 合理地设置虚拟纹理的层数以保证纹理的精度能得到最好的利用,CTS通过地面采样距离(ground sample distance,GSD)反映采样精度。以本文为例,TM的精度是30 m,每一经纬度大约是111 km,所以最高层纹理的GSD不得小于111×1 000/30 = 3 700,CTS面板显示虚拟纹理取为16,则X、Y方向的GSD分别为6 912.225 089、8 728.896 574,所以本文中取16或更高层即可;2) 合理地设置LOD最高层地形的瓦片数以保证精度最高的纹理能够映射到LOD最高的地形上。在CTS中地形格网和虚拟纹理都是以层次和瓦片的形式组织的,当地形瓦片小于、等于纹理瓦片时,最适合的那层纹理会被映射到相应的地形上,如果地形瓦片比纹理瓦片大,系统只有取精度次之的纹理中的瓦片进行比较。本文的纹理取了16层,精度最高层瓦片大小为0.074 072×0.058 656°,而地形的瓦片大小需要根据地形的Coverage(与纹理是一致的)与Grid Structure中的LOD层次划分确定。Coverage的经纬度范围是东经115.256°~119.996°,北纬27.905°~24.151°,即X方向为4.764°,Y方向为3.734°,按照上面描述的原则,X方向的地形瓦片数应该大于、等于4.764/0.074 072 = 64.32,Y方向的地形瓦片数应该大于、等于3.734/0.058 656 = 63.66。地形向导生成的LOD是5层,但其最高层(LOD4)的瓦片数是32×32,显然不够X、Y(Row和Col)的变化率。LOD4地形中的瓦片数是128×64,足够满足地形纹理瓦片大小原则。

CTS提供了两种纹理瓦片最后能保存的格式:DDS和5551,前者是一种压缩格式,而且在实时运行时表现的品质不比5551差,本文采用5551格式的纹理。通过设置适当的参数运行CTS后生成了3.4 GB的数据,最后一个Convert进程生成了683 MB的5551格式的最终纹理。

3 系统及功能设计

本文的系统核心是以虚拟纹理和地形格网为基础的三维实时场景,系统功能都是基于该场景开发的。纹理和地形的生成来源于卫星遥感数据,实体模型来源于MultiGen-Paradgim Creator模型库以及利用Creator自行制作的模型。在大地形场景的基础上设计了9个功能模块,每个功能模块下有若干子功能,系统框架图如图1所示。

图1 系统框架图

4 系统软件平台

系统基于VegaPrime开发,MultiGen-Paradigm的Vega/VegaPrime系列是国内最受用户欢迎的视景仿真驱动引擎,有调查显示,目前在国内做视景仿真(或者虚拟现实)的,一半以上(57.5%)使用的都是Vega Prime(包括Vega)系列。Vega早在2003年就已经停止升级了,MultiGen-Paradigm现在致力于VegaPrime新版本的开发。VegaPrime基于VSG(vega scene graph)开发,而Vega基于SGI公司的Perfomer场景图管理系统开发,Performer只能支持OpenGL,而VSG在一定程度上也支持DirectX;Vega基于C语言,而VegaPrime使用C++开发,融入了很多现代C++的特性和技术,如设计模式和泛型;Vega的ACF文件是文本格式,而VegaPrime采用的是XML格式。

系统的地形和纹理是通过CTS(creator terrain studio)处理的,CTS是MultiGen-Paradigm开发的致力于处理大地形数据的软件,在功能上大大超过Creator的地形处理模块Terrain Pro。CTS采用进程流的方式,通过若干个进程的接力处理,可以方便地直接将原始DEM和纹理数据转换为地形格网和虚拟纹理。

系统功能的开发环境是M icrosoft Visual Studio.NET 2003,此外地形和纹理数据的处理还借助了ERDAS、Global Mapper、Photoshop CS、M icroDEM等软件。

5 关键技术

本文首先利用原始遥感影像在CTS中生成所需的虚拟纹理(virtuall texture),然后根据虚拟纹理的分层分块结构生成分层的LOD地形,在Vega Prime中通过LADBM(大地形管理模块)进行分块动态载入,最后在VC++2003编程环境下与地形做碰撞检测实现交互。

5.1 虚拟纹理及其与地形格网的映射

电子沙盘由于地形一般较大,与之对应的纹理范围也非常大,为了达到真实感,纹理分辨率一般也比较高。因此,一块纹理的大小往往超出了显存的大小,所以如果加优化处理,仅仅一次显示单块纹理的做法将超出硬件的处理能力。VegaPrime/CTS利用Virtual Texture技术解决以上问题。

Virtual Texture (VT)技术源于SGI平台下的Clipmapping技术,它是以层(Level)+瓦片(Tile)的结构组织的。层级从1×1的纹理开始,逐层2倍增加,一直到最高层。每层均覆盖整个地形。从第1层到第9层均为1张纹理覆盖整个地形,尺寸(长宽方向上的象素数目)从1×1~512×512。从第10层开始,按照512×512大小进行分块,即第10层有2×2张512×512的纹理,第11层有4×4张512×512的纹理,一直到最高层[8]。

地形格网与虚拟纹理类似,也是层+瓦片的形式,地形的层称为LOD(level of detail)。地形的层次一般不会像纹理那样多,尤其是大地形的仿真,一般4层左右就合适。在进行纹理映射时,精度最高层的纹理瓦片映射到最高层LOD的地形瓦片,然后精度次之的纹理瓦片映射到次层LOD的地形瓦片。

5.2 多层LOD(level of detail)

细节层次技术是在不影响实际仿真效果的前提下,通过逐次简化模型的细节来降低模型的复杂度,从而提高场景渲染的效率。对应于虚拟纹理的分层结构,3D地形生成也需要进行合理地分层/分块处理;而且在对应的层上,地形分块的大小必须小于、等于纹理分块的大小,这样才能显示出相应层最高精度的纹理。另外,地形的分层和VT的分层不同,按照LOD分层设置,分成4~6层即可满足应用要求[8]。本文考虑到30 m分辨率纹理的显示,将地形分为4层LOD,并根据多边形数目限制及视锥的参数,设置了合理的LOD距离及每层LOD的多边形构成。

在CTS生成虚拟纹理和地形LOD的过程中,会根据分块纹理/分块地形的层次级别,自动生成文件目录结构,并生成一个特定的MetaFlight文件,通知VegaPrime如何匹配和调用这些分块文件。

5.3 大地形分块调度技术

VegaPrime的大面积数据库管理(large area database management,LADBM)是为满足海量数据数据库调度而设计的,特别针对庞大的数据库在动态场景中瓦片的调度和数据集的装载及组织。有了LADBM和MetaFlight格式的结合,大型数据集之间的协作变得更有效,MetaFlight的分级数据结构也在实时场景被优化的同时得到维持。VegaPrime的核心功能包括双精度(double precision)、多线程(multiple threading)、MetaFlight和LADBM,共同为大面积虚拟仿真提供了一个优化的解决方案。

在LADBM中,用户需要关心的Dataset实际上就是GeometryGridDatasets。GeometryGridDatasets是一种多层格网结构,格网在每层将地形在空间上分成一个个独立的瓦片,不同的层代表相同区域的不同细节层次(LOD),高细节层次部分细分低细节层次部分,比如第3层的一个瓦片应该覆盖第4层上相同区域的4个瓦片。父层总是完全包含了子层,子层绝不会跨越父层瓦片的边界[9]。GeometryGridDatasets的层次结构如图2所示。

图2 GeometryGridDatasets层次结构

一般来说有两种页面调度策略,一种是简单地将整个数据集全部调度进来,适用于小型数据集;另一种是在场景图的坐标中定义一个位置(position),以这个位置为中心拣选瓦片,称为点调度策略(paging strategy point,PSP)。如果场景图与格网不是相同的坐标系统,PSP先要将场景图的位置坐标转换为格网坐标,同时判断每层格网的哪些细胞(cell)在策略位置点(strategy’s position point)的调度范围内,只将在该范围内的瓦片调进场景。当策略位置点移动,不再是调度范围内的瓦片将被调出场景,同时调进进入策略范围的新瓦片。LADBM的调度中心点可以依附(attached)到VegaPrime的任何物体上(只要是vpPositon及其派生类的对象就行)。PSP不一定是跟随视点的,它能被移动到场景中的任何一点。同时,VegaPrime支持一个场景中使用多个调度策略,比如在场景中设置2个通道,各通道可以有自己的调度策略。唯一的限制是依附到场景(即调度策略)的所有数据集要求有相同的坐标系统[10-11]。

本文归纳总结LADBM在VegaPrime中的工作流程如下:

1) 如果格网坐标系统与数据坐标系统不一致,将策略位置坐标转换到格网坐标;

2) 从LOD的最低层次开始,找出瓦片包含策略位置点(或者最接近策略位置点)。如果最接近策略位置点的瓦片不在策略的范围(range)内,就不会有页面调度,反之提交一个调度该瓦片的请求;

3) 检查所有的相邻瓦片是否满足调度范围直到超出调进范围(page-in range),提交调度所有满足条件的瓦片的请求;

4) 提交调出不再满足调度范围的瓦片的请求;

5) 进入LOD的下一个层次,重复步骤2)~4),直到所有层次都被处理。

5.4 碰撞检测技术

碰撞检测是构造仿真系统不可缺少的一个重要部分,它可以使用户以更自然的方式与仿真系统中的场景对象进行交互。虚拟视景中动态物体与静态物体之间或动态物体与动态物体之间,以及用户与场景之间的交互基础就是碰撞检测。

在VegaPrime中碰撞检测器被封装成类vp Isector,它是由一些线段组成的,使用起来很简单,把检测器放置于仿真物体上随之一起运动,设置碰撞检测的目标,当这些线段与目标物发生相交时即认为碰撞发生。具体的使用方法有两种:

1) 在程序的主循环中设定检测器的位置,调用其update成员函数进行与目标物的碰撞检测计算,然后查询检测结果。该方法效率较低,尤其当目标物很复杂时,其几何结构体由很多个子节点组成,要分别遍历它的各个子节点以进行碰撞检测计算,将会耗费很长时间;

2) 使用服务类vp IsectorService。该方法涉及到碰撞检测的消息机制,当碰撞发生时,碰撞检测器会自动通知它的消息订阅者,后者接到消息时就可以根据碰撞检测的结果做相应处理。

碰撞检测器与目标物都有各自的掩码,二者需要分别设定,只有当它们做与运算的结果不为零时才进行碰撞检测,这样可以避免检测器与非相关对象进行碰撞检测。在VegaPrime中常用的碰撞检测器有vp IsectorHAT、vp IsectorLOS、vp IsectorBump、vp IsectorZ、vp IsectorZPR和vp IsectorTripod等,它们都是以vp Isector为基类建立的类。

vp IsectorHAT (height above terrain)适用于高空飞行模拟,检测器从其中心垂直向下射出一条直线直达地表面,可实时计算目标到地表面的距离,并获得目标在地表面的垂直投影点。Vp IsectorLOS(line of sight)是基于视线的碰撞检测器,如图3a所示,自视点P沿视线方向(y轴正方向)延伸出一条线段,距离为r(r由用户设定),终点为Q,将检测器安置于仿真对象上,可实时探测到仿真对象的前方距离r内最近的物体。vp IsectorTripod由平行于z轴的3条等长且等高的线段组成,如图3b所示,宽度w idth和长度height确定了3条线段之间的位置关系。它适于放置在运动载体上,当载体行驶于不平坦的地面上时,检测器的3条线段与地面的3个交点构成了一个平面α,根据检测器的方位角以及平面α的法线,容易计算出载体的俯仰角和滚动角。vp IsectorBump则分别自中心点向x、y和z轴正负共6个方向上引出6条线段,各条线段长度均可设定,如图3c所示,任意一条线段与目标物相交时均认为有碰撞发生。另外,用户也可根据需要从vp Isector派生出自己的碰撞检测器。

图3 VegaPrime的几种碰撞检测器

6 系统功能实现

本文将三维仿真系统做成一个Windows窗体程序,使用MFC (m icrosoft foundation classes)类库是最好的选择。MFC下的VegaPrime开发首先要解决在哪个窗口显示三维场景以及在什么地方执行VegaPrime循环两个问题。对于第一个问题,因为在MFC中获取一个窗口类的句柄很容易,所以只要确定一个窗口作为VP窗口的父窗口,让VP场景在父窗口中显示就可以了。父窗口的类型是没有限制的,如可以将一个对话框、一个View窗口、甚至一个对话框上面的控件作为VP的父窗口。对于第二个问题,有线程方式和定时器方式两种处理方式,线程方式是在MFC中新开一个子线程,让VP在该子线程里面执行主循环,定时器方式是在CMFCView类的OnCreate方法里面进行初始化,并设置一个Timer,然后在OnTimer函数中执行主循环。本文采用定时器方式实现系统界面。

本文在界面的基础上实现了视图控制、标注、漫游、运动模式、地形分析、投影模式、环境设置、实用功能和观察者坐标显示共9个功能模块,由于篇幅的原因不做详细功能介绍。三维仿真系统主界面如图4所示。本文实现的系统包含2万个左右的三维几何模型,三维场景加载速度小于40 s,漫游刷新率大于30 Hz。

图4 三维仿真系统主界面

7 结 论

本文深入探讨了基于CTS/VegaPrime 平台的大地形三维仿真系统的实现方法,通过采用福建省90米格网分辨率DEM 数据、30 m分辨率TM遥感影像进行大区域的三维地形建模,开发了一个基于MFC的大地形三维仿真系统,实现了系统基本功能。在技术层面,该文通过虚拟纹理及其与地形格网的映射、大地形分块调度技术、碰撞检测技术的应用,解决了在大区域地形海量数据的电子沙盘漫游的难点问题。系统为三维仿真系统的研制与应用提供了参考价值。

[1] 杨进, 李程, 费立凡. 基于CTS的大地形仿真应用研究[J].测绘科学, 2008, 33(1): 185-187.

YANG Jin, LI Cheng, FEI Li-fan. Research on application of large-area terrain simulation based on CTS[J]. Science of Surveying and Mapping, 2008, 33(1): 185-187.

[2] 赵伟, 吴旭光, 成静. 基于VR技术的舰炮射击模拟器研究与设计[J]. 计算机仿真, 2008, 25(12): 301-304.

ZHAO Wei, WU Xue-guang, CHENG Jing. Research and design of naval gun firing simulator based on virtual reality technology[J]. Computer Simulation, 2008, 25(12): 301-304.

[3] 王金华, 严卫生, 高立娥. 协同作战视景仿真系统的开发[J]. 计算机仿真, 2009, 26(1): 98-102.

WANG Jin-hua, YAN Wei-sheng, GAO Li-e. Develepment of visual simulation system for CEC counterplan[J].Computer Simulation, 2009, 26(1): 98-102.

[4] 龚铮, 张科. 弹舰电子对抗的视景仿真技术研究和应用[J]. 弹箭与制导学报, 2008, 28(1): 219-222.

GONG Zheng, ZHANG Ke. Research and application of visual simulation technology of ecm between antiship m issile and ship[J]. Journal of Projectiles Rockets M issiles and Guidance, 2008, 28(1): 219-222.

[5] 任波, 陈汭新, 李利军, 等. 城市规划电子沙盘系统设计[J]. 计算机与数字工程, 2005, 34(10): 124-126.

REN Bo, CHEN Rui-xing, LI Li-jun, et al. System design of urban planning electronic sand table[J]. Computer & Digital Engineering, 2005, 34(10): 124-126.

[6] 王黎明, 文辉, 王英. 重庆市区域规划电子沙盘系统的设计与实现[J]. 地理研究, 2004, 24(2): 304-309.

WANG Li-m ing, WEN Hui, WANG Ying. Design and realization of electronic sand table system for regional planning of Chongqing[J]. Geographical Research, 2004,24(2): 304-309.

[7] 姚宏伟, 涂颖. 南水北调电子沙盘系统的研究与开发[J].系统仿真学报, 2002, 14(12): 1598-1602.

YAO Hong-wei,TU Ying. The study and development of the sand table system[J]. Journal of System Simulation,2002, 14(12): 1598-1602.

[8] 黄健熙, 毛锋, 许文波, 等. 基于VegaPrime的大型流域3D管理系统实现. 系统仿真学报[J]. 2006, 18(10):2819-2824.

HUANG Jian-xi, MAO Feng, XU Wen-bo, et al.Implementation of large area valley simulation system based on vegaPrime[J]. Journal of System Simulation, 2006,18(10): 2819-2831.

[9] MultiGen Paradigm Inc. Creator terrain studio user’s guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2006.

[10] MultiGen Paradigm Inc. Vega prime programmer’s guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2005.

[11] MultiGen Paradigm Inc. Vega prime options guide[M]. 2nd ed. [S.l.]: MultiGen-Paradigm Inc, 2005.

编 辑 黄 莘

猜你喜欢
碰撞检测格网瓦片
全新预测碰撞检测系统
实时电离层格网数据精度评估
一种基于主题时空价值的服务器端瓦片缓存算法
基于BIM的铁路信号室外设备布置与碰撞检测方法
惯性
扬子江(2019年1期)2019-03-08 02:52:34
Unity3D中碰撞检测问题的研究
电子测试(2018年1期)2018-04-18 11:53:00
BIM技术下的某办公楼项目管线碰撞检测
基于空间信息格网与BP神经网络的灾损快速评估系统
基于NoSQL数据库的瓦片地图服务
平均Helmert空间重力异常格网构制方法