浅谈 Java 3D、 OPENGL、VRML、DIRECT3D

浅谈 Java 3D、 OPENGL、VRML、DIRECT3D

一、JAVA3D的优势:
作为一名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: [email protected])
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,主要订阅[email protected]这个就可以了,具体订阅方法见前面网址。另外这个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】[email protected]
https://java3d.dev.java.net/
【16】Java 3D Implementation - OpenGL vs DirectX
Java 3D vsOpenGL vs Direct X  
我的学习方法:


对新技术、新领域很感兴趣,尤其是具有实作性的技术。新东西出来时喜欢看例子(从中文到英文),然后自己再试着自己写东西,再然后是自己对自己写的东西的领悟(学而后再思考)。


至于用Java 3D写应用的过程,在这里就不再给出来了。  

期待您的目光和共同学习!
        如果有什么问题,请留言!

                                                       作者:李红军

                                                                                                

你可能感兴趣的:(浅谈 Java 3D、 OPENGL、VRML、DIRECT3D)