基于X3D的水轮发电机组虚拟安装研究与开发

2012-07-09 01:16刘建国赵林明王利英
图学学报 2012年5期
关键词:水轮实体模型发电机组

刘建国, 赵林明, 王利英

(河北工程大学水电学院,河北 邯郸 056021)

虚拟现实VR(Virtual Reality),是以计算机技术为平台,利用虚拟现实技术的硬件、软件资源,生成逼真的视觉、听觉、触觉一体化的虚拟空间,用户借助必要的设备与虚拟环境中的对象进行交互,从而获得身临其境的感受和体会。目前,VR在娱乐、军事、教育、医学、建筑行业、制造业等行业有广泛的应用[1]。虚拟现实建模语言(Virtual Reality Modeling Language,VRML)是虚拟现实的软件实现方法之一,VRML为虚拟现实技术的发展做出了巨大贡献。但随着计算机网络技术和软硬件技术的发展,VRML也暴露出许多不足之处,如VRML不是基于XML编码、不利于和其他网络技术整合、存在兼容性问题、交互性不强等。为了弥补 VRML的不足,1998年底 VRML委员会更名为Web3D协会,并推出了X3D(Extensible 3D)标准。

在水电站建设过程中,由于水轮发电机组结构复杂,施工难度大,机组的安装往往需要几个月才能完成,这么长的时间如果要到施工现场学习和参观几乎是不可能的,这对学生的安装检修实习和技术人员的培训都造成很大的难度,同时也很难让其他人员对水轮发电机组安装有很全面的了解和认识[2-3]。鉴于此,开发水电站水轮发电机组虚拟安装系统是很有意义的。下面给出利用三维实体设计软件Pro/E、虚拟建模语言X3D和Java3D高级编程语言制作水轮发电机组虚拟安装过程仿真动画,以及应用系统集成技术,来实现水轮发电机组虚拟安装演示系统的具体过程。

1 水轮发电机组三维模型的建立

水轮发电机组各个零部件的三维模型的建立,是水轮发电机组虚拟安装实现的基础。由于水轮发电机组一些零件使用X3D或VRML语言建立虚拟场景是相当烦琐的,毫无直观性可言。因此在实际开发过程中,可以选用三维实体设计软件Pro/E构建水轮发电机组零部件的三维模型。将其Pro/E中设计好的三维模型可以通过File(文件)命令输出为VRML文件,再将其转换为X3D文件。例如,水轮机转轮三维模型建立的过程为:新建一个prt文件,根据叶片工作面和背面数据文件,分别建立叶片工作面和背面的曲面造型,生成叶片的三维实体,再对叶片进口边和出口边倒圆角,生成叶片的三维实体模型。叶片三维实体模型完成后将叶片复制阵列,再用旋转形成转轮的上冠和下环,建立转轮的三维实体模型[4],如图1所示。由Pro/E建立的实体模型导出生成VRML文件,由于Pro/E建立的模型生成的VRML文件比较大,可以采用VRMLPad编辑器进行编辑压缩,并且不影响模型显示效果,最后再将其转换为X3D文件[5]。

图1 水轮机转轮三维建模

2 虚拟场景交互的实现

2.1 Xj3D技术

Xj3D 是Web3D提供的一系列开放的源程序代码,用来实现X3D规范的VRML/X3D浏览器。可以浏览*.x3d、*.x3dv、*.vrml等文件。

2.1.1 Xj3D的目标

最初Xj3D基本代码的目的只是为了使浏览器可以显示 VRML内容。除了这个目标,开发者要对代码进行改进,以使其能适应新的规范和扩展。同时这些代码也可以对未知规范进行开发实验,所以代码要有很强的适应性。Xj3D设计要达到如下3个目标:

1)验证全部X3D规范的可实现性。

2)通过构建代码促进X3D工作组进行更深入的研究和实验。

3)按照规范将代码设计成一些较小的、可重用的组件,以利于整合到其他应用程序中。

2.1.2 Xj3D的体系结构

Xj3D体系结构的 UML(Unified Modeling Language)组件图,如图2所示。Xj3D包括 6大主要组件,分别是 DOM(Document Object Model)组件、SAI(Scene Authoring Interface)组件、VRML Implementation组件、Java3D组件、Swing组件和X3D Utils组件。每个组件都可以作为一个独立部分使用[6]。

