Java的3D互動也精彩
Java的3D互動也精彩
?
以前每次談到3D程序的開發(fā),總是會聯(lián)想到C/C++和一堆復(fù)雜的3D API函數(shù),雖然一些國外產(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語言在三維圖形處理方面的擴(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最吸引人的平臺無關(guān)性。目前Java 3D可以在Windows、Solaris和Linux上運(yùn)行。與使用OpenGL和 DirectX相比,Java 3D避免了繁雜的低層次運(yùn)算,并且繼承了Java語言良好的面向?qū)ο筇匦?,從而可以快速寫出?fù)雜的三維應(yīng)用程序。
隨著Internet的發(fā)展,網(wǎng)頁的互動需求也對三維動畫提出了更多要求,Java 3D的出現(xiàn)使得網(wǎng)頁三維動畫的實(shí)現(xiàn)更加方便,而且它的硬件平臺無關(guān)性使得不同的瀏覽者(包括不同的瀏覽器和不同的操作系統(tǒng))能夠充分發(fā)揮其硬件本身的特性。
Java 3D的架構(gòu)分為上層供程序設(shè)計者使用的Java 3D API和下層由廠商實(shí)現(xiàn)的Java 3D Implementation,以支持不同的3D硬件或者是軟件平臺。由于采用分層架構(gòu),底層的Java 3D Implementation可以有針對地進(jìn)行硬件優(yōu)化,發(fā)揮較好的硬件性能;上層的程序設(shè)計者也能夠完全針對整個3D環(huán)境進(jìn)行設(shè)計,而無需像過去3D的程序設(shè)計那樣,必須對某個底層的 3D硬件再進(jìn)行優(yōu)化。因?yàn)镴ava 3D整合了對象導(dǎo)向的概念,所以通過它可以快速地建立3D的Java應(yīng)用或Java Applet。 Java 3D另一個吸引人的地方在于,它支持各種不同的3D檔案格式,可以方便地導(dǎo)入VRML、DFX等格式文件。
Java 3D也采用樹狀的數(shù)據(jù)結(jié)構(gòu),與OpenGL很類似。程序設(shè)計人員只要利用Java 3D API構(gòu)建一個場景圖的樹狀結(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ùn)行,為編寫交互網(wǎng)頁提供了更大的空間。
不過由于Java 3D是較為上層的API,再加上Java語言本身的特點(diǎn),所以Java 3D程序的運(yùn)行速度會受到一定的影響。不過在計算機(jī)運(yùn)行速度越來越快的今天,這并不是不可逾越的障礙。筆者目前正在用它進(jìn)行遠(yuǎn)程數(shù)控三維仿真的開發(fā),其速度完全符合要求。