APP下载

基于过程模型的虚拟视景仿真系统研究

2014-01-15宋佳音张新家

电子设计工程 2014年21期
关键词:扩展性视景对象

宋佳音,张新家,万 苗

(西北工业大学 自动化学院,陕西 西安 710129)

作为现代仿真技术的一个重要分支,视景仿真技术是虚拟现实技术、分布式交互仿真技术研究的主要内容之一。视景仿真是一种基于可计算信息的沉浸式交互环境,具体而言,它利用计算机图形学技术,根据仿真的目的,通过一定的技术手段构造仿真对象的三维模型,并组织成虚拟的仿真场景。利用必要的设备让用户以一种自然的方式与仿真场景中的三维对象进行交互作用,从而使用户产生“沉浸”于真实环境的感受与体验。视景仿真是计算机技术,图形图象技术,信息合成技术,光学技术,及控制技术等多种高新技术的综合运用。周期短,质量高,节省经费的特点使其被广泛的应用于虚拟现实模拟培训、工业设计、战场推演、城市规划仿真、交互式娱乐仿真等等。

目前国内的视景仿真系统所面临的主要问题是多数系统都是针对特定的领域需求来实现的,没有一个通用性强,扩展性好的平台来实现大多数的视景仿真系统的开发。当有新的开发需求时,开发人员要对以前程序的数据结构及接口进行相应的修改来满足新的领域需求,而且这个过程要求开发人员需要具备一定的专业领域知识,项目开发周期较长[1]。

针对这样的问题,本文基于分层的过程建模的思想,在三个层次对通用的视景仿真系统体系结构进行了研究,并且对每层的关键技术模块进行了详细描述。

1 系统设计

1.1 系统需求分析

作为一个通用的虚拟视景仿真平台,应该具备较强的通用性与良好的扩展性。通过一定的仿真建模将用户所添加的各种实体图形资源组合在一起,从而形成整个视景仿真过程。为了满足这样的特性,平台的架构应具有以下特点:

1)支持面向视景实体编程的场景配置与生成

用户通过可视化界面设置环境场景,为用户屏蔽底层图形开发细节,有利于提高开发效率。同时也将场景内各种资源的内部关系直观的展现给用户。而且对场景中实体的直接操作也提高了系统的可操作性。

2)良好的场景组织和管理方法

场景的组织和管理是虚拟视景仿真系统的重要组成部分。场景组织管理主要负责存储和管理场景中各个物体的数据及物体之间的位置和逻辑关系。有效的场景管理有助于提高系统的实时性。

3)组件化架构支持

随着需求的不断提升,开发过程的不断深化,资源实体及系统的功能也可能不断丰富[2]。平台应当针对不同实体对象及业务逻辑进行抽象,封装为不同的实体对象及功能对象。充分应用面向对象的特征,让用户按照需求以可视化的方式灵活的进行重构。这不仅增加了系统的扩展性也保持了系统可靠性。

1.2 总体框架

基于分层的过程建模思想,依照系统的功能需求。系统依用户交互层,管理层,数据层三层而设计[3]。如图1所示。

图1 系统总体框图Fig.1 Structure diagram of System

1.3 数据层

数据层接收管理层的请求,提供数据读取与保存的操作,为数据的访问提供统一的接口,供管理层调用。视景仿真的场景渲染过程实际上就是对三维模型仿真数据库的动态调用与实时渲染。为了保证虚拟场景便于修改、便于重用和通用,需要规范一种描述的格式。本文仿真的场景和场景中的对象模型、以及过程模型均采用XML描述,最终将XML保存到仿真数据库中。

XML (eXfensible Markup Language,可扩展标记语言)是制定的用于描述数据文档中数据的组织和安排结构的语言。它定义了利用简单、易懂的标签对数据进行标记所采用的一般语法,提供了计算机文档的一种标准格式。XML文档不但结构清晰,而且完全以文本方式存储,所以通过任何一种编辑工具都可以对其进行查看和修改,用户编辑非常方便[4]。

例如,我们可以将一个场景描述成如下文件:

同时为了便于系统三维模型的扩展与管理,数据库的结构设计如表1,表2。表中记录了三维模型的ID及文件索引,各种特效的索引以及相关的参数。用户可以通过编辑修改它们的值,或者使用不同的三维模型与各种特效的组合来满足其对仿真场景构建的需要。这也增强了系统的通用性及扩展性。表格2中特效以粒子发射器的类型来加以区别。而表格1中的模型类型以基本与复合加以区别。

表2 特效表Tab.2 The special effects table

1.4 管理层

管理层是整个视景仿真系统的核心层次,其实质是处理用户输入的各种信息及对用户的交互操作及任务指派做出反应,并将仿真数据实时的输出到仿真视口中[5]。该层主要负责管理视景仿真系统的内部三维对象模型、场景过程模型、关系模型、及事件的触发等。

1.4.1 对象建模

