1 引言
隨著計(jì)算機(jī)技術(shù)的發(fā)展,三維應(yīng)用程序有著越來(lái)越多的需求。自從Sun 公司的Java 3D 問世以來(lái),人們終于有了一個(gè)性能優(yōu)越的編寫三維應(yīng)用程序的優(yōu)良工具[1 ]。Java 語(yǔ)言與C + +有著相似的語(yǔ)法結(jié)構(gòu),對(duì)于初學(xué)者來(lái)說(shuō)易學(xué)易用,而且Java 程序可以在網(wǎng)頁(yè)上運(yùn)行,因而獲得越來(lái)越廣泛的應(yīng)用。Java 3D 是一組API ,是Java 語(yǔ)言在三維領(lǐng)域的擴(kuò)展。與Java 3D 相似的技術(shù)有OpenGL和Direct 3D ,對(duì)于普通的三維應(yīng)用程序的編程人員來(lái)說(shuō),OpenGL和Direct 3D 屬于較低級(jí)的三維函數(shù)庫(kù),難以掌握和學(xué)習(xí)。而Java 3D 則是Java 語(yǔ)言在三維領(lǐng)域的延伸,屬于面向?qū)ο蟮挠?jì)算機(jī)語(yǔ)言,容易學(xué)習(xí)和掌握。目前,越來(lái)越多的人在從事網(wǎng)頁(yè)的編寫工作,Java 3D 程序和其他Java程序一樣,可以在網(wǎng)頁(yè)上運(yùn)行,這就為我們?cè)诨ヂ?lián)網(wǎng)上交互式顯示三維模型提供了極大的便利。
由于Java 3D 的功能繁雜,編制三維應(yīng)用程序也是相當(dāng)復(fù)雜的。Java 3D三維可視化編程的研究直到現(xiàn)在還是涉及較少的一個(gè)領(lǐng)域,很少有相關(guān)的理論和技術(shù)出現(xiàn)。
本文通過使用Java語(yǔ)言的三維圖形模塊Java 3D技術(shù)并結(jié)合NetBeans來(lái)實(shí)現(xiàn)Java 3D的三維可視化編程使三維編程變得更加簡(jiǎn)單。希望能夠以此在三維可視化編程方面進(jìn)行一定的研究和探討。
2 Java 3D 技術(shù)簡(jiǎn)介
Java 3D是Java語(yǔ)言在三維圖形領(lǐng)域的擴(kuò)展,是一組用于三維編程的API,它提供了一個(gè)建立三維場(chǎng)景的機(jī)制,提供了編寫三維應(yīng)用程序所需的各種功能。Java 3D可用來(lái)編寫非常復(fù)雜的應(yīng)用程序,應(yīng)用于許多領(lǐng)域[1]。
Java 3D中最重要的概念是它的場(chǎng)景圖數(shù)據(jù)結(jié)構(gòu)[2][3]。Java 3D的場(chǎng)景圖根據(jù)Java語(yǔ)言編程的特點(diǎn)增加了一些新的內(nèi)容,更加易于實(shí)時(shí)處理及特殊三維效果的顯示,更加方便最新的三維圖形加速技術(shù)的應(yīng)用。
Java 3D從1.3.1發(fā)展到1.3.2以后,在java.net 上已經(jīng)發(fā)展成為一個(gè)開源項(xiàng)目。在過去Java3D一直沒有競(jìng)爭(zhēng)力,然而,當(dāng)前Java 3D的穩(wěn)定版本是1.5.0,要比以前的老版本在運(yùn)行效率上快很多。
Java 3D現(xiàn)在分成了許多子項(xiàng)目[4],其中Java 3D的核心類是j3d-core,與Java 3D相關(guān)的其他項(xiàng)目可以查閱Java 3D Project站點(diǎn)來(lái)進(jìn)一步了解其內(nèi)容。
3 3 Java 3D與NetBeans的結(jié)合
為了有效地實(shí)現(xiàn)Java 3D的可視化編程,在這里采用了Java 3D與NetBeans相結(jié)合的方法。Java 3D通過在NetBeans中導(dǎo)入Java 3D開發(fā)模塊,利用其內(nèi)置的Java 3D API來(lái)實(shí)現(xiàn)三維可視化編程。
NetBeans是一個(gè)全功能的開放源碼Java IDE,可以幫助開發(fā)人員編寫、編譯、調(diào)試和部署Java應(yīng)用,并將版本控制和XML編輯融入其眾多功能之中[5]。
NetBeans本身并沒有開發(fā)Java 3D應(yīng)用程序的能力,必須外掛Java 3D API和Java 3D開發(fā)模塊才能進(jìn)行三維可視化的開發(fā)(如圖1所示)。

圖1 NetBeans外掛Java 3D開發(fā)模塊
Netbeans中安裝外掛的方法有兩種:
[1]利用NetBeans內(nèi)建的網(wǎng)絡(luò)升級(jí)功能;
[2]先到NetBeans網(wǎng)站下載這些模塊(.nbm文件),然后再利用NetBeans內(nèi)建的模塊安裝功能。
在這里使用第二種方式來(lái)安裝Java 3D的開發(fā)模塊。首先啟動(dòng)Netbeans,選擇主功能菜單的"Tools/Update Center"以打開Update Center Wizard向?qū)В缓蟾鶕?jù)提示加載Java 3D安裝模塊java3d.nbm(如圖2所示)即可完成Java 3D可視化環(huán)境的搭建。

圖2 選擇需要安裝的java3d.nbm模塊
4 一個(gè)基于Java 3D可視化技術(shù)的一個(gè)實(shí)例
圖3是實(shí)現(xiàn)Java 3D可視化編程的一個(gè)實(shí)例,首先創(chuàng)建一個(gè)場(chǎng)景圖,然后添加相應(yīng)的節(jié)點(diǎn)和屬性等內(nèi)容來(lái)生成場(chǎng)景圖。場(chǎng)景圖生成以后,可以直接從場(chǎng)景圖來(lái)生成與Java 3D對(duì)應(yīng)的源代碼。


圖3 基于Java 3D的三維可視化交互開發(fā)環(huán)境
5 結(jié)論
隨著面向?qū)ο蠛涂梢暬夹g(shù)的發(fā)展,實(shí)現(xiàn)Java 3D的可視化編程,對(duì)于提高三維圖形編程的效率和減少三維編程的復(fù)雜性很有意義。結(jié)合NetBeans編程的通用性和Java 3D對(duì)三維場(chǎng)景強(qiáng)大的可操作性及跨平臺(tái)性,構(gòu)建基于Java 3D-NetBeans的三維可視化交互開發(fā)環(huán)境,對(duì)于實(shí)現(xiàn)三維圖形和三維動(dòng)畫編程具有實(shí)際意義。Java 3D的可視化開發(fā)是一個(gè)正在發(fā)展的領(lǐng)域,在獲取形體的特征和屬性等方面仍需作進(jìn)一步的研究和實(shí)踐。
參考文獻(xiàn)
[1] 張杰. Java 3D 交互式三維圖形編程[M] 北京:人民郵電出版社,1999.
[2]都志輝.Java 3D編程實(shí)踐[M] 北京:清華大學(xué)出版社,2002
[3]Selman, D.Java 3D Programming[M].Manning Publications,2002
[4] Sun.Java 3D Project. https://java3d.dev.java.net
[5] Netbeans.org. http://www.netbeans.org/