基于Creator/Vega的潜艇潜望镜视景仿真设计

2012-09-11 10:17胡德生崔国恒张天浩
微处理机 2012年6期
关键词:视景线程建模

胡德生,崔国恒,张天浩

(海军工程大学管理工程系,武汉 430033)

1 引言

潜艇作为一种水下作战武器,其潜望镜的战术作用不可忽视,指挥员的航行、作战等指令决策很大程度上要依靠潜望镜的观察情况,因此对潜望镜视景的模拟尤为重要。为此,利用Vega平台开发设计了潜艇潜望镜视景仿真系统,该系统可以用于潜艇航海模拟训练。

2 系统开发平台

近年来出现了多种虚拟作战视景仿真需要的仿真支撑软件,如OpenGL、Vetree、3Dmax等。而实时三维建模和仿真软件MultiGen Creator和Vega由于其先进的功能在包括军事等各个工程领域的视景仿真开发中得以广泛采用[1]。

2.1 MultiGen Creator软件

MultiGen Creator是一套高逼真度、最佳优化的实时三维建模工具,拥有强大的多边形建模、矢量建模、大面积地形精确生成功能以及多种专业选项和插件,能高效、优化地生成实时三维(RT3D)数据库,并与后续的实时仿真软件紧密结合,完成视景仿真。它的诸如层次细节(LOD)、多边形筛选、逻辑筛选、绘图优先级以及分离面等高级实时功能使得OpenFlight(.flt)数据格式在实时三维领域中成为标准的文件格式。

2.2 Vega软件

Vega是开发实时视觉和听觉仿真、虚拟现实应用的业界领先的软件环境,它包括图形开发环境Lynx、一套应用编程接口、一系列相关的库、Audio Works2实时多通道音响系统以及丰富的可选模块等,以增强在特定应用中的功能。在Vega的图形界面Lynx中,把用Creator建立的各种flt模型文件添加到场景中;可实时调整通道、窗口、视点、观察者等的状态,随时改变时间设定、系统配置、加入特殊效果等。Vega配合Lynx的功能模块,定义了27个核心类,以对这些模块对象进行编程管理,还提供了丰富的头文件,实现Vega类、参数、常数、图形以及声音等对象的API定义。

3 主要设计步骤和方法

3.1 功能设计

根据视景仿真设计实现的功能,将系统分成四个模块进行管理(见图1)。

图1 潜望镜视景仿真系统模块组成

(1)潜望镜的基本控制功能模块。主要包括潜望镜高度调整、视角调整(转动和俯仰)、视野调整(放大倍率)、滤色镜选择、测距和裂像等。

(2)视景控制模块。观察目标姿态设置和控制,能够实时添加/删除观察目标、设置/改变观察目标的参数(航速、航向、位置等)、控制其碰撞检测等;能够对海况、天气、时间、能见度等外部环境进行设置。

(3)本艇运动仿真模块。给出本艇运动的主要参数(位置、深度、航速、航向、纵倾、横倾等姿态信息),实现潜望镜与本艇的动态姿态匹配。

(4)视景生成显示模块。根据以上模块提供的信息实时生成并显示逼真的动态视景画面。

3.2 视景生成步骤

3.2.1 实体建模

本系统需建立的模型有舰艇类,包括航母、驱逐舰、护卫舰、舰载直升机。使用 MultiGen Creator 2.4.1能方便地建立Vega使用的各个模型,包括确定模型种类、模型尺码、基本的X、Y、Z和H、P、R的方向、模型纹理、模型朝向、位置以及模型最大的多边形数量等。模型建好后,利用MultiGen Creator简化工具进行优化,达到在保证效果的前提下提高渲染速度、保证刷新频率。建立的实体模型如图2(a)、图2(b)所示。

图2 实体模型示例

3.2.2 创建 adf文件

使用Lynx设置基本的视景开发环境,主要包括:

(1)通道(channel):采用双通道非对称投影视图模式。

(2)窗口(screen):设置全屏幕显示模式。

(3)环境(environment)及各种效果(environment/special effect):建立海洋模型、海洋特效(舰船的波浪和尾流)、雨雪、爆炸以及烟火等特效。