图2 Xj3D体系结构的UML组件图

通过Xj3D工具包中的组件,可以开发复杂的应用程序,也可以开发自己的浏览器,自定义节点,添加不同的输入输出设备,甚至可以支持数据手套和跟踪设备。利用Xj3D工具包的X3D应用的开发,能够体现基于Java平台和开放源代码的应用程序开发优势。

2.2 X3D虚拟场景交互

SAI是X3D标准虚拟场景交互的标准,应用程序可以通过SAI访问和控制X3D运行时对象,从而实现和虚拟场景的交互。SAI统一了VRML中内部的和外部的(JSAI&EAI)访问接口,在SAI组件中用户程序和虚拟场景有两种形式的交互:内部交互和外部交互。

2.2.1 虚拟场景的内部交互

虚拟场景内部交互类似于VRML的JSAI,是在Script节点里利用Java或JavaScript语言编写的脚本来扩展 X3D功能的一种方法,虚拟场景通过 Script节点和脚本程序进行交互,Script节点和脚本程序是虚拟场景的一部分,因此称之为内部交互。

脚本程序必须满足一定的规范才能和场景通信,在SAI中制定了这个规范,规范的主要内容是脚本如何准确无误地获得场景的状态和信息,该规范同时也指定了脚本处理的过程。Xj3D实现了这个标准,为了和场景交互,脚本程序必须实现X3DScriptImplementation接口,该接口的方法就是场景提供的各种服务。

虚拟场景和Java程序通过Script节点通信,并把Java程序处理过的数据返回给X3D文件。在void setFields()方法中可获取脚本节点的域,设置鼠标事件监听器,将值传递给Script节点的outputOnly域,再通过路由传递给X3D中的各类节点,完成整个通信过程[7]。

2.2.2 虚拟场景的外部交互

外部交互是指虚拟场景和外部程序的交互,SAI的外交互类似于 VRML的外部编程接口(EAI--External Authoring Interface),EAI 是VRML97规范的一部分,提供外部应用程序存取VRML场景图的能力。场景图中的脚本运行就是通过EAI和外部浏览器完成,EAI还允许任何的应用程序和VRML内容进行交互[8]。

X3D的Xj3D任务组用Java语言实现了SAI规范,Xj3D实现的关于 SAI的类库,放在org.web3D.x3D.sai包下,可利用Xj3D工具包实现虚拟场景的外部交互[9]。虚拟场景交互的一般步骤为:

1)建立连接,获得浏览器对象,通过浏览器对象完成加载场景、置换场景等操作

浏览器对象是虚拟场景和Java交互的桥梁,因为浏览器对象拥有整个场景,获取浏览器对象,就能创建场景对象,从而获取节点对象和节点的域等,实现对场景的访问和控制。浏览器对象主要提供了操纵场景的方法,包括创建场景的方法 createScene、createX3DFromStream、createX3DfromString,加载场景的方法createX3DfromURL,用另一个场景替代当前场景的方法replaceWorld等。

2)场景对象的访问

用场景对象方法可以对场景节点和场景信息进行操纵,包括添加路由addRoute、删除路由removeRoute、创建节点createNode、获得一个已用DEF语句命名的节点getNamedNode等。

3)场景对象中节点的访问

节点对象是虚拟场景交互的最小单位,可以通过编程的方法从场景图中删除节点(dispose)、获取节点中域的引用(getField)、获取节点类型(getNodeType)等。

4)节点域值、监听事件的设置

节点的域存在于节点内部,用户可以利用域对象的方法改变节点的域值,进而控制场景的变化。域对象的方法主要包括:获取当前域值(getValue)、设置域值(setValue)、添加事件监听器(addX3D-EventListener)、删除事件监听器(removeX3DeventListener)等。

下面用一个实例来说明虚拟场景和外部程序交互的过程。实例中首先在Pro/E中创建一个水轮机的一个零部件装配的三维实体模型,再将Pro/E建立的实体模型导出生成VRML文件,并用X3D-Edit3.1把VRML文件转换X3D文件。

