APP下载

分布式三维虚拟环境通用管理模型设计研究

2019-03-24王力伯

中国人民警察大学学报 2019年10期
关键词:分布式虚拟现实框架

王力伯

(中国人民警察大学,河北 廊坊 065000)

0 引言

分布式三维模拟训练系统也称为分布式三维虚拟现实系统,它的主要特征是通过自然的人机交互界面,建立一种与人的感觉和行为相容的、与客观世界高度类似的、逼真的综合虚拟环境,以达到一种身临其境的临场感[1]。基本的三维模拟训练系统,一般包括图形引擎及其上的显示系统,交互设备主要为键盘、鼠标,应用部分是处理逻辑和网络交互。这其中最重要的部分就是计算仿真和三维模型,包括物理模型驱动、碰撞检测与反馈的物理学特性,以及所制定的系统运行和人员操作即反馈规则[2]。从这个层面来讲,一个典型的虚拟仿真模拟系统是一个持续不断的循环类程序,它执行逻辑并在屏幕上绘制图形,因此,每个分布式三维虚拟现实系统除了自身的处理逻辑外,基本上都具有相同的循环管理程序。本文结合HLA/RTI模拟训练系统相关设计标准,对分布式三维虚拟现实系统中通用管理模型问题进行研究。

1 分布式虚拟现实系统的总体框架

分布式虚拟现实系统的程序生命周期,可以抽象出一些通用而独立功能模块,包括HLA时间管理、程序初始化、与联盟成员对象模型和交互对应的仿真对象和交互的表示、值与数据的互相转换、消息传递的事件系统、对象生存周期的心跳支持、多线程支持及异常处理等[3]。按照HLA标准设计的分布式交互仿真系统,可以进一步抽象成运行支撑结构RTI软件和盟员软件[4],典型HLA仿真应用程序逻辑结构如图1所示。

图1 HLA仿真系统逻辑结构

以上这些功能,都由RTI提供的功能来保障,它是实现HLA标准中接口规范的软件[5],相当于一个分布式操作系统,提供了一组通用的服务功能,包括联盟管理FM(Federation Management)、声明管理DM(Declaration Management)、对象管理OM(Object Management)、所有权管理OWM(Ownership Management)、时间管理TM(Time Management)、数据分发管理DDM(Data Distribution Management)及支持服务SS(Support Service)7个方面。由于RTI的功能从实质上说就是实现盟员间数据的有序及按需传送,所以RTI的核心功能为时间管理、数据分发管理及对象管理[6]。作为联盟执行的基础设施,RTI类似一个软总线,运行在其上的联盟成员类似于软插件,通过规范它们之间的接口实现无缝连接。对应于RTI提供的服务,RTI由7个功能模块及应用和通信两个接口层组成,接口层的目的是将仿真应用与RTI及底层支撑系统相分离,以实现RTI的通用性和可移植性。RTI典型的内部逻辑结构如图2所示。

图2 RTI内部逻辑结构

联盟管理FM:管理整个联盟的运行;创建、动态控制、修改、删除、保存和恢复,包括盟员的加入和退出。

声明管理DM:完成实体对象(Object)和交互(Interaction)的发布(Publish)和订阅(Subscribe),以及相关的一些协调控制工作。

对象管理OM:处理对象的实例注册和发现(Object Instance Registration and Discovery),属性值更新和反映(Attribute Values Update and Reflection),发送和接收交互(Send and Receive Interaction),以及控制实例更新的相关函数和其他函数。

所有权管理OWM:通过拉或推机制来管理系统仿真运行过程中对象的所有权。RTI自动为每个对象定义一个“删除特权”属性,其所有者默认为对象的创建者。一个盟员若想获得此对象的“删除特权”,则它必须获得该对象“删除特权”属性的所有权。

时间管理TM:主要提供控制各盟员在仿真时间轴上的推进,HLA提供了多种时间管理策略和时间推进策略,目的是保证RTI能在适当的时间以适当的方式和顺序将来自盟员的事件转发给相应的盟员。

数据分发管理DDM:通过提出路径空和区域的概念,在声明管理提供了基于对象类和对象属性数据过滤基础上,提供更加精细的数据过滤功能——基于对象实例属性值的过滤,以减少不相关数据的传输。

整个分布式虚拟现实系统(联盟)中的各种功能和应用(盟员)通过RTI调用提供的服务实现他们之间的互操作,同时也要求盟员提供一组回调服务,在接口规范中对这些回调服务的接口和具体功能也进行了定义。在整个分布式虚拟现实系统的体系结构中,它是执行核心,是仿真系统进行分层管理控制、实现分步交互仿真可扩性的基础。

2 分布式虚拟现实系统通用管理模型设计

2.1 可扩展的虚拟现实引擎设计

在虚拟现实系统的整个循环体系中,除了处理输入、输出及模拟仿真逻辑计算外,还要负责模拟仿真时间的推进,盟员仿真时间的推进应该按照HLA时间管理规范推进,每种时间推进方式分别使用不同的推进算法,为方便开发人员根据需要选择,本设计采用策略模式对HLA时间管理规范中规定的3组5种时间推进算法进行封装处理,如图3所示,DvsSimAdvancer提供仿真引擎选择接口,负责为开发人员配置创建相应的仿真引擎,并调用仿真引擎接口,DvsSimDriver提供仿真引擎接口,系统在设计中通常预设定HLA的默认推进算法,也可以根据需要定义自己的推进策略算法。

图3 仿真引擎

2.2 虚拟现实仿真模型

虚拟现实系统由仿真实体组成,三维实体模型状态的变化形成了仿真。系统在设计中要明确出模型的表示、创建和维护。

2.2.1 仿真实体的表示

