采用JOGL的WEB虚拟漫游

2011-03-23 09:30黎国进陈定方
湖北工业大学学报 2011年4期
关键词:画布漫游文件夹

黎国进,陈 杰,李 佳,陈定方

(武汉理工大学智能制造与控制研究所,湖北 武汉 430063)

虚拟漫游技术作为虚拟现实(VR)技术的重要分支,在建筑、观光旅游、游戏、航空航天、医学,军事演练等多种行业中得到广泛应用.在漫游场景中加入图像、声音、视频等多媒体,其强烈的沉浸感、交互性和构想性给用户一种身临其境的感觉.JOGL对OpenGL 2.0规范中的API提供全面的支持,而且还集成了Java AWT和Java Swing界面组件[1].由于得到Sun公司和SGI的大力支持,以及Java平台自身的优势,JOGL作为3D图形开发库得到了广泛的运用.

1 JOGL安装及环境配置

1.1 Java SDK(JDK)的安装

根据所用的操作系统平台,下载与之匹配的最新JDK.

1.2 安装JOGL

对于Windows用户,下载 JOGLl-1.1.1-windows-i586.zip;环境配置(以 Windows用户为例)过程如下:首先解压JOGLl-1.1.1-windows-i586.zip,得到ext和lib.然后将lib文件夹中的DLL文件复制并存放于C: JAVA WORKSPACE JOGL1DLL中.将lib文件夹添加到系统PATH环境变量中,例如:C: JAVA WORKSPACE lib;将 lib文件夹中的jogl.jar,gluegen-rt.jar这两个Jar包的绝对路径添加到系统CLASSPATH环境变量中.

1.3 安装Java IDE

本文采用MyEclipse8.6版本作为软件开发环境.项目环境配置(以Windows用户为例)如下.

1)新建一个工程:File※new※Java Project※在Project Name文本框中输入工程名.

2)点击Next,对Java编译环境进行设置.Libraries※Add External JARS※打开C: JAVA WORKSPACE jar1文件夹中的二个Jar包※Order and Export※点击Select All※点击Finished.

3)点击工程名,右键※Properties※Java Build Path※Source※点击工程名/src※选中Native library location※Link Source※Browse※选中 C:JAVA WORKSPACE JOGL1DLL文件夹※OK.

2 虚拟环境的实现

2.1 Opengl场景渲染的实现

Opengl由两个库组成——GL和GLU(Opengl Utility Library).GL库包含了提供基本图形特征的核心函数;GLU库包含了高级别的基于GL函数的应用函数[2].

JOGL提供GL和GLU两个类来封装Opengl的GL和GLU函数.组件GLCanvas和GLJPanel为Opengl函数调用提供绘制表面.GLCanvas是重量级组件,能够启动使用硬件加速功能.GLJPanel是在系统内存中实现的轻量级组件,不能使用硬件加速功能[2].在此采用GLCanvas画布组件.实现过程如下:1)在Applet的init方法中声明一个GLCanvas画布实例对象并设置其相关属性;2)为画布对象添加GLEventListener监听器;3)新建一个类,实现GLEventListener接口中的init,display,reshape,displayChange等4个方法,在init方法中获取gl,glu等实例对象并设置场景渲染的相关属性,在display方法中绘制场景和显示模型.

2.2 漫游场景的构建

采用类似于OSG中的包围体来实现漫游的范围.包围体的6个面分别为6张纹理图片.装载纹理图片的核心代码如下:

2.3 人机交互

人机交互技术是虚拟现实技术的一个重要分支,在漫游场景中,可以实现虚摄像机的前进、后退、旋转、仰视、俯视等操作.

通过调用GLU类的gluLookAt(

double eyeX,double eyeY,double eyeZ,

double atX,double atY,double atZ,

double upX,double upY,double upZ)方法设置虚拟摄像机的属性.

其中:eyeX,eyeY,eyeZ表示虚拟摄像机的位置;atX,atY,atZ表示虚拟像机所“看”的点的坐标;upX,upY,upZ表示虚拟摄像机的观察方向——倒立,正立或者从某一个角度进行观察.其示意图如图

1、2 所示[3].

图1 gluLookAt函数示意图

与gluLookAt函数共同作用于虚拟像机的还有gluPerspective(

GLdouble fovy,//设置虚拟像机的视界范围

GLdouble aspect,//窗体的纵横比

GLdouble zNear,//视野近点透视深度

GLdouble zFar//视野远点透视深度

)方法.

通过实现KeyListener接口,对窗体添加键盘监听事件,即可通过键盘对虚拟摄像机的位置、视点、观察角度予以变换,实现交互式虚拟漫游.

图2 gluPerspective函数示意图

2.4 Java Applet设置

Java Applet即Java小应用程序,在浏览器中运行,能处理图像、声音、动画等多媒体数据.当用户访问这样的网页时,Applet被自动下载到本机.采用Java Applet技术,将Opengl所渲染的场景在浏览器中显示(图3).其设置如下:1)编译源程序;2)将所有的字节码文件生成一个Jar包;3)对程序中用到的两个Jar包以及生成的joglApplet.jar包进行数字签名;4)在字节码文件中新建一个Html文件,将applet标签加入到文件中,代码如下

.

图3 程序在浏览器中运行示意图

[1]李贻斌,牟龙芳.基于JOGL的关节机器人仿真[J].苏州市职业大学学报,2008,19(1):53-56.

[2]Liang Y D,Zhang H.计算机图形学应用Java 2D和3D[M].孙正兴,张 岩,蒋 维,等译.北京:机械工业出版社,2008.

[3]Davis G.Learning Java Binding for Opengl[EB/OL][2011-03-03].http://alvarestech.com/temp/capp/0steptools/0booksmaio-20-2011/Learning% 20Java%20Bindings%20for%20OpenGL%20-%20Gene%20Davis.pdf.

猜你喜欢
画布漫游文件夹
在画布上做梦的画家 夏加尔
为什么要在画布上割一刀?
让鲜花在画布上盛开
霹雳漫游堂
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
NASA漫游记
挂在墙上的文件夹
不容忽视的空文件夹
大师的画布