分光计三维虚拟现实系统的设计与实现

图1系统功能模块
在已有的网络教学资源设计中,三维虚拟学习环境模块是随着虚拟现实技术的出现引入到教学设计过程中的,其他模块的研究和开发已经较为成熟,这里主要讨论3D虚拟学习环境中学习资源的开发,该模块包括3D学习环境、知识点描述、3D建模和VRML场景实现功能,如图2所示。

图2 虚拟学习环境功能模块
2 系统建模
在设计和实现虚拟环境下分光计实验的各模块功能时,使用了虚拟场景、虚拟设备建模技术和虚拟学习环境集成技术等。要构建三维虚拟学习环境必须为分光计的各个重要组成部分建模,分光计主要由四大部分组成:平行光管、望远镜、载物台和读数装置。平行光管是发光源,发出平行光,望远镜观察平行光,载物台用来放置要观察的光学器件,读数装置测量光线偏转角度。为分光计调节过程中用到的部分进行建模,建模所用工具为3D Max。
建模只是构建三维虚拟学习环境的一部分,要实现良好交互的三维虚拟学习环境还需要通过虚拟现实建模语言VRML在虚拟现实编辑器VRMLPad中将各个场景和三维模型整合,并在虚拟现实浏览器中观看场景和操作物体。先用3D Max进行建模,然后将这些模型导入VRML编辑器中,只需要在导入时设置相应的空间向量坐标和单位,对于同一类型的设备只需要一次建模就可以多次重复使用。多媒体电教室中的主要设备是多媒体教学电脑以及投影设备。这些主要是静态场景建模,用建模软件建模之后再导入VRML即可。
3 系统实现
交互是三维虚拟学习环境的重要特征之一,良好的交互性是三维虚拟学习环境构建成功与否的关键。VRML语言提供的传感器节点[5]就可以实现学习者与场景中物体的交互。VRML主要提供七种传感器,这七种传感器是虚拟现实技术中交互实现的关键所在,通过为这些传感器设置路由信息,学习者可以与虚拟场景中的物体进行交互[4]。
接触传感器(TouchSensor)用来感知用户接触和鼠标输入的节点,是比较常用的节点,检测用户的接触并将相应的事件输出。
平面传感器(PlaneSensor)、圆柱体传感器(CylinderSensor)、球体传感器(SphereSensor)这三种传感器统称为环境检测器,它们都是用来检测用户在三维空间中所做的动作,并将这些动作以合适的空间造型输出。当浏览者接触到PlaneSensor时,系统的反馈使他感觉是在二维平面上观察世界,当浏览者接触到CylinderSensor时,就会感觉是在围绕圆柱体中的轴观察世界,当浏览者接触到SphereSensor时,他就能以球心为原点从各个角度观察物体。
接近传感器(ProximitySensor),可以作为任何组的子节点。在ProximitySensor节点中有一个size阈值,该阈值可以定义浏览者的接近范围,这个接近范围是一个长方形区域,当浏览者进入、退出、移动到定义的范围之内时,被作用物体就可以做出相应的反馈。
可视传感器(VisibilitySensor),合理定义该节点可以节省系统资源,加快浏览速度。size阈值定义了浏览者在所处的位置和角度所能看到的景物,并且能够定义该区域中的物体何时可见,可以用于场景优化。
碰撞传感器(Collision),用来检测浏览者和其他物体是否发生了碰撞,bboxsize阈值指定了碰撞范围和collide阈值的布尔值一起决定碰撞是否应该发生,当collide阈值为FALSE,碰撞检测无效,浏览者可以穿过碰撞物体,否则浏览者就无法移动,只能绕行通过。
在采用VRML和3D Max构建的三维虚拟学习场景中,交互性主要体现在两个方面,即学习者与浏览场景的交互,以及学习者与场景内物体的交互。
(1)与场景的交互
学习者与场景的交互[6]主要包括开关门的操作,以及对多媒体的操作。
①开关门实现代码:
Transform {
translation 0.0 7.0 10.0
children [
Shape { //定义自动门
}





