关于 Java3D1.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,可以在 下载该开发工具包。
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 与其它三维技术的比较图,可以从中直观的看出他们相互间的区别:
表 1. 3D 技术对招表技术实现层次开发技术(难度)扩展性最适合应用领域Java3D中层(JVM)Java(较易)J2SE 标准扩展(好)网上三维显示实现…OpenGL底层(显卡)C\C++(难)各大厂商支持(较好)三维设计软件…Direct3D底层(操作系统)C++(较难)Windows 平台(差)三维游戏…VRML上层(网页)标记语言(容易)安装插件支持(一般)网上虚拟现实… |