淺談 Java 3D、 OPENGL、VRML、DIRECT3D
作為一名3D圖形學習者,無論是游戲開發、科學計算,還是生物技術,還是虛擬現實(Virtual Reality)、仿真技術,Java 3D都是很優秀的選擇。理由如下:
1)基于Java技術,秉承了Java的一切優點,具有優秀的、豐富的UI(Swing、AWT)和Web發布能力(通過Java Plug-In)。
2)作為第四代3D圖形API,Java 3D簡單易用,不需要多深厚的計算機(http://java.sun.com/products/java-media/3D/collateral/wp_mktg/wp_mktg.html )圖形學功底和學習曲線,開發者便能開發出很專業的動畫、仿真和交互。不過我這個學期剛剛學了圖形學的課,哈哈。
因為他借鑒了VRML的思想,所以學起來很輕松(熟悉VRML的開發者,如對Java還熟悉的,則會發現Java 3D的思想和VRML很相近)。現在正學習虛擬現實課那,在圖書館借了本《VRML程序員使用例庫》(VRML PROGRAMMER‘S LIBRARY )一書作者:[美]Kris Jamsa Phil Schmauder Nelson Yee著
董銘 周玉譯 電子工業出版社 與本書配套的還有一張光盤,不知道圖書館里有沒有那,我借這本書的時候學校正趕放五一假,等五一過后我去圖書館里看看,能借到光盤最好了,呵呵

3)功能強大,高層次開發。因為Java 3D在底層借助于Open/GL、DirectX的強有力支持;在高層,開發者不再需要負責對象渲染、碰撞檢查的編程任務,所以很不錯。最新版本為1.3.1 Beta。(http://java.sun.com/products/java-media/3D/ )
4) 基于場景圖結構(Scene Graph Structure)。這種層次結構,無論是描述現實中的對象,還是計算機實現都栩栩如生。她(Java 3D)在這兩者之間幾乎達到了極致。Java思想的簡單也正體現在此。善于將復雜問題簡單化,比較人性化。
5)學習資源豐富。大部分都是E的。
由于本人剛開始接觸Java 3D。這方面的中文資料還是比較少的,所以只能看英文了,幸好英文資料有很多。中文也有一些。
二、OPENGL、VRML、DIRECT3D、JAVA3D的比較
由于OPENGL的跨平臺特性,許多人利用OPENGL編寫三維應用程序,
不過對于一個非計算專業的人員來說,利用OPENGL編寫出復雜的三維應
用程序是比較困難的,且不說C(C++)語言的掌握需要花費大量時間精
力,當我們需要處理復雜問題的時候,我們不得不自己完成大量非常繁
瑣的工作。當然,對于編程高手來說,OPENGL是他們發揮才能的
非常好的工具。
VRML2.0(VRML97)自1997年12月正式成為國際標準之后,在網絡上得
到了廣泛的應用,編寫VRML程序非常方法(VRML語言可以說比BASIC、JAVASCRIPT等語言還要簡單),同時可以編寫三維動畫片、三維游戲、 用于計算機輔助教學,因而其應用前景非常廣闊尤其適合在中國推廣應用。不過由于VRML語言功能目前還不是很強(雖然目前可以處理形體之間的碰撞檢查功能,但是碰撞檢測要花費大量的處理時間有關VRML處理碰撞檢測的技術大家可以看以下地址上的一篇文章(虛擬城市的開發技術探討_計算機論文):http://www.n318.com/zonghe/lunwen/jisuanji/jisuanji/200605/280079.html),與JAVA語言等其它高級語言的連接較難掌握,因而失去了一些計算機高手的寵愛。但我們認為,我們可以讓大學里的文理科學生利用VRML編寫多媒體應用程序,讓學生很快地對編寫程序感興趣,從而使國內的計算機水平得到提高。
DIRECT3D是Microsoft公司推出的三維圖形編程API,它主要應用于三 維游戲的編程,目前相關的學習資料難于獲得,由于它一般需要VC等編程工具進行編程,需要編程人員具有較高的C++等高級語言的編程功底,因而難以普及。
JAVA3D是建立在JAVA2(JAVA1.5)基礎之上的,JAVA語言的簡單性 使JAVA3D的推廣有了可能。OPENGL和JAVA3D之間的比較可以看成匯編語言 與C語言之間的比較,一個是低級的,一個是高級的(也許這樣比較不太恰當)。JAVA3D給我們編寫三維應用程序提供了一個非常完善的API,它可以幫助我們:
生成簡單或復雜的形體(也可以直接調用現有的三維形體)
使形體具有顏色、透明效果、貼圖。
可以在三維環境中生成燈光、移動燈光。
可以具有行為(Behavior)的處理判斷能力 (鍵盤、鼠標、定時等)
可以生成霧、背景、聲音等。
可以使形體變形、移動、生成三維動畫。
可以編寫非常復雜的應用程序,用于各種領域如VR。
###################### 參考書推薦 ############################### #######################
1、書名: VRML2.0交互式三維圖形編程 由汕頭大學出版社出版 張杰編著
特殊購書方式:
1。)作者售書 、網上訂購(email address: jzhang@mailserv.stu.edu.cn)
2。)可以先獲書,后匯款(不滿意可退書),
只需將通信地址及郵編告知作者,即可在最短的時間內得到書。
3。)書價為25元/本,免收郵購費用
4。)書為16開本,正文161頁。
2.Java 3D編程實踐—網絡上的三維動畫。都志輝主編 清華大學出版社
http://www.china-pub.com/computers/common/info.asp?id=8265
不過這本書好像是不出版了,比較難買,有需要看的朋友網上有本電子書(pdg格式的)。
Java 3D 編程實踐:網絡上的三維動畫 電子書 下載
Java 3D 編程實踐:網絡上的三維動畫下載地址:
http://www.51dir.com/96193017746
如果你的機器上已經安裝了超星瀏覽器的話,請卸載掉然后再重新安裝一次就能正常使用該書了。
3.JAVA 3D 交互式三維圖形編程 張杰 編著 人民郵電出版社
這本書好象也不好買,我找了N多網站都沒找到這本書。
4.Java 3D Programming Author: Daniel Selman(推薦)
Java 3D Programming下載地址:
http://www.esnips.com/nsdoc/26132532-9fbd-4f23-848d-1e324025dbc1
###########################################################################################
P.S.: 一些java3d比較精彩的網上資源
【1】java3d郵件組上比較活躍的人物alessandro borges,巴西技術牛人,用java3d實現了凹凸貼圖,環境貼圖等精彩實例,去網站上看看吧http://paginas.terra.com.br/educacao/alessandroborges/
【2】泰國一個教授寫的java3d的書,有粒子系統,rpg游戲模式三維漫游,多用戶等,相當不錯,提供源碼下載 http://fivedots.coe.psu.ac.th/~ad
【3】很多實例http://www.hta-bi.bfh.ch/~swc/DemoJ3D/
【4】http://www.rolemaker.dk/articles/evaljava/
【5】java3d tutorial有實例源碼 http://goanna.cs.rmit.edu.au/~nigels/Java3D/slides99
【6】java3d寫的一個網球游戲的例子,可多人聯機玩,提供源碼下載和文檔說明http://www.redbrick.dcu.ie/~acathla/index.html
【7】一個類似java3d的api,http://alumni.cse.ucsc.edu/~ey6es/ 在google上搜tiny3d應該能搜的到
【8】韓國人做得衣物方針,可選擇讓模特穿著不同的服裝在T形臺上展示,太大,還是直接連到個人主頁上看吧http://vr.kaist.ac.kr/~redmong/research.htm
【9】一個場景的模擬,有海面,海豚,大鳥,國人做得,現在好像到國外去了http://www.worldshow3d.com/releases/releases.html 貼圖
【10】Java3D目前是開源項目,這里是Java3D的官方開源地址:java3d- Java 3D Parent Project:https://java3d.dev.java.net/
最新版的java3d1.4致力于可編程陰影programmable shaders,它的第一個stable builds已經發布了
【11】建議從事java3d的開發者訂閱java3d郵件組,https://java3d.dev.java.net/servlets/ProjectMailingListList,主要訂閱interest@java3d.dev.java.net這個就可以了,具體訂閱方法見前面網址。另外這個http://archives.java.sun.com/java3d-interest.html是舊的郵件組,個人感覺這套郵件組功能不錯,不過新的java3d開發團隊已經聲明轉入新的郵件組。
【12】http://java.sun.com/products/java-media/3D/collateral/ 大量的資料,都挺不錯的。
【13】Auto Install :
http://java3d.j3d.org/tutorials/quick_fix/auto_install.html
【14】應用程序實例:
http://java.sun.com/products/java-media/3D/in_action/application.html
【15】java3d-interest@java.sun.com
https://java3d.dev.java.net/
【16】Java 3D Implementation - OpenGL vs DirectX
Java 3D vsOpenGL vs Direct X
我的學習方法:
對新技術、新領域很感興趣,尤其是具有實作性的技術。新東西出來時喜歡看例子(從中文到英文),然后自己再試著自己寫東西,再然后是自己對自己寫的東西的領悟(學而后再思考)。
至于用Java 3D寫應用的過程,在這里就不再給出來了。
期待您的目光和共同學習!
如果有什么問題,請留言!
作者:李紅軍
posted on 2006-05-04 16:31 XiaoLi 閱讀(27216) 評論(70) 編輯 收藏 所屬分類: Java