正在加载图片...
第1期 罗熊等:基于分布式虚拟现实的高超声速飞行器仿真系统 ·105· 装为Node类.Applet可以通过控制节点browser的 getNode(string nodename)方法获得相应模型节点的 原始数据库 记录数据库 实例: node browser.getNode(config.nodeName) 客户端← 监听服务模块 二次开发 (3)在得到相应节点后,Applet可以通过向该 接口 节点的实例发送消息,达到控制的目的.在这里,此 VRML模型 类消息应首先通过节点实例的getEventIn方法获得 服务器端」 控制句柄实例,然后通过控制句柄实例发送消息 图4仿真系统分布式结构(简化三层结构) 所有通过getEventIn方法获得的控制句柄实例,均 Fig.4 Distributed architecture of the simulation system (simplified 为EventIn类的一个子类.如: 3-ier structure) positionCtrl =(EventInSFVec3f)node.getEventIn 中间服务程序由以下四个主要模块组成 (“set_translation”); (I)数据库管理模块.本模块由DBLinker类实 rotangleCtrl =(EventInSFRotation)node.getEventIn 现,采用JDBC-ODBC桥(JDBC-ODBC BRIDGE), (set_rotation”). 式中,positionCtrl为EventIn类的子类EventInS.- 定义了对数据库的基本操作.上层程序将通过类定 FVec3f的一个实例,改实例通过node.getEventIn得 义的各种方法操作数据库信息. 到,由参数set_translation可知该实例为模型位置控 (2)服务监听模块.本模块由serverLinster类 制句柄实例.同理,rotangleCtrl为EventIn类的子类 实现,采用标准Java Socket,负责对客户端请求进行 EventInSFRotation的一个实例,改实例通过 监听,并对自定义协议内容进行分析,并对不同的分 node.getEventIn得到,由参数set_rotation可知该实 析结果采用不同的处理措施 例为模型角度控制句柄实例. (3)数据发送模块.本模块为服务器程序的一 在获得相应的控制实例后,可通过控制句柄实 个通用消息发送接口,通过标准Java Socket接口负 例的setValue方法对VRML模型进行相应的控制. 责向客户端发送以自定义协议格式书写的消息. 需要注意的是,setValue方法被每一种控制句柄类 (4)数据定义模块.本模块为服务器程序所使 重写,其参数表根据不同的控制句柄类不同而不同. 用的各种定义数据的集合.当服务器程序需要被重 rotangleCtrl.setValue(rotangle); 写或扩展时,本模块为重写和扩展提供了良好的 positionCtrl.setValue(position); 接口. 其中,rotangle和position为两个浮点数组,包含了坐 3.3基于Java和EAI的VRML场景接口实现 标或角度参数 VRML97标准提供了两种扩展VRML并和外部 程序实现连接的机制,即Script节点和外部编程接 4实际仿真效果 口EAI(external authoring interface).EAI接▣提供 整个分布式仿真系统运行良好.图5展示了在 了比较完备的控制功能,通过将控制函数封装到Ja- 分布式动态仿真过程中呈现的一些实际效果.其 va类中,简化了Java对VRML模型控制的底层细 中,图5(a)描述了飞行器起飞前的仿真状态; 节.本系统通过EAI建立外部Java程序与VRML 图5(b)描述了飞行器起飞过程中的仿真状态; 场景接口,实现Java程序对飞行场景中物体运动的 图5()描述了飞行器起飞后正常飞行的仿真状态 控制.下面是具体的实现方案. (I)嵌入到网页中的Java Applet首先使用EAI 5结论 接口工厂类BrowserFactory提供的getBrowser函数 (1)针对X-38此类特殊的高超声速飞行器, 获得所在VRML浏览器或VRML浏览器插件的控 利用Java和VRML技术,提出并具体实现了一个基 制节点: 于客户机/服务器模型高效分布式虚拟仿真系统,该 browser BrowserFactory.getBrowser(this). 系统具有良好的可移植性和可扩展性,易于大规模 (2)获得浏览器或浏览器插件节点后,Java 部署,也可方便地进行二次开发 Appleti可以通过控制节点与浏览器或浏览器插件进 (2))在虚拟仿真系统实现中,重点研究了一些 行通信,获得VRML中定义的模型节点,节点被封 关键技术,包括基于VRML的高超声速飞行器三维第 1 期 罗 熊等: 基于分布式虚拟现实的高超声速飞行器仿真系统 图 4 仿真系统分布式结构( 简化三层结构) Fig. 4 Distributed architecture of the simulation system ( simplified 3-tier structure) 中间服务程序由以下四个主要模块组成. ( 1) 数据库管理模块. 本模块由 DBLinker 类实 现,采用 JDBC--ODBC 桥( JDBC--ODBC BRIDGE) , 定义了对数据库的基本操作. 上层程序将通过类定 义的各种方法操作数据库信息. ( 2) 服务监听模块. 本模块由 serverLinster 类 实现,采用标准 Java Socket,负责对客户端请求进行 监听,并对自定义协议内容进行分析,并对不同的分 析结果采用不同的处理措施. ( 3) 数据发送模块. 本模块为服务器程序的一 个通用消息发送接口,通过标准 Java Socket 接口负 责向客户端发送以自定义协议格式书写的消息. ( 4) 数据定义模块. 本模块为服务器程序所使 用的各种定义数据的集合. 当服务器程序需要被重 写或扩展时,本模块为重写和扩展提供了良好的 接口. 3. 3 基于 Java 和 EAI 的 VRML 场景接口实现 VRML97 标准提供了两种扩展 VRML 并和外部 程序实现连接的机制,即 Script 节点和外部编程接 口 EAI( external authoring interface) . EAI 接口提供 了比较完备的控制功能,通过将控制函数封装到 Ja￾va 类中,简化了 Java 对 VRML 模型控制的底层细 节. 本系统通过 EAI 建立外部 Java 程序与 VRML 场景接口,实现 Java 程序对飞行场景中物体运动的 控制. 下面是具体的实现方案. ( 1) 嵌入到网页中的 Java Applet 首先使用 EAI 接口工厂类 BrowserFactory 提供的 getBrowser 函数 获得所在 VRML 浏览器或 VRML 浏览器插件的控 制节点: browser = BrowserFactory. getBrowser( this) . ( 2) 获得浏览器或浏览器插件节点后,Java Applet可以通过控制节点与浏览器或浏览器插件进 行通信,获得 VRML 中定义的模型节点,节点被封 装为 Node 类. Applet 可以通过控制节点 browser 的 getNode( string nodename) 方法获得相应模型节点的 实例: node = browser. getNode( config. nodeName) . ( 3) 在得到相应节点后,Applet 可以通过向该 节点的实例发送消息,达到控制的目的. 在这里,此 类消息应首先通过节点实例的 getEventIn 方法获得 控制句柄实例,然后通过控制句柄实例发送消息. 所有通过 getEventIn 方法获得的控制句柄实例,均 为 EventIn 类的一个子类. 如: positionCtrl = ( EventInSFVec3f) node. getEventIn ( “set_translation”) ; rotangleCtrl = ( EventInSFRotation) node. getEventIn ( “set_rotation”) . 式中,positionCtrl 为 EventIn 类 的 子 类 EventInS￾FVec3f 的一个实例,改实例通过 node. getEventIn 得 到,由参数 set_translation 可知该实例为模型位置控 制句柄实例. 同理,rotangleCtrl 为 EventIn 类的子类 EventInSFRotation 的 一 个 实 例,改 实 例 通 过 node. getEventIn 得到,由参数 set_rotation 可知该实 例为模型角度控制句柄实例. 在获得相应的控制实例后,可通过控制句柄实 例的 setValue 方法对 VRML 模型进行相应的控制. 需要注意的是,setValue 方法被每一种控制句柄类 重写,其参数表根据不同的控制句柄类不同而不同. rotangleCtrl. setValue( rotangle) ; positionCtrl. setValue( position) ; 其中,rotangle 和 position 为两个浮点数组,包含了坐 标或角度参数. 4 实际仿真效果 整个分布式仿真系统运行良好. 图 5 展示了在 分布式动态仿真过程中呈现的一些实际效果. 其 中,图 5 ( a ) 描述了飞行器起飞前的仿真状态; 图 5( b) 描述了飞行器起飞过程中的仿真状态; 图 5( c) 描述了飞行器起飞后正常飞行的仿真状态. 5 结论 ( 1) 针对 X--38 此类特殊的高超声速飞行器, 利用 Java 和 VRML 技术,提出并具体实现了一个基 于客户机/服务器模型高效分布式虚拟仿真系统,该 系统具有良好的可移植性和可扩展性,易于大规模 部署,也可方便地进行二次开发. ( 2) 在虚拟仿真系统实现中,重点研究了一些 关键技术,包括基于 VRML 的高超声速飞行器三维 ·105·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有