用JAVA3D打造出的三维虚拟现实世界
JAVA3D从高层次为开发者提供对三维实体的创建、操纵和着色,使开发工作变得极为简单。同时,JAVA3D的低级API是依赖于现有的三维图形系统的,如Direct3D、OpenGL、QuickDraw3D和XGL等,它可以帮助我们:
A.生成简单或复杂的形体(也可以直接调用现有的三维形体)
B.使形体具有颜色、透明效果、贴图。
C.可以在三维环境中生成灯光、移动灯光。
D.可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)
E.可以生成雾、背景、声音等。
F.可以使形体变形、移动、生成三维动画。
G.可以编写非常复杂的应用程序,用于各种领域如VR
JAVA3D的这种体系结构既可以使其开发的程序“到处运行”,又使其能充分利用系统的三维特性。就因为JAVA3D拥有如此的强大的三维能力,使得它在网络世界,特别是在游戏中能大展姿彩。
JAVA3D功能应用
JAVA3D可用在三维动画、三维游戏、机械CAD等领域。可以用来编写三维形体,但和VRML不同,JAVA3D没有基本形体,不过我们可以利用JAVA3D所带的UTILITY生成一些基本形体如立方体、球、圆锥等,我们也可以直接调用一些软件如ALIAS、LIGHTWARE、3DSMAX生成的形体,也可以直接调用VRML2.0生成的形体。
可以和VRML一样,使形体带有颜色、贴图。
可以产生形体的运动、变化,动态地改变观测点的位置及视角。
可以具有交互作用,如点击形体时会使程序发出一个信号从而产生一定的变化。
可以充分利用JAVA语言的强大功能,编写出复杂的三维应用程序。
JAVA3D具有VRML所没有的形体碰撞检查功能。
作为一个高级的三维图形编程API,JAVA3D给我们带来了极大的方便,它包含了VRML2.0所提供的所有功能。
GL4Java、VRML、JAVA3D的比较
由于OPENGL的跨平台特性,许多人利用OPENGL编写三维应用程序,不过对于一个非计算专业的人员来说,利用OPENGL编写出复杂的三维应用程序是比较困难的,且不说C/C++语言和java的掌握需要花费大量时间精力,当我们需要处理复杂问题的时候,我们不得不自己完成大量非常繁琐的工作。当然,对于编程高手来说,OPENGL是他们发挥才能的非常好的工具。
VRML2.0(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,编写VRML程序非常方法(VRML语言可以说比BASIC、JAVASCRIPT等语言还要简单),同时可以编写三维动画片、三维游戏、用于计算机辅助教学,因而其应用前景非常广阔尤其适合在中国推广应用。不过由于VRML语言功能目前还不是很强(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而失去了一些计算机高手的宠爱。但我们认为,我们可以让大学里的文理科学生利用VRML编写多媒体应用程序,让学生很快地对编写程序感兴趣,从而使国内的计算机水平得到提高。DIRECT3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程,目前相关的学习资料难于获得,由于它一般需要VC等编程工具进行编程,需要编程人员具有较高的C++等高级语言的编程功底,因而难以普及。
JAVA3D是建立在JAVA2(JAVA1.2)基础之上的,JAVA语言的简单性使JAVA3D的推广有了可能。OPENGL和JAVA3D之间的比较可以看成汇编语言与C语言之间的比较,一个是低级的,一个是高级的(也许这样比较不太恰当)。JAVA3D给我们编写三维应用程序提供了一个非常完善的API,它可以帮助我们:
生成简单或复杂的形体(也可以直接调用现有的三维形体)
使形体具有颜色、透明效果、贴图。
可以在三维环境中生成灯光、移动灯光。
可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)
可以生成雾、背景、声音等。
可以使形体变形、移动、生成三维动画。
可以编写非常复杂的应用程序,用于各种领域如VR。
Java3D总体介绍
Java3DAPI是用来开发三维图形和开发基于Web的3D应用程序(applet)的编程接口.目前用于开发三维图形软件的3DAPI(OpenGL、Direct3D)都是基于摄像机模型的思想,即通过调整摄像机的参数来控制场景中的显示对象,而Java3D则提出了一种新的基于视平台的视模型和输入设备模型的技术实现方案,即通过改变视平台的位置、方向来浏览整个虚拟场景.它不仅提供了建造和操作三维几何物体的高层构造函数,而且利用这些构造函数还可以建造复杂程度各异的虚拟场景,这些虚拟场景大到宇宙天体,小到微观粒子.
Java3D是JavaMediaAPIs中的一部分,可广泛地应用于各种平台,而且用Java3DAPI开发的应用程序和基于Web的3D小应用程序(applet),还可以访问整个Java类,且可以与Internet很好地集成,即如果在浏览器中安装了Java3D的浏览插件,在网上也可浏览Java3D所创建的虚拟场景.Java3DAPI还汲取了已有图形APIs的优点,即Java3D的底层图形构造函数不仅综合了底层APIs(Direcrt3D、OpenGL)最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思想,同时,它又引入了一些通用的图形环境所未考虑的新概念(如3D立体声),这样将有助于提高用户在虚拟场景的沉浸感.本文将着重介绍Java3D针对VR应用所提出的基于视模型和输入设备模型的新思想,在此基础上又讨论了如何利用Java3D来开发VR应用程序及其实现方法,并设计实现了一个应用实例.
1.适于VR应用开发的Java3DAPI众所周知,开发VR应用程序是一件很繁琐的工作,其开发人员必须编写应用程序可能遇到的各种输入和显示设备的接口程序,或者依赖专为VR应用开发而设计的应用程序编程接口(API),且典型的VR应用必须跟踪用户的头部位置和方向,以生成与头部位置方向相一致的虚拟场景图.
另外,还需要先跟踪身体的其它部位(手、臂或腿部),然后通过身体各部位在虚拟场景