维普资讯 http://www.cqvip.com
l38 计算机与数字工程 第34毪 网上虚拟实验室的设计与实现’ 何水艳冯刚项慨 430079) (华中师范大学计算机科学系武汉摘要提出了基于Java 3D技术网上虚拟实验室的设计模型。Java 3D作为Java在图形方面的扩展,它是基于Open— GL等底层的API,并结合了Java语言的网络功能,能很好的解决网络跨平台环境的三维可视化问题,并具有很强的交互功 能。另一方面关于场景的建模我们采取的是分层建模。通过分层建模有效克服了模型数据量大而产生的客户端系统负担 重等问题。 关键词虚拟实验室Java 3D分层建模 中图分类号TP391、9 Design and Implementation of Network Virtual Lab He Shuiyan Feng Gang Xiang Kai (Department of Computer Science,Central China Normal University,Wuhan 430079) Abstract It proposes a design model of network virtual lab based on Java 3D technique.The technique is the expansion in graphics of Java,based on rock—bottom AH such as OpenGL and combining network function of Java,and is able to solve three— dimensional visual problem of independent of network platform with strong interactive functions.And on the other hand hierarchical structure is adopted,it Can efficiently overcome client s heavily workload caused by large data of model and other problems、 Key words vitrual lb,jaava 3D,hierarchical modeling Class number 11 91.9 l 引言 随着Interact的飞速发展和应用,现代远程教 育引发了一场深刻的教育模式和教育观念的变革。 同时随着计算机网络和虚拟现实技术的发展,网络 虚拟实验室逐渐展现在我们面前。它通过将网络 技术与仿真和虚拟仪器技术相结合,为远程教育的 实验课程提供了解决方案。 我们知道采用传统的单机可视化,用户通过 Internet观察实验可视化的结果,数据不是从本地 硬盘中读取,可视化运行环境也不是事先在本地安 装的。若采用传统的可视化手段如OpenGL等,只 能在Web服务器端生成图像再一幅幅的传给客户 网络跨平台环境的三维可视化等问题。 在大规模复杂场景中,虽然要绘制的对象数量 大幅度增加了,但对观察者来说却未必增加很多, 往往可见实体的数量要远远小于输入实体数量的 总和。因此我们提出根据模型的精细程度按照用 户操作浏览的要求进行分级建模,通过分级建模能 有效地克服虚拟仪器设备因结构复杂、模型数据量 大等问题,同时也有效克服了模型文件长度,使其 有利于网上传递。 2总体结构 Java 3D是由SUN公司推出面向Internet的三 维动画程序语言。其本质是一个交互式三维图形 的API。通过在网页上插入用Java 3D编写的Ap. plet,就能让浏览网页的用户感受到逼真的三维动 画效果。本文提出采用Java技术和Java 3D虚拟 端显示,在当前的Internet传输能力下,传输庞大 的数据量是不现实的。而Java 3D作为Java在图 形方面的扩展,它是基于OpenGL等底层的API,同 时结合了Java语言的网络功能,能够很好的解决 现实技术来实现网上虚拟实验室,其方案图如图1 ・收到本文时间:2005年11月8 13 维普资讯 http://www.cqvip.com
第34卷(2006)第l0期 计算机与数字工程 l39 所不。 所有类文件,并在虚拟机的支持下.解释执行来实 本系统采用的是一种三层结构的B/S模型, 现与用户的交互。 它是由客户端、网络服务器和数据库服务器组成的 表1 Java 3D技术与其它三维技术的比较 体系结构。客户端是网络浏览器,当Web服务器 收到客户端的可视化请求时,它调用相应的可视化 技术实现层次 嫠 扩展性 Servlet程序,由它从数据库中读取可视化数据,返 回给客户端。客户端再以动态三维图形的形式反 Java 3D( )( ) 错 映在用户的屏幕上。 OpenGL c 搽厂商) , 图中的可视化环境由服务器端和客户端共同 组成,它实现了从Intemet自动安装用户运行环 Direct3D(操靡象统) ) w )平l三维游戏… 境,传输控制三维模型代码,在本地快速生成可视 化图像。也就是说它传输的不是图像本身,而是控 VRML 南蜃 暮戛 襞 制三维图像生成的程序和数据,大大节省了网络传 3.2服务器端的开发 输的数据量,从而解决了网络速度的瓶颈问题。 服务器端采用Java 3 D来开发,主要是接受客 服务器端 客户端 户端传来的有关用户实验操作的相关信息,并对这 些信息进行分析处理,然后将分析结果返回给客户 端。由于实验的处理过程是不断的访问数据库进 行相应信息处理的过程,因此如何提高访问数据库 的效率和性能是服务器实现的关键技术。所以在 服务器端我们采用了Servlet多线程技术,由Serv— let从数据库中读取可视化数据,返回给客户端,来 提高数据访问和响应的效率。 3.3服务器和数据库通信 我们采用JDBC技术实现数据库的访问,JDBC 数据库 提供了一些相当低层的方法存取数据库,同时也在 图1 网上虚拟实验室总体结构图 相当高层提供了功能强大的对象来处理数据库。 3 系统的设计与实现 通常利用JDBC访问数据库的一般步骤包括:加载 数据库驱动程序;连接数据库;对数据库执行SQL Java语言是一种高效、健壮、安全的编程语言, 命令;返回结果集;断开连接。 尤其适合Intemet开发。Java 3D是Java在图形方 面的扩展,是基于OpenGL等底层的API,它同时结 4 Java 3D建模 合了Java语言的网络功能,一次编写就可以跨平 网上虚拟实验室建立的根本是虚拟实验室的 台运行。表1是Java 3D与其它三维技术的比较 建立。虚拟实验室建立的关键是采用计算机仿真 图,从中我们可以看出相互间的区别,Java 3D更适 技术来构建实验模型。Java 3D采用的是DAG的 合一些高级应用,如实现计算过程的三维可视化, 场景图数据结构,其构造场景图的三维设计方法使 复杂的交互功能等更有优势。 虚拟场景的设计更加直观、灵活,简化了三维程序 3.1客户端的开发 的设计开发。场景图是由一组具有父子关系的节 客户端需要在Java虚拟机上安装Java 3D的 点对象形成的树状结构。生成一个三维场景的过 运行环境,并编写相应的可视化的HTML和Java 程就是构造一个场景图结构的过程。 3D Applet。Java 3D是一个交互式三维图形应用编 虚拟环境的几何和物理建模得到的是一个非 程接口,是Java语言的扩展。它最大的优势在于 常复杂的模型。在大规模复杂场景中,虽然要绘制 代码可传输性,用来生成可视化场景小巧的applet 的对象数量大幅度增加了,但对观察者来说却未必 可以方便的从服务器传给客户端,然后在客户端本 增加很多,往往可见实体的数量要远远小于输人实 地运行。当浏览器请求网页并遇到<Applet>标 体数量的总和。例如,当实验者进入实验平台,为 签时,浏览器到服务器上获取与该Applet有关的 了保证实验的精确度和避免误操作,进行操作的范 维普资讯 http://www.cqvip.com
l40 网E虚拟实验室的设计与实现 第34卷 围只是芯片插槽接线及其附近的一块,其它的对操 作者来说是不可见也是不需要的。因此场景规模 与实际绘制量之间存在一定的差异,所以我们采用 利用当前的网络传输来传输庞大的数据量是不现 实的,因此我们根据实验的操作要求划分A,B两 个等级。A级模型是整个实验平台,能够给操作者 分层建模。在保证场景真实感前提下,为了提高人 机交互的实时性,要尽可能减少绘制的工作量。为 此,我们采用模型分割技术,这样极大的减少了复 杂性,增加了场景的真实感,最终实现低负荷绘制 较全面的实验信息;B级模型是实验操作的芯片插 槽那一块范围,操作完后进行实验提交,返回到A 级模型整个实验平台观察实验结果。图C是在图 B操作过程中单机鼠标右键选择实验芯片并插上 与网络传输。 的结果。 以逻辑设计实验为例,如图2的A、B、C所示: 图2.A 图2-B 图2-C 图2分层模型示意图 5 结束语 参考文献 [1]郁志辉主编,顾雷、刘鹏、房冰等编著.Java 3D编程实 由于图形图像等视频信息的数据量非常大,严 践——网络上的三维动画[M].北京.清华大学出版 重阻碍了具有大量信息在基于Intemet/Intemet的 社,2002 远程虚拟实验室系统中的使用。因此如何在只有 [2]张杰,Java 3D交互式三维图形编程[M].人民邮电出 版社,1999 较少信息量传输的情况下,以视频等多媒体信息为 [3]Peter van der Linden著,邢国庆,黄晓呜,李金堂等译. 主要呈现方式是远程虚拟实验系统实现的关键问 Java 2教程(第五版)[M].电子工业出版社,2003,1 题。由于Java 3D易于实现、适合网络传输,交互 [4]印曼编著.Java语言与面向对象程序设计[M].北京. 性好等特点,对建立基于Web的三维可视化交互 清华大学出版社,2000 应用提供了一种很好的解决方案。 [5]彭晖,李仁发,李方敏等.基于VP的虚拟实验室原型 没计与实现[J].计算机工程与应用.2002.(2):244 维普资讯 http://www.cqvip.com
第34卷(2006)第lO期 计算机与数字工程 l4l 246 [9]C C KO,Ben M Chen,S H Chen et a1.A large scale web— [6]毛法尧,欧阳星明,仁宏萍.逻辑设计[M].华中理工大 based virtual oscilloscope laboratory experiment[J].Ensi— 学出版社,1996 neering Science and Education Joural,2000,4 [7]ReifF,Scott]_ ̄.Teaching scientiifc thinking skills students [10]Rohring C,Jochheim A.The Vitrual lab for controlling re— and computers scoaching each other(J).American Journal al experiments via Intemet[A].In:Proceeding of the 1 1th of Physics,1999,67(9):819~831. IEEE International Symposium on Computer Aided Con— [8]Eamshaw R A et a1.Vitrual Reality Applic&ions[M].Ion— trol System Design,Hawmi,1 999,279~284 don:Academic Press,1995 夺{ 辛 易x0尔 夺 夺 缘0 0夺 零 零 鲤尔 (上接第137页) 个道路模板的位姿,动态地向场景中加人道路模 的示意图,(b)为丁字交叉路口处理的示意图,处 板,实时生成整个道路网的三维场景。 理方法与十字交叉口类似,只是每两个路段所对等 腰三角形之间所夹角的计算方法有所不同,由于每 3 结果与分析 个角的大小不同,需要根据每两个道路中线的夹角 本文在Vega的Lynx图形界面中完成系统软 来分别计算。 件的初始化设置,然后在Vc++6.0开发环境下, 调用Vega的API函数编写视景仿真程序,生成最 终的道路网三维场景。图3为生成的道路弯道,图 4为生成的道路交叉口。利用本文提出韵方法根 C 据提供的数据可以实时地生成道路网,但在道路生 成中并未考虑与地形的匹配问题,使得整个道路网 是浮在地面上的,没有与地形成为一个整体,这个 D 问题留待以后进一步解决。 图2交叉口的处理 2.4道路网三维场景的生成 道路都处于一定的地形地貌的环境中,所以还 需建立地形模型,Creator提供了一个地形建模模块 (Terrain Pro),本文的地形模型就是利用它建立的。 一一 把建好的地形模型和道路模板通过Vega的API函 图3道路弯道 图4道路交叉口 数调入虚拟场景,合成整个城市道路网的三维 场景。 参考文献 在加载道路模板前需要根据道路中线、地形高 度计算该模板在场景中的位置和方向,即位姿 [1]蒲浩,宋占峰.基于约束Delaunay三角剖分的道路三 维建模方法[J].华中科技大学学报(自然科学版), (Position/Orientaiton)。位姿是用来确定场景中的 2005,33(6):111~113 各种对象在虚拟三维空间中的位置和姿态,包括了 [2]涂圣文,吴小平,苏州.基于MuhiGen Creator/Vega的 x、Y、z、H、P、R六个参数。其中(x,Y,z)用来确 道路三维实时仿真系统实现方法[J].公路与汽运, 定场景对象在场景中的位置,代表场景对象中心点 2005.108:28~3O 在场景中的坐标。H、P、R用来确定场景对象的朝 [3]孙敏,马聪,.3维城市道路网数据模型研究[J]. 向,分别代表场景对象绕三个坐标轴的旋转角度。 测绘通报,2005,10:4~6 只要提供了道路二维、三维信息,就可以计算出每