站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题使用Java3D实现三维图像

使用Java3D实现三维图像

摘要: 本文在原理上着重介绍Java3D特有的两个重要概念:场景图、观察模式
<iframe src="http://training.yesky.com/ad/iframe/develop_java.htm" frameBorder=0 width=578 scrolling=no height=62></iframe>

  Java3D用其自己定义的场景图和观察模式等技术构造了3D的上层结构,实现了在Java平台使用三维技术。本文在原理上着重介绍Java3D特有的两个重要概念:场景图(Scene Graph)、观察模式(View Model)。在接口使用上的介绍分为两部分:实例说明如何使用Java3D接口;说明如何将Java3D技术与Java原有的Web技术(JSP、Serverlet)相结合,在网页上实现三维显示。

<iframe align=right marginWidth=0 marginHeight=0 src="http://images.chinabyte.com/adjs/iframe-pip/y-software-pip.html" frameBorder=0 width=360 scrolling=no height=300></iframe>  1. 关于Java3D

  1.1 Java3D简介

  Java3D API是Sun定义的用于实现3D显示的接口。3D技术是底层的显示技术,Java3D提供了基于Java的上层接口。Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性。

  Java3D建立在JAVA2(JAVA1.2)基础之上,JAVA语言的简单性使JAVA3D的推广有了可能。它实现了以下三维显示能够用到的功能:

  生成简单或复杂的形体(也可以调用现有的三维形体)

  使形体具有颜色、透明效果、贴图。

  在三维环境中生成灯光、移动灯光。

  具有行为的处理判断能力(键盘、鼠标、定时等)。

  生成雾、背景、声音。

  使形体变形、移动、生成三维动画。

  编写非常复杂的应用程序,用于各种领域如VR(虚拟现实)。

  J2SE在其标准开发包中并不提供Java3D的API,Java3D是一个独立的可选组件,可以单独下载。Java3D现在(截止到2003年5月)提供的正式版本是1.3.0,可以在 http://java.sun.com/products/java-media/3D/download.html 下载该开发工具包。

  Java3D 1.3有7个不同的可下载版本:

Java3D for Windows(DirectX version)SDK for JDK(include Runtime);
Java3D for Windows(OpenGL version)SDK for JDK(include Runtime);
Java3D for Solaris/SPARC Runtime for JDK(include Runtime);
Java3D for Windows(DirectX version)Runtime for JRE;
Java3D for Windows(OpenGL version)Runtime for JRE ;
Java3D for Solaris/SPARC SDK for JRE;
Java3D for Solaris Runtime 64 bit support;

  其中前三个版本是开发包。第4、5、6个版本是Java3D运行期支持程序包。最后一个是支持Solaris 64 bit操作平台运行Java3D的程序包。前三个的开发包包含了各自对应的运行期支持包。Java语言本身具有跨平台特性,无论使用上述哪个版本的开发包,概念和实现代码都会保持完全一致。这里我们使用Java3D for Windows(OpenGL version)SDK for JDK(include Runtime);版本作为我们讨论、实现Java3D的工具包。注意在安装此版本SDK前要保证下列环境:

  Java 2 (Runtime or SDK) version 1.3.1 或更后的版本

  OpenGL 1.1 或更后的版本,并且是Microsoft支持的显卡厂商

  Windows NT 4.0 only: Service Pack 3 或更后的版本(Window2000、WindowXP)

  1.2 Java3D与其他三维技术的比较

  JAVA3D可应用在三维动画、三维游戏、机械CAD等多个领域。但作为三维显示实现技术,它并不是唯一选择而且是一个新面孔。在Java3D之前已经存在很多三维技术,这些三维技术在实现的技术、使用的语言以及适用的情况上各有不同,我们主要介绍与Java3D又密切关系的三种技术:OpenGL、DIRECT3D、VRML

  OpenGL是业界最为流行也是支持最广泛的一个底层3D技术,几乎所有的显卡厂商都在底层实现了对OpenGL的支持和优化。OpenGL同时也定义了一系列接口用于编程实现三维应用程序,但是这些接口使用C(C++)语言实现并且很复杂。掌握针对OpenGL的编程技术需要花费大量时间精力。

  DIRECT3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程。众多优秀的三维游戏都是由这个接口实现。与OpenGL一样,Direct3D的实现主要使用C++语言。

  VRML2.0(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,这是一种比BASIC、JAVASCRIPT等还要简单的语言。脚本化的语句可以编写三维动画片、三维游戏、计算机三维辅助教学。它最大的优势在于可以嵌在网页中显示,但这种简单的语言功能较弱(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而逐渐被淹没在竞争激烈的网络三维技术中。

  表1是Java3D与其它三维技术的比较图,可以从中直观的看出他们相互间的区别:

<table cellSpacing=0 width="100%" border=1> <tr> <td width="9%">技术</td> <td width="19%">实现层次</td> <td width="20%">开发技术(难度)</td> <td width="23%">扩展性</td> <td width="29%">最适合应用领域</td></tr> <tr> <td width="9%">Java3D</td> <td width="19%">中层(JVM)</td> <td width="20%">Java(较易)</td> <td width="23%">J2SE标准扩展(好)</td> <td width="29%">网上三维显示实现… </td></tr> <tr> <td width="9%">OpenGL</td> <td width="19%">底层(显卡)</td> <td width="20%">C\C++(难)</td> <td width="23%">各大厂商支持(较好)</td> <td width="29%">三维设计软件… </td></tr> <tr> <td width="9%">Direct3D</td> <td width="19%">底层(操作系统)</td> <td width="20%">C++(较难)</td> <td width="23%">Windows平台(差)</td> <td width="29%">三维游戏… </td></tr> <tr> <td width="9%">VRML</td> <td width="19%">上层(网页)</td> <td width="20%">标记语言(容易)</td> <td width="23%">安装插件支持(一般)</td> <td width="29%">网上虚拟现实… </td></tr></table>
表1:3D技术对招表




↑返回目录
前一篇: DB2 J2EE开发成本收益分析(三)
后一篇: JDK1.4下实现访问WIN32注册表