三维对象建模是开发视景仿真系统的一个难点,图形是视景仿真系统的主要资源。对象建模本质上是对图形资源的一种描述与组织方式。对于大多数的仿真系统三维模型的创建需要借助于专用的建模系统软件的支持 (如3D Max等)。而为了保证系统的通用性及扩展性本系统既提供了建模软件包的子程序接口,以解析外部通用模型文件(如*.3DS等)转换成系统识别类型,并转存到内存渲染。也提出了自己的建模功能模块。集建模功能和图形功能于一体。建模模块如图2。

图2 建模模块Fig.2 The modeling module

系统利用面向对象三维模型的概念[6],对三维对象建模模块的设计图如图3所示。

视景系统的三维模型图形资源分为两类:

图3 三维对象设计图Fig.3 3D object design

1)基本对象,模型的基本元素可以使用适合于构造这种模型的简单几何形状进行定义。而这些简单的几何实体,就是针对某个领域模型的基本对象。

2)复合对象,由上述的基本对象组合而成。当然复合对象的组合又可以形成更高层次的复合对象。

对于一个三维模型我们使用分层的方法来构造,我们可以嵌套对象,包括基本对象与复合对象来构造层次模型,其中复合对象又是由基本对象和其他复合对象组成,直到得到我们所需要的模型。需要指出的是因为每个对象嵌套在上层对象中,在嵌套结构中必须指定它们的建模变换参数。同时,将几何属性与非几何属性的分类建模实现了功能数据和几何数据的相分离。这样用户不仅能构根据分层的结构灵活的构建出需求模型,还能根据需求有选择的配置模型属性。这样的组件式的设计增加了系统的灵活性,便于扩展和维护。

1.4.2 场景的过程管理

场景是基于图形的应用系统中图形的集合,场景的组织和管理是虚拟视景仿真系统的重要组成部分[7]。因为它直接关系到视景仿真系统的实时性。由于场景中的图形都要经过图形管线的视景体剪裁,进行可见性判定。所以如果不对场景中的图形资源进行特别的组织以减小计算量,而让所有的图形都进行判定,渲染的效率将是非常低下的。场景组织管理主要负责存储和管理场景中各个图形资源的数据及模型之间的位置和关系[8]。本文主要采用基于过程模型的层次化场景树对三维场景进行组织。

如同对象模型的组织一样,整个仿真场景以层次化的结构来组织,树这种数据结构正是描述这种层次化结构的一种方法,而过程就是树上的一个节点。这个节点所包含的资源空间也可以划分为一定的子过程节点。场景结构如图4所示。

图4 场景结构图Fig.4 The scene structure graph

过程可以定义为一个由三维对象数据,关系数据,及动作集组成的集合。它可以用如表3所示的三元组来表示。

过程模型就是对于场景中图形资源的一种自定义的分组,用户可以根据需求来定义过程节点上的图形资源及其属性来组织场景中的图形资源。过程节点包含了场景的各种对象资源,如三维模型,天空,地形,光源等[9]以及对象之间的关系模型。其类结构图如图5所示。

表3 过程模型Tab.3 process model

图5 过程节点类图Fig.5 The class diagram of process node

Process类是场景中节点的抽象,管理了场景中一定的资源。它包含了一组资源及通用的操作接口。我们通过抽象出可以按照需求灵活配置的属性类为用户提供可以自定义的过程节点。这种组件化的方法极大的提高了系统的可维护性及扩展性。主要的抽象类包括三类:

1)三维对象模型数据类,如ObjectGroup类是一组图形资源,它同时也包含了跟模型操作相关的类以方便用户的配置。ObjectN类是具体的图形对象。MotionModel类是场景中物体的运动模型,它汇总了物体的运动方式。我们可以通过派生新类来添加不同的运动模型。Shape类表示了三维模型的几何属性,由此类可以派生出不的几何属性。Sound类是特效声音用来增强系统的真实感。Command类是对模型功能的封装,该类描述了对相应事件的响应方式。这是一种基于事件的可扩展接口。通过定义事件与命令的映射关系来实现模型功能的配置。

2)关系数据类,如Relation类表示了三维模型之间的关系,是三维模型关系的抽象。其中包含了RTime时间上的关系,与RPosition空间上的关系等。同样,关系模型也是可以随着系统的扩展而进行相应的扩展以丰富关系的类型。

3)操作动作类,如Operation类包含了过程中模型的变换操作,如将模型进行平移、旋转、缩放等。

系统的场景是基于上述各类所组成的场景过程结点来构建的。

1.5 用户交互层

用户交互层是人机交互的接口。该层包含了从输入输出设备接收用户输入的接口,工程管理的功能菜单,各种工具栏,输出场景模型的可视化仿真窗口及操作信息窗口等。因此,该层的结构应如图6设计。

图6 用户交互层类设计Fig.6 The user interaction layer class design

