杨琪琛,徐 锐
基于OGRE的飞行器实时视景软件的设计与实现
杨琪琛,徐 锐
(天津大学电气与自动化工程学院,天津300072)
针对飞行器实时仿真和三维视景显示的需求,设计并开发了飞行器实时视景仿真软件。仿真软件以OGRE图形引擎为基础,结合3DS MAX建模软件进行三维机体模型创建,利用基于MFC库和OGRE图形引擎开发的场景编辑工具实现场景生成,利用UDP协议与dSPACE主控计算机进行通信,为视景显示提供实时数据驱动。仿真软件由基础环境部分、基础开发模块、场景编辑工具和视景应用软件4大部分构成,可以实现飞行器飞行全过程的实时视景展示。仿真结果表明,视景仿真软件可以逼真地模拟飞行器飞行场景,能够实时地进行画面模拟和数据监视,具有广阔的应用前景。
视景仿真;OGRE;三维建模;飞行器
引用格式:杨琪琛,徐 锐.基于OGRE的飞行器实时视景软件的设计与实现[J].无线电工程,2016,46(5):85-89.
随着计算机科学技术发展,基于计算机图形学的视景仿真技术的应用,能极大地提升仿真结果的直观性和逼真性[1]。许多国内外研究机构都进行了视景开发的相关研究。例如,基于OpenGL,美国国家宇航局德莱顿飞行研究中心开发了名为Core的仿真系统和用于模拟驾驶的 FlightGear[2];基于OGRE图形引擎,大连理工大学开发了名为SiPESC的卫星编队可视化平台[3];南京航空航天大学开发了电子海战对战模拟系统[4];华中科技大学开发了港口仿真的可视化演示系统等[5]。
通过对国内外研究现状总结分析,本文提出一种构建飞行器实时视景仿真系统的方案,方案以模块化思想将视景系统抽象为通用的基础开发模块,基于OGRE图形引擎进行基本模块开发;为实现视景系统可扩展性,基于MVC架构,利用MFC库开发场景编辑器,实现场景生成和编辑功能;在此基础上针对飞行器特点通过3DS MAX构建三维机体模型,利用UDP协议连接dSPACE实时计算机,提供实时数据驱动,完成飞行器实时视景仿真系统的开发。实时视景仿真系统可以应用于飞行数据显示、模拟仿真训练等方向,并且基于该方案可完成多种背景下视景仿真系统的开发。
1.1 视景仿真软件需求分析
视景仿真软件的开发目标是在OGRE图形引擎的基础上,构建具有可复用性的三维视景开发套件,并在此基础上针对飞行器实时仿真需求,进一步开发飞行器实时视景仿真应用软件。飞行器视景软件应该具有三维场景构建、三维模型的构建和导入、实时数据驱动、天气效果模拟、场景漫游以及参数配置等功能。
1.2 视景仿真软件总体架构
在综合分析视景平台系统的功能需求和特点基础上,按照高内聚、低耦合的模块化设计思想,结合面向对象的设计思路,同时考虑OGRE图形引擎的接口特点,设计视景平台系统总体架构如图1所示。包括基础环境部分、基础开发模块、场景编辑工具和视景应用软件4大部分。
图1 视景仿真软件总体架构
图1中,基础环境部分主要包括操作系统、图形API库、OGRE图形引擎开发和运行环境。基础开发模块是在综合分析三维视景应用软件的共有特点基础上,为提高开发效率,独立抽象和开发的可复用软件模块。场景编辑工具主要用于三维场景的可视化构建并进行地形编辑等相关编辑工作。应用软件部分是在上述基础上,根据具体的飞行器视景开发需求开发的飞行器视景应用程序。
基础开发模块是基于OGRE图形引擎抽象和开发的可复用模块,是后续视景应用软件开发的基础。包括OGRE主体框架模块、场景数据管理模块和网络通信模块等模块。其中,主体框架模块负责封装相关的初始化和配置功能。场景数据管理模块负责场景数据的读取和管理,网络通信模块负责数据的传输和通信。
2.1 OGRE主体框架模块
主体框架模块按照OGRE图形引擎的初始化、配置、资源读取、场景创建显示和帧监听等要求,封装实现OGRE初始化和配置功能,是整个视景平台基础模块的最底层部分,是所有基于视景平台的程序的入口点,负责每一帧的渲染推进,是整个视景程序的渲染泵。
OGRE图形引擎是开发的基础,其核心对象的基本组成方式类图如图2所示[6]。
图2 OGRE对象组成方式
一般来说,基于OGRE应用程序的创建步骤如下:①创建根结点;②加载插件资源;③配置资源目录;④创建渲染窗口;⑤创建场景管理器;⑥创建相机、视口;⑦配置资源组;⑧创建不同的场景。
在上述流程基础上,根据基本初始化配置要求,并结合面向对象的思想,封装基本的OGRE主体框架模块UML图,如图3所示。
图3 主体框架模块UML类图
主体框架模块抽象出了视景应用的通用部分,符合面向对象的开发思想,同时也提高了代码的可复用性,为视景应用程序提供了具有通用性的基本框架。从UML类图可以看出,当需要开发新的场景,或者扩展视景应用的时候,可以在BaseApp类型的基础上进行继承复用已有的接口。
2.2 场景数据管理模块
场景数据管理模块负责对于场景的所有数据进行管理和操作,包括对地形、静态实体和动态实体等数据的管理工作,主要由地形系统、草地和树木等静态实体以及场景天气系统组成。
2.2.1地形系统
一般来说,地形的生成步骤主要包括分块、高度图数据、地形纹理和细节层次技术[7]。其中,分块即把需要生成的地形划分为许多小的组成部分,将这些部分组合到一起成为最终的整个地形;高度图数据主要用来生成高度随机的地形,即三维坐标里的高度坐标值;地形纹理主要用于产生不同材质的地形;细节层级技术则是保持渲染效果的同时提高渲染帧率的常用方法。
基于OGRE图形引擎提供的相关接口及上述技术,同时按照面向对象的设计思想,地形系统实现的UML类图如图4所示。
图4 地形系统UML类图
2.2.2 草地和树木等静态实体
构建地形环境场景,还需要生成草地树木等静态实体,以提高场景的真实程度。单个静态实体的生成方法与普通模型无异,主要包括网格数据导入,然后进行材质生成等相关工作。构建大场景的树木和草地除此之外还需考虑如下2个问题:
①随机效果的树木散布方式。为了方便构造不同的地形,同时避免将代码写死,采用密度图的方式进行大场景树木草地构建[8]。其基本思想是从密度图文件中读取数据,读取密度图数据之后,将对应点的灰度值存入到数据结构当中,在地形生成树木的时候,根据密度图的灰度值大小,决定该位置的树木的密集程度。这样通过更改密度图数据,或者替换不同的密度图数据,就可能得到不同的树木分布的地形,从而避免将代码写死到应用程序当中,提高了灵活性。同时密度图数据可以使用PhotoShop等图片处理工具方便地进行人工编辑。
②基于分页的树木草地静态场景处理。为了提高树木、草地渲染效率,提高帧率,引入基于分页的场景显示方法并结合LOD技术。基本思想是对于立即可见或者快要可见的场景分页,将所需资源加载到内存空间,而对于远处或者不可见的场景分页,则暂时不进行加载,从而降低内存的资源开销和减少渲染目标数进而提高帧率。
2.2.3 场景天气系统
为了提高场景的真实性,往往还需要在场景当中加入天气变化等情况。可以通过OGRE引擎的粒子系统实现。
使用OGRE的粒子系统,首先需要使用Root结点创建特定的粒子系统,并且在创建的方法中给出粒子模板的名称,而粒子模板是预先在脚本中进行定义的资源,在加载资源的时候就已经被OGRE进行记录。粒子模板是OGRE提高3D应用开发效率的一大利器。粒子脚本能够避免将效果硬编码到源代码当中,可以方便、快捷地进行效果的修改而不用重新编译生成。
2.3 网络通信模块
视景仿真系统基于实时仿真数据驱动运行,所以网络数据传输是视景平台基础组成部分中不可或缺的内容。与TCP协议相比,UDP协议不需要建立连接,也无需重传确认,在点对点的简单环境当中具有更好的效率,所以基于UDP协议进行通信协议构建[9]。数据传输端(主控机)和数据接收端(视景机)网络接口流程如图5所示。
图5 网络接口流程
场景构建是三维视景应用中的核心部分之一。OGRE图形引擎只提供渲染相关的基础组件和接口,直接使用OGRE图形引擎接口进行场景创建、场景改动和调试都需要进行反复编译运行,效率较低。为了能够进一步提高场景创建生成的效率与直观性,在基于OGRE图形引擎的基础模块层上抽象场景工具层,用于三维视景场景的应用和开发相关工作。
3.1 场景编辑工具的设计
场景编辑工具是以可视化的方式对场景中的相关资源进行动态编辑和管理,实时预览编辑效果,最后生成场景相关的配置资源文件,配置文件可以在视景应用中直接进行读取加载。为了使得开发的场景编辑工具代码更为规范、易于维护,按照常用的MVC模式对工具进行架构设计[10]。
场景编辑工具主要完成基本的场景编辑、实时预览和数据生成等相关功能。工具应该具有对于场景进行简单编辑的功能,包括地形编辑、静态和动态实体编辑、模型编辑、资源树功能、场景参数预览、地形参数编辑以及地形画刷调整等功能。
3.2 场景编辑工具的实现
场景编辑工具核心部分在于内部编辑功能实现、用户界面设计和用户消息响应。其中,内部编辑功能可以复用上述基本开发模块,包括主体程序框架和场景数据管理等相关内容。
3.2.1 基于MFC库的界面设计与实现
考虑到OGRE图形引擎是基于C++语言作为接口,且开发使用的是Windows操作系统,所以图形界面的开发将基于Windows的MFC库进行[11]。编辑器的界面设计类图如图6所示。
图6 基于MFC的界面设计UML类图
3.2.2 编辑器的消息响应流程
消息响应是编辑器的核心部分之一,其本质目的是针对用户的消息进行响应,进而修改相应数据。消息响应流程如下:
①对当前活跃的View进行处理。主要针对处理与场景用户漫游有关的消息响应,不涉及具体场景数据的更改,漫游功能使得用户能够在场景当中随意进行走动和观察。
②消息传送给CSceneDoc类型。在CSceneDoc类型当中,对输入消息进一步响应。
③消息响应完成后,激发UI界面进行更新。
3.2.3 场景数据串行化
编辑器的最终目的是能够将编辑结果存储到文件系统中,当需要渲染当前场景时,可以在视景应用程序中直接读取载入[12]。场景数据采用基于XML格式的方式进行串行化,基于TinyXML库将场景数据以XML文档类似的形式存储到文件当中;同时基础开发模块同样调用TinyXML库相关的接口对于场景文件数据进行解析和读取工作[13]。
在基础开发模块和场景编辑工具基础上,针对飞行器视景仿真需求,设计并开发飞行器视景仿真软件。
4.1 飞行器三维模型的创建
飞行器视景仿真软件开发应首先基于3DS MAX,构建多种飞行器的机型,获得网格数据。利用3DS MAX实现飞行器三维模型的创建,首先需要构建网格实体模型,获得实体模型数据,作为导入OGRE引擎的数据来源。
4.2 飞行器三维场景的创建
飞行器飞行环境相对比较复杂,所以构建适合的三维场景是使得视景仿真更为真实的关键所在。飞行器三维场景构建,核心部分之一就是构建三维地形场景。三维地形构建基于第2节所述的地形系统,采用第2节所述的基础地形模块作为地形构建的基础数据结构。为了避免硬编码并提高整体系统的灵活性,将场景参数抽象到文件当中形成配置文件,在此基础上利用第2.2节所述的场景数据管理模块加载数据,进而自动生成场景。数据配置文件的格式与之前所述保持一致,采用XML格式保存配置参数到文件当中。场景生成的基本流程为:加载配置参数文件、生成地形和渲染环境场景。生成地形参数的同时,也可以将地形数据保存到文件,从而避免每一次单独生成地形数据,加快生成速度。
场景静态实体的摆放、位置以及地形的高度等,可以基于第3节所述的场景编辑工具进行修改,进而生成相应的地形和静态实体数据等。对每一个场景,都将场景地形高度数据存储到高度图文件当中,在加载地形的时候直接使用。
4.3飞行器视景仿真软件演示效果
飞行器实时视景系统,对飞行器的飞行过程进行三维模拟和展现。数据驱动来源于实验室实时仿真平台,主要实时计算装置为dSPACE实时计算机,主控计算机通过UDP协议负责传输数据到视景系统实现实时驱动演示。演示实验效果如图7所示,分别展示了基本地形场景模拟、海洋天空巡航阶段模拟和山地飞行过程模拟等。
图7 飞行器视景系统演示实验效果
根据国内外视景开发的研究现状,提出一种飞行器实时视景仿真平台的构建方案,首先基于OGRE图形引擎开发具有可复用性的视景基础功能模块组件,利用MFC库构建了可视化的场景编辑工具,在此基础上,基于UDP协议完成了与dSPACE实时计算机交互,基于3DS MAX完成飞行器三维建模,实现飞行器飞行过程实时视景演示。视景仿真平台基于模块化设计思想,采用MVC设计模式实现,具有良好的灵活性和可扩展性,不仅适用于飞行器视景仿真,对多种研究背景下的视景仿真平台开发具有参考价值。同时,经过多次演示实验,可以证明视景仿真系统具有良好的视觉效果和稳定性,能很好地实现视景显示功能需求。
[1] CURLETT B P.A Software Framework for Aircraft Simula-tion[M].Edwards,California:DrydenFlightCenter,NASA/TM-2008-214639,2008.
[2] 于琰平.基于FlightGear的四旋翼无人机三维可视仿真系统研究[D].天津:天津大学,2010.
[3] 柳 明.基于SiPESC平台的卫星编队飞行可视化系统的设计与实现[D].大连:大连理工大学,2011.
[4] 肖笛.电子对抗中三维仿真关键技术的研究与实现[D].南京:南京航空航天大学,2010.
[5] 上官右柏.基于OGRE的港口仿真[D].武汉:华中科技大学,2011.
[6] KERGER F.OGRE 3D 1.7 Beginner′s Guide[M].UK:Packt Publishing Ltd,2010.
[7] SHAMIR A,PASCUCCI V.Temporal and Spatial Level of Details for Dynamic Meshes[C]∥Proceedings of the ACM symposium on Virtual Reality Software and Technology,ACM,2001:77-84.
[8] BLUM L,BLUM M,SHUB M.A Simple Unpredictable Pseudo-random Number Generator[J].SIAM Journal on computing,1986,15(2):364-383.
[9] 芬 纳,鲁多夫,杨继张.UNIX网络编程:套接口API [M].北京:清华大学出版社,2006.
[10]黎永良,崔杜武.MVC设计模式的改进与应用[J].计算机工程,2005,31(9):96-97.
[11]侯 捷.深入浅出MFC:使用Visual C++5.0&MFC4.2 [M].武汉:华中科技大学出版社,2001.
[12]FLORESCU D,GRÜNHAGEN A,KOSSMANN D.XL:An XMLProgrammingLanguageforWebService Specification and Composition[J].Computer Networks,2003,42(5):641-660.
[13]薛 萌.基于OGRE地形系统的设计与研究[D].上海:复旦大学,2009.
Design and Realization of Flying Vehicle Visual Simulation Software Based on OGRE
YANG Qi-chen,XU Rui
(School of Electrical and Automation Engineering,Tianjin University,Tianjin 300072,China)
To meet the needs of flying vehicle real-time simulation and visual presentation,the visual simulation software based on OGRE graphics engine is designed and developed.The three-dimensional solid model is built combined with 3DS MAX modeling software.Environment is generated by scene editing tools based on MFC library and OGRE which are developed by us.UDP communication is used to get real-time flight data and commands from another computer which controls the running of dSPACE.The software consists of the basic environment part,basic design module,scene editing tools and visual application.The result shows that the visual simulation software can realistically simulate the vehicle flying scene.It is capable of real-time scene simulation and data monitor,and has broad application prospects.
visual simulation;OGRE;3D modeling;flying vehicle
TP391.4
A
1003-3106(2016)05-0085-05
10.3969/j.issn.1003-3106.2016.05.22
2016-01-11
国家自然科学基金资助项目(61273092)。
杨琪琛 男,(1992—),硕士研究生。主要研究方向:三维视景开发、飞行器仿真和软件开发。
徐 锐 男,(1991—),硕士研究生。主要研究方向:飞行器仿真和软件开发。