基于VRML的虚拟实验系统设计
摘要:以一个物理电路虚拟实验系统为基础,介绍了vrml及其实现原理,并详细论述了虚拟实验系统的创建过程和创建方法。
关键词:虚拟现实;vrml;虚拟实验
0 引言
随着网络技术和虚拟现实技术的迅猛发展和普及,远程教育得到了强大的技术支持,使网络虚拟实验实现了对传统实验的有力补允,实现了其时间上的拓展和空间上的延伸。目前的虚拟实验多为二维演示实验,在实验真实感、交互性和教学效果等方面与真实实验相差甚远。vrml(virtual reality modeling language)是开放的、可扩展的、工业标准的虚拟现实描述语言,它能够在web上创建可导航的、超链接的三维虚拟现实空间,并使用户与场景进行实时交互,感知和操作虚拟对象,因而能够提供更佳的性能和更好的教学效果。
1 虚拟现实与vrml
虚拟现实(virtual reality)是一项综合集成人——机界面交互技术,它利用计算机生成具有表面色彩的立体图形模拟现实环境,通过多种传感设备使用户融入到该环境中,并与该环境中的对象进行自然的、实时的交互,从而使用户产生一种沉浸在虚拟环境中的真实感觉。wwW.11665.coM
vrml作为一种与互联网结合,用来描述三维交互世界的程序语言,可应用于创建虚拟现实的对象、景象和展示模型等。vrml的工作原理是用文本信息描述三维场景,在internet网上传输,在本地机上由vrml浏览器解释生成三维场景,解释生成的标准规范即是vrml规范,而把复杂的处理任务交给本地机从而减轻了网路的负荷。
2 实验系统的设计与实现
2.1 虚拟场景的建立 vrml语言本身可以进行三维建模,但是它的标记语言特性使得建立三维虚拟场景比较麻烦,尤其是对一些庞大、复杂、要求精细逼真的场景。一种比较通用的方法是用3d max这样的三维建模软件来建立静态虚拟场景,然后再导入到vrml编辑器中添加动态效果和交互控制。
但是,一般建模软件建立的场景文件都很大,这对网络传输是不利的,必须进行场景优化。通常我们可以采用以下几种方法进行优化。
①利用vrml 中的lod节点(level of detail ,细节层次)。lod节点主要是以视觉效应为每个物体建立多个相似模型, 根据距离由远及近依次使用从粗到细的不同模型描述物体, 减少不需要的模型细节, 从而加速模型的绘制,达到优化处理的目的。②多使用def/use方式。对于在场景中多次使用的对象,可在对象首次使用时用def给物体命名,以后仅需通过“use+对象名”即可引用该物体。这种方法不但能够提高代码重用度,减少文件体积,还可以减少场景中要绘制的多边形,提高场景生成速度。③多使用proto原型定义。使用原型可以获得与def/use方式相同效果,此外它还有动画效果,能进行交互控制,其使用更为灵活,功能更为强大。④复杂模型尽可能用简单模型拼装。用布尔运算得到的复杂模型不利于修改和贴图,为此可用box、cone、cylinder、sphere这些简单模型来构建复杂模型,这样既可以节省在网络中的传输时间,也有利于浏览器的优化。⑤利用压缩工具压缩vrml文件。在vrml的构建过程中难免会出现一些冗余信息,通过压缩工具,可以删掉冗余空间,减少文件体积。
2.2 自动演示功能实现 自动演示功能主要用来演示实验的全过程,以帮助用户了解实验。例如,本系统中的一个基本实验就是通过电源开关的开、合控制灯泡的亮灭。自动演示功能可利用预定义动画来实现,这主要涉及下面的几个功能节点。
①传感器sensor。传感器是虚拟场景中的动作感知器,利用它来感知场景中各种物体的动作。本例中可以为电源开关添加感知鼠标单击动作的接触传感器touchsensor和自动时间控制的时间传感器timesensor。②插补器interpolator。插补器是实现动画效果必不可少的节点,它给出了动画过程中各个时刻变化量的参数值。电源开关的开合和电流表指针的转动都是旋转运动,可以为它们添加插补器orientationinterpolator,而灯泡亮度的变化要由颜色插补器colorinterpolator来实现。③route命令。route命令根据动画响应的顺序将各传感器、插补器、以及要控制的节点串连起来共同实现一个效果。2.3 使用javascript实现交互功能 交互功能要求系统根据用户对场景中不同节点的操作做出不同的响应,这就不能通过预定义的方式来实现,而必须采用更复杂的程序代码进行处理。vrml中常用的脚本语言是javascrip。此外,对于一些需要与网页进行信息传递的场景,还可以利用网页中的java applet来实现更为复杂的控制功能。java eai(external authoring interface,外部创作接口)是增强vrml场景与外部环境通信联系和融合能力的一个高层次的java类包,它使得外部的java applet程序可以利用vrml的事件模型访问和控制vrml场景中的节点。
本例中采用javascript脚本的形式进行代码编程来判断电源开关开、合状态并确定其转向动画。最后脚本代码要用route命令与相关传感器、插补器、和节点串连起来,形成一条动画通路。
2.4 将vrml场景嵌入网页 利用html语言的embed元素可以实现vrml和html语言的结合。网页中嵌入虚拟场景文件,能将三维立体信息和二维平面信息融合在同一个网页之中,网页部分既可以对三维立体场景进行解释、说明,又能够作为用户与场景交互的界面,弥补三维场景在文本方面的不足。
3 结束语
vrml语言具有交互性、分布式、场景逼真、易于实现等特性,是开发基于internet虚拟实验系统的首选。利用vrml构建的虚拟实验系统能够模拟出逼真的实验场景,并提供与实际实验相似的实践体验,不但可以提高实验的效率和效果,拓宽学生实验学习的途径,而且能够更好地完善实验教学的结构,激发学生的创造性思维。
参考文献:
[1]吴春华.虚拟实验教学在现代远程教育中的应用研究[d]. 长沙:中南大学,2006.
[2]张红军,吴志刚.vrml与java在网络虚拟实验中应用[j]. 实验室研究与探索,2006,25(9):1081-1085
推荐阅读