外部程序是一个基于 Java Swing的桌面程序。首先创建一个浏览器组件,在界面窗口上侧加载和显示X3D场景,界面窗口的下侧创建了3个按钮控件,分别是“开始”、“暂停”和“继续”,点击“开始”按钮将开始零部件装配的动画演示,点击“暂停”按钮是暂停演示,点击“继续”按钮是继续演示。创建浏览器组件,加载显示场景的关键代码如下:

图3 虚拟装配演示界面

图4 开始演示界面

3 水轮发电机组虚拟安装的实现

3.1 系统开发环境

水轮发电机组虚拟安装系统是以 Java、Java3D、Eclipse为开发平台,应用Xj3D开放源码工具包实现的,系统所使用的开发工具都是免费软件,在网络应用开发领域具有得天独厚的优势,有良好的跨平台性能,目前得到广泛应用。

3.2 系统实现

系统界面分为4部分,分别是菜单、树状目录、虚拟场景演示窗口和演示控制按钮。页面左侧采用树状的目录结构,便于水轮发电机组各部分的演示及零件的浏览,页面中间显示水轮发电机组安装的虚拟场景。用户可以通过树状目录选择不同的部件进行演示。如果用户查看导水机构的安装演示,可通过点击树状目录中的导水机构,即可实现导水机构的安装演示,在演示过程中可用右侧的按钮控制演示速度、暂停演示、继续演示。如图5所示。

图5 水轮发电机组虚拟安装

4 结 论

水轮发电机组虚拟安装系统是以某水电站实际数据为背景,采用三维建模软件Pro/E对水轮发电机组主要零部件进行了三维建模,用虚拟现实语言X3D构造了虚拟场景,用X3D和Java语言通过SAI实现了各零部件的动态交互,具有一定的先进性。采用水轮发电机组虚拟安装系统进行学习和培训与传统的现场培训相比,具有可以减少经费的投入,不受时间和场地的限制,操作简单等优点,因此所开发的水轮发电机组虚拟安装系统具有较广阔的应用前景。另外,开发系统过程中所取得的一些研究成果,也可以用于水电站监测系统的可视化界面设计等方面。

[1] 张 珏,陈金水. 基于VRML的水工学习系统设计[J].中国农村水利水电,2007,(9): 77-79.

[2] 陈小桥,刘 超,等. 分布式水电工程施工过程虚拟现实仿真系统[J]. 武汉大学学报(工学版),2010,43(5): 593-598.

[3] 霍树义,贲国雄,习华勇. 水电站油系统虚拟现实技术应用研究[J]. 水电能源科学,2010,28(11):123-124.

[4] 邓 杰,陈 锐. 水轮机叶片测绘数据的三维 CAD绘型[J]. 水利水电技术,2009,40(11): 103-106.

[5] 陈 敏,郭烈恩. 基于X3D技术构建虚拟液压传动实验室[J]. 机械设计,2010,27(2): 20-24.

[6] 张金钊,张金锐,张金镝. X3D 虚拟现实设计[M].北京: 电子工业出版社,2007: 15-18.

[7] 李贞培,李 平,吴 明. X3D虚拟场景与Java交互研究[J]. 计算机工程与应用,2010,46(16): 67-70.

[8] 李海庆,殷国富,胡瑞飞. 基于 X3D 的虚拟场景交互架构的实现方法研究[J]. 系统仿真学报,2006,18(S2): 383-385.

[9] Xj3D. Xj3D 2.0VRML/X3D code API (2006)[EB/OL].http://www.xj3d.org/javadoc2/index.html.

猜你喜欢
水轮实体模型发电机组
煤气发电机组DEH控制系统的优化
刘家峡3号水轮发电机定子改造分析
青狮潭水电站水轮发电机组增效扩容改造
作战想定仿真实体模型构建方法研究
水轮发电机镜板修复工艺研究
基于Bladed与Matlab的风力发电机组控制器设计
基于PLC控制柴油发电机组3D 模型
水轮发电机更新改造的技术分析
国内首台65MW超高压中间再热发电机组并网发电
F8F-1B“熊猫”舰载战斗机实体模型工作图