摘 要:本文对网络虚拟实验室的开发过程进行了探索和尝试,并以一个完整的计算机组装实验室的开发实现过程为例,验证了利用VRML技术构建此实验室系统的可行性。
关键词:VRML Pro/E 虚拟实验室 远程教育
中图分类号:TP311.52文献标识码:B 文章编号:1673-8454(2008)05-0032-03
引言
现代远程教育是当前我国教育发展的一个重要方向,是构建终身教育与学习型社会的重要手段。虚拟实验教学作为远程教学中的主要组成部分,如何为分散在各地的学生提供逼真、交互性强的实验教学,一直是远程教育关注的热点问题。[1]
本文就是对这种网络虚拟实验室的一个探索和尝试,旨在给学生提供一个与真实实验环境相似甚至相同的纯软件环境,使之能够对现有的实验室予以补充。通过该网络虚拟实验室,学生能够通过计算机在网络中模拟仿真各种实验现象。
一、系统结构
本系统以Web为基础平台,并采用浏览器/服务器(B/S)结构,运用Java技术和VRML技术来开发该网络虚拟实验室,使其能够运行于任何客户端平台。服务器端通过软件技术对各种实验环境和实验过程进行仿真,接收来自客户端的请求和可视化输入操作,根据客户端不同请求,模拟计算机组装的过程。客户端只需要安装ComPlayer浏览器,学习者在浏览器中键入网址即可进入虚拟环境进行实验。[2]
该实验系统由实验管理、部件展示、动画演示和虚拟实验室系统几个部分组成。
二、设计实现
整个系统是在虚拟现实语言VRML的基础上,结合了Javascript脚本语言及Pro/E来实现的。设计出的系统突破了以往的二维演示,实现了三维交互,最终把整个装机过程真实地展示在人们的面前。
1.计算机器件的设计与实现
此模块主要完成计算机各个部件的建模,计算机的部件包括显示器、键盘、CPU等复杂的部件。由于计算机内部零件大多为复杂几何形体,建模复杂。完全用VRML语言建立复杂的三维模型是相当繁琐的,毫无直观性可言。在实际开发过程中,选用了Pro/E构造基本模型,并对其优化,从而实现对较大的文件进行优化。将其场景中设计好的造型通过File(文件)命令输出VRML文件,文件扩展名为.wrl,利用ComPlayer浏览器对刚刚输出的VRML场景文件进行全方位、多角度的预览,然后利用文本编辑器(如VRMLPad)打开VRML场景文件,对不满意的地方进行微调,再用浏览器浏览,直到满意为止。
例如:首先在Pro/E中制作好显卡,再导入到VRML中,导入的方法如下:
Group {
children {
Transform{
translation 0.2143 -0.0889
rotation0 -1 0 4.7
children [
Inline{url "xk.wrl"}//导入显卡文件
]
}
}
}
在浏览部件的过程中可以通过不同的视点的控制,来给用户展示部件的不同侧面。各个部件导入以后如图1所示。
2.计算机装机系统的交互功能的实现
计算机装机系统主要向用户提供一个尽可能真实的实验场景,用户可以在其中自由操作计算机部件,进行部件的安装,完成整个计算机组装过程的仿真实现,这个过程是通过人机交互来实现的。
VRML允许用户的行为能够实时作用于场景。VRML的交互是建立在事件的基础上的,使用场景图数据结构建立3D实境,其基本单元被称为节点(Node)。场景节点通过事件入口(eventIn)接受事件,通过事件出口(eventOut)发出事件,一个节点的事件出口和另一个节点的事件入口之间的通路称为路由。通过路由将节点联系成为事件体系是VRML具有动态交互能力的机制。其实现方法主要有以下两类:VRML的动态感知节点及其脚本。
(1)VRML的动态感知节点
1)Timesensor时间传感器节点
在VRML虚拟世界中,需要创建出能自动变化而不需人为改变的造型。我们可以通过设定时间按某种规律变化来控制造型变化,而控制时间按某种规律变化最常见的就是时间传感器。Timesensor 时间传感器节点的作用就是创建一个虚拟时钟,并对其他节点发送时间值,控制VRML立体空间的动态对象的开始、变化和结果过程的时间,实现空间物体造型的移动、变色、变形等自动变化。
2)TouchSensor触摸传感器节点
实现VRML的交互功能,需要设计触动检测器。在VRML虚拟世界中,用户与虚拟现实世界之间的交互是通过一系列检测器节点来实现的,通过使用这些检测器节点,使浏览器感知用户和各种操作,比如开门、旋转、移动和飞行等。这样可以和VRML虚拟世界中的三维对象直接进行交互。
TouchSensor 触摸传感器节点是浏览者与虚拟对象之间相接触型传感器节点。它创建了一个检测用户动作并将其转化后输出,以触发一个动画的检测器。它用来测试用户触摸事件,该节点可以为任何成组节点,并感知用户对该组节点的动作。它的语法结构与Timesensor 传感器完全一样,这里就不赘述。它的出事件为isOver,当用户的鼠标位于CPU上方时,将引发isOver事件,且该事件为True,由此而带来CPU的改变。如以下程序代码段所示:通过鼠标可以将CPU移动到另外一个位置。
#VRML V2.0 utf8
...
Group{
Children[
DEF CPU Transform {//定义CPU引入场景中初始位置;
translation-80 20 50
children[Inline{url"parts\CPU.wrl"}]}
DEF Touch TouchSensor {//定义触摸节点,当鼠标放置在CPU上时触发;
enabledTRUE
}
DEF time TimeSensor{ //定义时间传感器,用来控制移动时间;
enabledFALSE
cycleInterval 6.0//定义一时间长度,说明这个时间传感器的周期间隔;
loop TRUE
}
DEF cpuinterPositionInterpolator {//VRML的位置插补器,用来描述一系列用于动画的关键值,使物体移动成动画。该节点不创建任何造型,在一组三维坐标之间进行线性插值,适合于平移进行插补;
Key
[ 0.0,0.4,0.8,1.0 ] //定义一张变化时刻关键值表,每一时间值都代表全部动态时间中的一个相对时间;
keyValue [ 0 0 0,
8 5-20,
-85-20,
0 00
]//定义一组三维坐标值列表,每个值都对应key域值中的一个相对时间段
}
]
}
ROUTE Touch.isActiveTOtime.enabled
ROUTE Touch.touchTime TO time.startTime
ROUTE time.fraction_changed TO cpuinter.set_fraction
ROUTE cpuinter.value_changed TO cpu.set_translation
ROUTE cpuinter.value_changed TO cpu.set_translation
(2)VRML的脚本节点
VRML中的节点可以生成逼真的虚拟世界,并能生成事件处理,但是在场景复杂和事件繁琐时,就需要通过Script节点实现Java和VRML的数据流通,扩展VRML的功能(Script节点本身没有任何动作,其动作的完成是由脚本程序来实现的)。例如,对于上述CPU的安装过程来说,只单单用VRML传感器和插补器做的是线性运动,并不能将CPU分毫不差地安装到主板上,这就要用到Javascript脚本语言。
在VRML中通过Script节点可以将VRML场景与Java脚本程序有效地连接,并且也是VRML场景从Java脚本程序获取反馈信息的唯一手段。
要将CPU安装到主板上,这里用脚本自定义了一个函数,包含了CPU在主板上的位置,它是一个三维坐标值,当用户单击鼠标时,通过改变T 的R 来改变CPU现在的位置,其代码段主要是通过Translation 空间坐标变换节点的translation域的值的改变来改变CPU的位置,从而把CPU安装到主板上的。Translation空间坐标节点可在VRML立体空间创建一个新的空间坐标系。利用此节点可以在VRML场景中创建多个坐标系,而这些坐标系可随意平移、旋转和缩放,从而使坐标系上的造型实体实现平移、旋转和缩放。
由于各个部件的安装很相似,所以只要掌握CPU的安装,其它各个部件的安装问题就迎刃而解了。
如要改变CPU的位置,就要用到以下代码:
DEFcpuset Script { //给定CPU一个位置值;
eventInSFBool onclick2//定义一个入事件;
eventOut SFVec3f newpoint1//定义一个出事件;
field SFBool on FALSE
url"vrmlscript:
function onclick2(value)
{
newpoint1.x=5.8; //定义x轴值;
newpoint1.y= 4 ; //定义y轴值;
newpoint1.z=5.5; //定义z轴值;
}"
}
(3)VRML与HTML
将交互功能实现以后,还要将VRML文件和HTML文件相结合,做成网站,以方便用户在客户端浏览文件和进行实际的操作。
三、小结
在现代远程教育发展的进程中,随着网络与虚拟现实等技术的发展,虚拟实验教学将日益得到关注与发展。本文着重研究了基于VRML技术的虚拟实验实时交互技术,同时在虚拟实验教学理论的指导下,针对虚拟实验的特点,设计了一个完整的、具有较好交互功能的计算机组装实验。实践证明,通过VRML和Pro/E软件相结合制作的教学软件更适合于远程教学,从根本上改变了传统的教学模式,为传统的教学注入了新的活力,必将对今后的教学改革起到十分重要的作用。
参考文献:
[1]雒伟群.基于VRML的交互式虚拟实验室的研究与实现[D].天津:天津大学,2005.
[2]王乐娅.网络虚拟实验室的开发与实现[J].计算机系统应用,2004(6):58-60.
[3]韩芬.基于Internet的教学课件的开发[J].电化教育研究,2002(4):36-37.