HLA的FOM文件中定义仿真对象类和仿真交互类的语义表示,开发中采用面向对象的方法,但语义表示只有开发者可以理解,编写仿真程序的高级程序设计语言只能理解语法,为此需要构建一种机制将语法和语义结合起来。该框架机制实现了HLA中对象和交互到面向对象中对象方法的映射,当虚拟现实系统状态发生变化时(对象属性更新,交互动作),存贮在FOM文件中的数据相应改变,图4为基于面向对象类的仿真实体模型表示。

图4 基于面向对象的仿真实体组成模型

图4中,DvsObject和DvsInteraction用来表示仿真对象类和交互类,它们共同继承自表示仿真实体的模板类DvsEntity,因为实体是属性的集合,属性的值描述了实体的状态,所以模板类DvsEntity继承自属性聚类DvsPropertyAggregate,它是一组属性的集合,该属性聚类指向DvsProperty,类DvsProperty描述了单个实体的属性,DvsValue表示某时刻下属性或者参数的值。HLA中的仿真实体类都拥有一个唯一的FOM实体类名和实体类句柄,因此DvsEntity中设置了静态成员ms_ClassName和ms_ClassHandle来与之关联,同理DvsObject中的成员m_Name和m_Handle表示了一个具体仿真对象实例的名称和句柄。HLA中仿真对象类的属性和仿真交互类的参数都拥有一个唯一的FOM名称和句柄,所以DvsProperty中设置了m_Name和m_Handle与之关联。由此实现FOM中定义的对象类和交互类及其属性和参数,映射到面向对象中的对象类。

2.2.2 仿真实体的创建

利用抽象工厂和工厂方法实现具体仿真实体和FOM实体的关联,使程序世界中实体状态的改变能够自动映射到仿真世界中相应的实体中,从而实现仿真实体创建由开发者完成,调用由框架完成。如图5仿真实体的建立及调用机制。

图5 仿真实体的建立及调用机制

图5中,DvsFactory、DvsObject和DvsInteraction由分布交互仿真应用程序开发框架创建,是开发框架用来维持对象间关系的手段,其中,DvsFactory提供创建对象和交互的接口,但具体对象的创建由开发人员实现,DvsObject和DvsInteraction只是提供仿真对象和仿真交互的通用功能,并提供它们与面向对象语言中的实体关联的方法。DvsXFactory、DvsXObject和DvsXInteraction是由抽象类派生出来的具体类,根据仿真的需要由开发者来定义,DvsXFactory提供创建具体对象的方法,DvsXObject提供具体对象属性的实现,DvsXInteraction实现具体的仿真行为,上述3个具体类共同实现通用框架和特定应用的连接。

2.2.3 仿真实体的维护

以联盟方式建立的仿真系统,是由各加盟的盟员共同维护的,每个盟员都保存整个仿真系统的一部分信息,主要是盟员的本地对象信息和交互行为。除此还应包含其他盟员产生的和本盟员有交互关系的远程对象,同时采用分布式对象计算技术的“存根-代理”结构,实现对远程对象在本地的访问,从而实现本地对象和远程对象在使用上保持一致。实质上就是为由其他盟员创建的远程对象创建本地的代理对象,实现远程对象的属性更新能够自动映射到代理对象,代理对象的创建方法和本地对象相同,区别就是远程对象是只读属性,本地对象是读写属性。仅当远程对象某些属性所有权转移到本地盟员后,代理对象相应的属性值才能变为可写,此时本地盟员负责远程对象相应属性的更新。

2.3 虚拟现实仿真的事件系统通信机制

通用框架定义了应用程序各部分之间的依赖关系、功能分工和流程控制,需要开发人员加入特定应用代码才能形成具体应用程序,因此需要一种机制,实现框架和特定应用代码之间的通信,使得特定逻辑得以执行。大部分通信可以通过继承框架提供的抽象类,建立框架提供的接口,实现框架在其执行流程内调用开发者创建的代码的通信机制,但对于随机发生的特定类型的事件而言需要一种“事件系统”类的通信机制。事件系统通信机制结构如图6所示。

图6 事件系统通信机制

事件系统通信机制提供了消息注册、通知的手段,通过二元模板类DvsEvent提供注册、注销和通知的方法,同时提供信息传递的机制和方法。当系统产生信息时,只需将其作为特定类型的事件触发即可,所有注册此类型事件的处理器都将得到通知。此外事件系统本身具有良好的可扩展性,用户只需要从指定的事件类型通过二元模板类派生特定类型的事件,就可以支持用户自定义事件。

3 结束语

分布式交互仿真应用系统是一个复杂的系统工程,建立这样一个复杂系统而不考虑重用是不能被设计者所容忍的。应用程序通用管理模型能较好地解决这个问题,它可以看成是一组相互合作程序,它提供应用领域所需的大部分通用功能,是整个或部分系统的可重用设计,开发者通过重用这些程序来建立某个特定领域的应用程序,从而大大缩短开发周期。本文在对各种分布式交互仿真应用程序的深入研究与分析的基础上,给出了一个系统模型,并在此基础上,设计了一个面向分布式交互仿真领域的应用程序框架DVS_FM,该框架不仅具备框架程序在普遍意义上的功能,还为分布式虚拟环境应用程序的模块化装配提供一种体系结构。

猜你喜欢

分布式虚拟现实框架
有机框架材料的后合成交换
框架
虚拟现实技术在中学校园中的应用
分布式光伏热钱汹涌
基于预处理MUSIC算法的分布式阵列DOA估计
分布式光伏:爆发还是徘徊
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
关于原点对称的不规则Gabor框架的构造
基于DDS的分布式三维协同仿真研究