Java3D应用于现代远程教育的关键技术
来源:第三维度
作者:项慨
单位:湖北经济学院计算机科学与技术学院
本文对Java3D技术和远程教育相结合的优势和关键问题进行了研究和探索,首先提出了一种基于Java 3D技术远程教育系统的框架结构图,然后结合网络多媒体三维课件的制作,介绍了在Java 3D下三维场景建模、交互动画与多媒体功能的实现。
引言
随着Internet的飞速发展和应用,现代远程教育引发了一场深刻的教育模式和教育观念的变革。同时随着计算机网络和虚拟现实技术的发展,它为远程教育的实现提供了解决方案。
远程教育是以计算机技术、多媒体技术、通信技术和Internet网络等高新技术为主要教学传播媒体,把图像、文字、动画、音频及视频相结合的一种新型的交互式网络教育方式。在远程教育系统的传输过程中,一方面,最基本的要求就是将信息从教师端传到远程的学生端,需要传送的信息是多元的,如视频、音频、文本、图片等;另一方面,由于网络的带宽限制,复杂的动画几乎无法传输,传统的三维建模和动画工具因数据量大而无法应用。因此,如何在只有较少信息量传输的情况下,实现以音频和视频为主要呈现方式的多媒体信息是远程教育系统实现的关键技术。
本文提出采用Java 技术和Java 3D虚拟现实技术来实现远程教育系统,虽然目前VRML也能够用于Internet远程教育三维图形及多媒体的开发,但Java 3D的功能和可编程性更强,而且背后有丰富的类库支持,这是V R M L 所不能比拟的。Java 3D 是 Java 语言在三维图形领域扩展的API,可以创建基于Web与互联网结合的三维交互环境场景。由于Java3D具有易于实现、适合网络传输,交互性好等特点,对建立基于三维可视化交互式的应用提供了一种很好的解决方案。
基于Java3D 技术远程教育系统的总体结构
远程教育的框架图如图1所示。
图1 远程教育的框架图
本系统采用的是一种三层结构B/S模型,它是由客户端、网络服务器和数据库服务器组成的体系结构。客户端是网络浏览器,当Web服务器收到客户端的可视化请求时, 它调用相应的可视化Servlet程序,由它从数据库中读取可视化数据,返回给客户端。客户端再以动态三维图形的形式反映在用户的屏幕上。
用户通过使用带有插件的普通浏览器,便可以观赏到由Java 3D创建的三维虚拟现实和多媒体信息。
图中的可视化环境由服务器端和客户端共同组成,它实现了从Internet自动安装用户运行环境,传输控制三维模型代码,在本地快速生成可视化图像。也就是说它传输的不是图像本身,而是控制三维图像生成的程序和数据,大大节省了网络传输的数据量,从而解决了网络速度的瓶颈问题。
基于Java 3D 关键技术的实现
Java 3D的场景图
Java 3D 建模采用的是场景图结构,其构造场景图的三维设计方法使虚拟场景的设计更加直观、灵活,简化了三维程序的设计开发。场景图是由一组具有父子关系的节点对象形成的树状结构。生成一个三维场景的过程就是构造一个场景图结构的过程。其场景图如图2 所示:
图2 Java 3D 的场景图
最底层(根部)的节点是V i r t u a lUniverse,每一个场景图只能有一个Virtual Universe,就像一棵大树的根。
Virtual Universe的上面是Local 节点,每个程序可以有一个或多个Local,但只能有一个 Local处于显示状态。绝大部分程序都只有一个Local。每一个 Local 上面拥有一个到多个Branch Group 节点。
一般说来,要想建立三维应用环境,必须定义所需要的形体(Shape),给出形体的外观(Appearance )及几何信息(Geometry),再把它们摆放在合适的位置。这些形体及其摆放位置都是由相应的节点给出的,他们必须摆放在BranchGroup节点上面,摆放的具体位置由节点Transform Group 设定。另外,摆放好三维形体之后,还需要设定具体的观察位置及观察参数(如视角)。完成了这些工作,就算完成了三维场景图的建立。图3为按场景树结构建立的飞机模型。
图3 按场景树结构建立的飞机模型
图4为Java 3D的视图模型,分支图提供了一个窗口来观察场景图构成的虚拟世界。Java3D没有采用以往摄像机的模式,而是定义了新的视平台模型。视平台模型将整个场景分为两部分,虚拟世界和物理世界。虚拟世界是指场景图结构中所有分支图所构成的虚拟场景。物理世界是指观察者所在的真实世界,包括显示设备等。两个世界通过内在的对应关系连接,成为一个统一的空间。
图4 Java 3D 的视图模型
视图模型中的视平台(V i e wPlatform)是位于虚拟世界中的一个叶节点。它定义了一个参考坐标系,提供了对虚拟世界的观察平台。View、Physical、Body、Physical、Environment、Canvas3D、Screen3D 则是对物理世界的描述。包括对现实设备、图像窗口等物理信息的描述。
Java3D的建模
对于简单模型的建模,Java 3D提供了两种构造三维物体的方法,一种是构造叶节点的方法。即用Shape 3D 来定义三维物体的叶节点,并使用Geometry 和Appearance给Shape 3D定义的三维物体提供具体的几何和外观信息。另一种方法是调用基本的几何图形。
Java 3D的几何工具提供了一些基本的几何形体,包括长方体、立方体、圆锥体、球体等。设计时可以直接调用这些形体,将其组合,从而生成简单的几何形体。
对于复杂物体的建模,运用Java 3D的点、线、面及基本的几何图形库建立三维模型的方法比较复杂,实现复杂的模型比较困难。Java 3D 作为一套优秀的API,提供了一组可以用来导入一些常用3 D 图形文件的接口。直接调用由3DMAX、AutoCAD 等建模工具生成的模型,转换为Java 3D可以识别的数据结构,从而可以建立显示复杂的三维模型。
图5 为3DMAX 绘制的飞机由Java 3D 导入的显示结果。
图5 飞机由Java 3D 导入的显示结果
基于Java 3D 技术的交互多媒体应用实例
在远程教学过程中,传送的信息可能是多元的,如视频、音频、文本、图片等,利用Java 3D技术我们可以插入声音、背景、三维动画等多媒体信息。Java 3D 技术中通过S o u n d 类来使用声音,通过Background对象的构造函数或者该对象的setColor()方法指定背景颜色,也允许用图片作为背景。此外,Java 3D 还给出了一系列的插值器,可以方便的用于动画制作。各种插值器的使用和Alpha类密不可分,插值器定义了几何形体如何在空间作运动,而Alpha定义了几何形体运动的时间控制,它们结合在一起就可以编写简单的三维动画。
以一个网络三维课件多媒体应用的开发为例。
如图6 所示,利用Java 3D技术实现了多媒体信息所包含的声音、图像以及三维动画等信息。用Java 3D制作的多媒体课件可以描述太阳的自转、地球的自转及公转,以及月球的自转及公转,将它们的运动关系在三维空间中充分表现出来,并可以尝试切换不同的视角在网上观看。
图6 网络三维课件多媒体应用的开发实例
下面是该实例添入声音、背景等多媒体信息和三维动画实现的关键代码:
MediaContainer media=newMediaContainer();//创建背景声音
media.setURLString(file:d:/bj.wav”);
BackgroundSound myBS=newbackgroundSound();
......
TextureLoader bgTexture=newTextureLoder(“d:/bg.jpg”,this);//创建背景图片
Background bg=new Background(bgTexture.getImage());
Bg.setApplicationBounds(bounds);
scene.addChild(bg);
......
其中,//Alpha 对象五次出现,分别与相应插值器对象配合使用,控制太阳、地球和月球运动。
Alpha rotationAlpha1=new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,15000,0,0,0,0,0)
Alpha Alpha1=new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,500,0,0,0,0,0)
Alpha rotationAlpha=new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,60000,0,0,0,0,0)
Alpha Alpha1=new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,13500,0,0,0,0,0)
Alpha Alpha2=new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,13500,0,0,0,0,0)
......
在Java 3D 中,交互和动画都是通过Behavior类来实现的,该对象只接受特定的激励,包括键盘、鼠标、定时器等,通过对激励做出的不同响应来改变场景中对象的位置、比例以及观察者的视角。如上图6 所示,观察时可以单击下方的按钮,使之停止/ 开始运动,或者按指定的方向旋转,以便用不同的角度观察。除此之外,可以用鼠标拉近/ 推远画面、平移画面,或将画面旋转到任意角度。
结束语
在远程教育蓬勃发展的今天,如何利用新技术克服带宽限制,充分发挥网络的优势,更好地完善远程教育的教学效果是一个具有深远意义的研究课题。实践证明,Java 3D技术与远程教育的结合是可行的,随着网络技术的发展及需要,它在远程教育上有着广泛的应用前景, 必将在现实中得到广泛的应用。
参考文献:
[1]郁志辉主编,顾雷、刘鹏、房冰等编著.Java3D 编程实践,网络上的三维动画[M].北京:清华大学出版社.2002.
[2]张杰,Java 3D交互式三维图形编程[M],人民邮电出版社,1999.
[3]Peter van der Linden著,邢国庆,黄晓鸣,李金堂等译.Java 2 教程(第五版)[M].电子工业出版社.2003.1.
[4]印旻编著.Java语言与面向对象程序设计[M].北京:清华大学出版社.2000.
[5]刘艳,顾钦,孙济洲.三维虚拟场景建模工具的设计与实现[J].计算机工程.2005.(2):P188-P190
[6]ReifF,ScottLA. Teachingscientificthinkingskillsstudentsandcomputersscoachingeachother[J].AmericanJournalof Physics, 1999,67(9):P819~831.
[7]EarnshawRAetal.VirtualRealityApplications[M].London:AcademicPress,1995.
[8]C C KO,Ben M Chen,S H Chen et al.A largescale web-based virtual oscilloscope laboratoryexperiment[J].EngineeringScienceandEducationJoural,2000-04.