Java的3D互動(dòng)也精彩
?
?
以前每次談到3D程序的開發(fā),總是會(huì)聯(lián)想到C/C++和一堆復(fù)雜的3D API函數(shù),雖然一些國(guó)外產(chǎn)品提供了方便的3D開發(fā)工具,但還是不夠友好,于是再也不敢涉足3D領(lǐng)域。不過Java 3D的出現(xiàn),卻令人刮目相看。
自1990年Sun公司的首席研究員Billy Joy提出Java思想,1993年Java正式推出,以及Java 2規(guī)范在1998年年底發(fā)布,Java的周邊擴(kuò)充了很多功能,如多媒體(JMF)、硬件系統(tǒng)開發(fā)(JINI)等,Java 3D也是其中之一。 Java 3D是Java語(yǔ)言在三維圖形處理方面的擴(kuò)展接口。不同于OpenGL和DirectX 3D,Java 3D是更加上層的API,實(shí)際上是在JVM(Java Virtual Machine)的基礎(chǔ)上調(diào)用系統(tǒng)的3D API(包括OpenGL和DirectX 3D),它們之間的關(guān)系如圖所示。正因?yàn)槿绱耍?Java 3D具有Java最吸引人的平臺(tái)無(wú)關(guān)性。目前Java 3D可以在Windows、Solaris和Linux上運(yùn)行。與使用OpenGL和 DirectX相比,Java 3D避免了繁雜的低層次運(yùn)算,并且繼承了Java語(yǔ)言良好的面向?qū)ο筇匦裕瑥亩梢钥焖賹懗鰪?fù)雜的三維應(yīng)用程序。
隨著Internet的發(fā)展,網(wǎng)頁(yè)的互動(dòng)需求也對(duì)三維動(dòng)畫提出了更多要求,Java 3D的出現(xiàn)使得網(wǎng)頁(yè)三維動(dòng)畫的實(shí)現(xiàn)更加方便,而且它的硬件平臺(tái)無(wú)關(guān)性使得不同的瀏覽者(包括不同的瀏覽器和不同的操作系統(tǒng))能夠充分發(fā)揮其硬件本身的特性。
Java 3D的架構(gòu)分為上層供程序設(shè)計(jì)者使用的Java 3D API和下層由廠商實(shí)現(xiàn)的Java 3D Implementation,以支持不同的3D硬件或者是軟件平臺(tái)。由于采用分層架構(gòu),底層的Java 3D Implementation可以有針對(duì)地進(jìn)行硬件優(yōu)化,發(fā)揮較好的硬件性能;上層的程序設(shè)計(jì)者也能夠完全針對(duì)整個(gè)3D環(huán)境進(jìn)行設(shè)計(jì),而無(wú)需像過去3D的程序設(shè)計(jì)那樣,必須對(duì)某個(gè)底層的 3D硬件再進(jìn)行優(yōu)化。因?yàn)镴ava 3D整合了對(duì)象導(dǎo)向的概念,所以通過它可以快速地建立3D的Java應(yīng)用或Java Applet。 Java 3D另一個(gè)吸引人的地方在于,它支持各種不同的3D檔案格式,可以方便地導(dǎo)入VRML、DFX等格式文件。
Java 3D也采用樹狀的數(shù)據(jù)結(jié)構(gòu),與OpenGL很類似。程序設(shè)計(jì)人員只要利用Java 3D API構(gòu)建一個(gè)場(chǎng)景圖的樹狀結(jié)構(gòu),即可將剩下的3D影像和聲音的具體實(shí)現(xiàn)交給Java 3D的內(nèi)部機(jī)制。
Java 3D所需要的編輯軟件可以免費(fèi)下載,當(dāng)然也可以使用功能較強(qiáng)的集成開發(fā)工具,比如Borland的Jbuilder、 Macromedia的KAWA以及WebGain的Visual Café。Java 3D程序和其他Java程序一樣略做修改就可以以Applet的方式在網(wǎng)頁(yè)上運(yùn)行,為編寫交互網(wǎng)頁(yè)提供了更大的空間。
不過由于Java 3D是較為上層的API,再加上Java語(yǔ)言本身的特點(diǎn),所以Java 3D程序的運(yùn)行速度會(huì)受到一定的影響。不過在計(jì)算機(jī)運(yùn)行速度越來(lái)越快的今天,這并不是不可逾越的障礙。筆者目前正在用它進(jìn)行遠(yuǎn)程數(shù)控三維仿真的開發(fā),其速度完全符合要求。