服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java3d实现三维显示 系列一


  java3d用其自己定义的场景图和观察模式等技术构造了3d的上层结构,实现了在java平台使用三维技术。本文在原理上着重介绍java3d特有的两个重要概念:场景图(scene graph)、观察模式(view model)。在接口使用上的介绍分为两部分:实例说明如何使用java3d接口;说明如何将java3d技术与java原有的web技术(jsp、serverlet)相结合,在网页上实现三维显示。

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语言等其它高级语言的连接较难掌握,因而逐渐被淹没在竞争激烈的网络三维技术中。

扫描关注微信公众号