浅谈 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语言功能目前还不是很强(如目前没有形体之间的碰
撞检查功能),与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格式的)有要的可以和我联系,联系方式见本文的最后面。  
  
3.JAVA 3D 交互式三维图形编程 张杰 编著 人民邮电出版社
      这本书好象也不好买,我找了N多网站都没找到这本书。
  
4.Java 3D Programming  Author: Daniel Selman(推荐)
  
  
ftp://kaoyan.bingle.org.cn 这个网站以前有英文电子版下载,不过现在也不提供下载了,我着里有这本书的电子版,如果你需要的话,可以和我联系。 


###########################################################################################


 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/ 大量的资料,都挺不错的。
 

  
  我的学习方法:
  
  
  对新技术、新领域很感兴趣,尤其是具有实作性的技术。新东西出来时喜欢看例子(从中文到英文),然后自己再试着自己写东西,再然后是自己对自己写的东西的领悟(学而后再思考)。
  
  
  至于用Java 3D写应用的过程,在这里就不再给出来了。  
  
  期待您的目光和共同学习!

                                                                                        作者:李红军
                                                                                               E_mail:[email protected]  

你可能感兴趣的:(Java,java,direct3d,编程,语言,图形,出版)