为了提供丰富的图形界面与显示效果,仿真窗口的输出应是多视口显示的。以上类的设计正是为了实现这一功能的。ProcessView类是过程视图的抽象,它包含了InputCommand类与Channel类,并且绘制和更新由管理层所组织生成的模型。作为人机交互的接口,InputCommand类处理各种用户的输入信息及所产生的事件。首先,要明确输入设备的类型,InputType类作为一个可扩展接口,允许各种类型的输入设备。其次,对于该类设备所产生的事件通过MapOfCmd类来进行映射,传送到管理层通过模型的Command对象进行响应。因为是多视口的显示,对于每一个ProcessView都包含一个Channel类来管理其指向的仿真输出视口。

2 应用实例

系统使用Microsoft Visual Studio 2010开发,为了增强开发的灵活性渲染部分直接选用OpenGL图形库。OpenGL作为一个性能优越的图形应用程序设计接口,应用于广泛的计算机环境[10]。下面利用一个虚拟战场仿真场景中,地空导弹对空中目标进行拦截的例子来对系统的组织过程进行描述。

该仿真场景中拦截是一个完整的动态过程表达,我们可以将其定义为一个过程,它包含了飞机,导弹,天空,地形等对象以及基于粒子系统的导弹尾焰。其中导弹与飞机存在着空间上的指向关系。其主要的工作过程为:

1)系统的初始化,配置相关的环境参数。

2)进行过程模型的定义将通过相关的接口从数据层的仿真模型数据库,特效库中读取仿真过程所要包含的三维模型对象(飞机,导弹,尾焰等)。

3)对生成的对象模型进行关系描述及配置相关的属性及运动模型。

4)进行仿真更新表示层的显示内容,并生成相应的场景配置文件实时的存入数据层进行场景的保存。

系统利用面向对象的技术将视景资源进行了一定的封装,实现了组件式的开发,可以对各种模型进行灵活的配置。系统具有一定的通用性与扩展性。系统的运行效果图如图7。

3 结 论

图7 运行效果图Fig.7 Running effect diagram

随着计算机图形学的不断发展,对视视景仿真系统的通用性和扩展性都会有更高的要求。设计一种扩展性强,通用性好的视景仿真系统框架对于进一步研究视景仿真系统具有重要的意义。针对这样的要求,本文运用分层的过程模型管理思想,从三个层次上利用面向对象的技术对视景仿真系统的资源及关键模块进行了研究。通过这种组件式的设计,实现了视景资源的按需配置。使系统具有了一定的通用性和灵活性。为视景仿真系统的进一步研究提供了参考。

[1]吴家铸,党岗,刘华峰,等.视景仿真技术及应用[M].西安:西安电子科技大学出版社,2001

[2]林奕,闫杰,钟都都,等.一种新的视景仿真软件体系结构[J].西北工业大学学报,2008,26(2):184-187.LIN Yi,YAN Jie,ZHONG Du-du,et al.A novel software architecture for visualization simulation[J].Journal of Northwestern Polytechnical University,2008,26(2):184-187.

[3]II Carson,S John.Introduction to modeling and simulation[C]//Winter Simulation Conference,Proceedings of the 36th conference on Winter Simulation,2004:9-16.

[4]刘瑞恒,张新家,张婷婷.基于设计模式的图形组态系统研究与设计[J].微处理机,2011,32(1):67-70.LIU Rui-heng,ZHANG Xin-jia,ZHANG Ting-ting.Research and design of graphic component system based on design patterns[J].Microprocessors,2011,32(1):67-70.

[5]Capilla R,Martinez M.Software architectures for designing virtual reality applications [M]//Software Architecture,Springer Berlin Heidelberg,2004:135-147.

[6]SHI Wen-zhong,YANG Bi-sheng,LI Qing-quan.An Object-Oriented data modelfor complex objects in threedimensional Geographic Information Systems[J].International Journal of Geographical Information Science,2003,17 (5):411-430.

[7]刘瑞恒,张婷婷,李现涛.基于opengl的虚拟视景仿真系统研究与实现[J].微处理机,2011,32(4):89-92.LIU Rui-heng,ZHANG Ting-ting,LI Xian-tao.Study and implementation of universal visual simulation system based on OpenGL.Microprocessors,2011,32(4):89-92.

[8]刘瑞恒.虚拟视景仿真系统设计与研究[D].西安:西北工业大学,2006.

[9]吕希奎,周小平,等.实战OpenGL三维可视化系统开发与源码详解[M].北京:电子工业出版社,2009.

[10]张大强,翟素兰,程家兴.OpenGL在视频游戏中的应用[J].计算机技术与发展,2006,16(2):73-75.ZHANG Da-qiang,ZHAI Su-lan,CHENG Jia-xing.Game programming with OpenGL[J].Computer Technology And Development,2006,16(2):73-75.

猜你喜欢

扩展性视景对象
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
虚拟现实技术在游戏设计中的应用及研究
攻略对象的心思好难猜
提高初中阶段学生英语扩展性阅读能力策略分析
基于熵的快速扫描法的FNEA初始对象的生成方法
高中物理如何充分利用扩展性栏目
比ITX还小华擎推首款Mini—STX主板
区间对象族的可镇定性分析
网络教学平台的扩展性研究
全回转拖轮运动建模与视景仿真