3.2.3 视景编程

利用可视化的应用程序开发工具VC++编写了基于MFC的Vega应用程序,实现了潜望镜视景场景的驱动和渲染。主要的几个方面作了如下处理:

(1)对object进行结构化管理。为了有效管理object的各种信息(静态、动态属性以及添加/删除指令、特效等控制信息),定义了object结构。

BOOL bActive;//object活动状态

vgPlayer*Plyr;//object的角色对象

awSound*enginesound;//object的声音效果

vgMarineFx*bowwave;//object的首浪效果

vgMarineFx*trailstream;//object的尾流效果

vgFx*explode;//导弹命中目标后,爆炸效果

vgFx*fire;//导弹命中目标后,燃烧效果(火)

vgFx*smoke;//导弹命中目标后,燃烧效果(烟)

vgPosition*pos;//object的位置

int iType;//object的类型

float fSpeed;//object的速度

(2)使用fst模型文件格式载入模型。Vega提供了一种转换工具可以把adf文件里的flt模型文件转换为fst文件格式[2-3]。Vega的fst文件格式为系统尽可能快的加载模型到场景中提供了一种有效的途径。fst文件的数据方式与Vega场景里需要的方式非常相似,所以可以非常快的载入。其他的文件格式在加入Vega场景时对系统运行时间没有什么影响,但在系统需要动态实时调入模型数据尤其是大规模模型数据时就有很大的延时,影响渲染效果。

(3)视景观察者的控制。潜望镜作为视景环境的观察者,这里采用手动调整方式(Manual)来控制它在场景中的位置和姿态。视景渲染进程循环中实时接收潜望镜的控制信息和潜艇的运动姿态数据,更新观察者的位置和姿态,给出潜望镜与本艇结合的动态效果。

(4)创建单独的线程完成Vega渲染的任务。MFC把线程分为两类——用户界面线程(User Interface Thread)和工作者线程(Worker Thread)。用户界面线程一般用于处理用户输入事件并对事件做出响应,实现线程的代码中含有消息循环;工作者线程与用户界面无关,主要用于各种耗时的计算量大的场合[4]。Vega系统需要实时进行渲染循环,这是个非常耗时的计算过程,显然创建单独的工作者线程来完成Vega渲染的任务是恰当的。

(5)碰撞检测和特效处理。使用Isector实例与视景中的角色对象(Player)绑定,根据相交测试结果实时增加爆炸、烟火等特效。考虑到相交测试的计算量对CPU的占用,这里只选取相交点坐标和相交模型对象名称两种相交测试的结果信息进行处理,减少相交测试的计算量。

3.3 视景生成效果

应用程序实现的视景效果截屏如图3所示。

4 结束语

(1)潜望镜视景仿真的设计功能模块清晰,结构合理,便于系统维护与二次开发。

(2)使用三维建模和仿真软件MultiGen Creator和Vega开发的视景模块,动态效果逼真,实时性强,是虚拟现实技术的一种有效实现方法。

图3 潜望镜视景效果截屏

(3)对潜艇训练、战术研究等有一定的使用价值。

[1]梁永恩,邹勇,丁方颐.Creator/Vega及其在船舶航行视景仿真系统中的应用[J].应用科技,2005,32(4):37-39.

[2]叶叠,仲梁维,罗云.基于Vega/MultiGen的三维仿真漫游系统的研究与实现[J].计算机工程与设计,2005,26(2):362 -363.

[3]熊芝兰,郝燕玲,申冬慧.基于数字海洋环境的视景仿真系统研究[J].系统仿真学报,2005,17(7):1631-1633.

[4]龚卓容.Vega程序设计[M].北京:国防工业出版社,2002.

猜你喜欢
视景线程建模
基于C#线程实验探究
虚拟现实技术在游戏设计中的应用及研究
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
基于国产化环境的线程池模型研究与实现
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
浅谈linux多线程协作
全回转拖轮运动建模与视景仿真
基于Vortex与Vega Prime的车辆模拟器动力学与视景仿真
三元组辐射场的建模与仿真