Java的3D互动也精彩
以前每次谈到3D程序的开发,总是会联想到C/C++和一堆复杂的3D API函数,虽然一些国外产品提供了方便的3D开发工具,但还是不够友好,于是再也不敢涉足3D领域。不过Java 3D的出现,却令人刮目相看。
自1990年Sun公司的首席研究员Billy Joy提出Java思想,1993年Java正式推出,以及Java 2规范在1998年年底发布,Java的周边扩充了很多功能,如多媒体(JMF)、硬件系统开发(JINI)等,Java 3D也是其中之一。 Java 3D是Java语言在三维图形处理方面的扩展接口。不同于OpenGL和DirectX 3D,Java 3D是更加上层的API,实际上是在JVM(Java Virtual Machine)的基础上调用系统的3D API(包括OpenGL和DirectX 3D),它们之间的关系如图所示。正因为如此, Java 3D具有Java最吸引人的平台无关性。目前Java 3D可以在Windows、Solaris和Linux上运行。与使用OpenGL和 DirectX相比,Java 3D避免了繁杂的低层次运算,并且继承了Java语言良好的面向对象特性,从而可以快速写出复杂的三维应用程序。
随着Internet的发展,网页的互动需求也对三维动画提出了更多要求,Java 3D的出现使得网页三维动画的实现更加方便,而且它的硬件平台无关性使得不同的浏览者(包括不同的浏览器和不同的操作系统)能够充分发挥其硬件本身的特性。
Java 3D的架构分为上层供程序设计者使用的Java 3D API和下层由厂商实现的Java 3D Implementation,以支持不同的3D硬件或者是软件平台。由于采用分层架构,底层的Java 3D Implementation可以有针对地进行硬件优化,发挥较好的硬件性能;上层的程序设计者也能够完全针对整个3D环境进行设计,而无需像过去3D的程序设计那样,必须对某个底层的 3D硬件再进行优化。因为Java 3D整合了对象导向的概念,所以通过它可以快速地建立3D的Java应用或Java Applet。 Java 3D另一个吸引人的地方在于,它支持各种不同的3D档案格式,可以方便地导入VRML、DFX等格式文件。
Java 3D也采用树状的数据结构,与OpenGL很类似。程序设计人员只要利用Java 3D API构建一个场景图的树状结构,即可将剩下的3D影像和声音的具体实现交给Java 3D的内部机制。
Java 3D所需要的编辑软件可以免费下载,当然也可以使用功能较强的集成开发工具,比如Borland的Jbuilder、 Macromedia的KAWA以及WebGain的Visual Café。Java 3D程序和其他Java程序一样略做修改就可以以Applet的方式在网页上运行,为编写交互网页提供了更大的空间。
不过由于Java 3D是较为上层的API,再加上Java语言本身的特点,所以Java 3D程序的运行速度会受到一定的影响。不过在计算机运行速度越来越快的今天,这并不是不可逾越的障碍。笔者目前正在用它进行远程数控三维仿真的开发,其速度完全符合要求。