没有合适的资源?快使用搜索试试~ 我知道了~
java3d编程资料
需积分: 0 74 下载量 157 浏览量
2007-11-16
23:37:46
上传
评论
收藏 264KB PDF 举报
温馨提示
试读
77页
java3d编程资料
资源推荐
资源详情
资源评论
Java3D 学习
JAVA3D 学习系列(一)
网络上的 JAVA3D 学习资料
1.http://www.sun.com/desktop/java3d/collateral/
这里有 SUN 公司为我们提供的学习资料。
2.http://www.sdsc.edu/~nadeau/Courses/VR99/java3d.zip
这是一个非常好的 JAVA3D 学习资料。( 12,058K),里面有许多例子。
大家可以从 http://www.sdsc.edu/~nadeau/中得到 VRML 和 JAVA3D 的许多资料。
JAVA3D 学习系列(二)
一。JAVA3D 的作用:
JAVA3D 可用在三维动画、三维游戏、机械 CAD 等领域。
1.可以用来编写三维形体,但和 VRML 不同,JAVA3D 没有基本形体,不过我们可
以利用 JAVA3D 所带的 UTILITY 生成一些基本形体如立方体、球、圆锥等,我们
也可以直接调用一些软件如 ALIAS、LIGHTWARE、3DS MAX 生成的形体,也可以直
接调用 VRML2.0 生成的形体。
2.可以和 VRML 一样,使形体带有颜色、贴图。
3.可以产生形体的运动、变化,动态地改变观测点的位置及视角。
4.具有交互作用,如点击形体时会使程序发出一个信号从而产生一定的变化。
5.可以充分利用 JAVA 语言的强大功能,编写出复杂的三维应用程序。
6.JAVA3D 具有 VRML 所没有的形体碰撞检查功能(这也是本人目前中意 JAVA3D
的原因)。
二。OPENGL、VRML、DIRECT3D、JAVA3D 的比较
由于 OPENGL 的跨平台特性,许多人利用 OPENGL 编写三维应用程序,不过对于一
个非计算专业的人员来说,利用 OPENGL 编写出复杂的三维应用程序是比较困难
的,且不说 C(C++)语言的掌握需要花费大量时间精力,当我们需要处理复杂
问题的时候,我们不得不自己完成大量非常繁琐的工作。当然,对于编程高手来
说,OPENGL 是他们发挥才能的非常好的工具。
VRML2.0(VRML97)自 1997 年 12 月正式成为国际标准之后,在网络上得到了广泛
的应用,编写 VRML 程序非常方法(VRML 语言可以说比 BASIC、JAVASCRIPT 等语
言还要简单),同时可以编写三维动画片、三维游戏、用于计算机辅助教学,因
而其应用前景非常广阔尤其适合在中国推广应用。不过由于 VRML 语言功能目前
还不是很强(如目前没有形体之间的碰撞检查功能), 与 JAVA 语言等其它高级语
言的连接较难掌握,因而失去了一些计算机高手的宠爱。但我们认为,我们可以
让大学里的文理科学生利用 VRML 编写多媒体应用程序,让学生很快地对编写程
序感兴趣,从而使国内的计算机水平得到提高。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
DIRECT3D 是 Microsoft 公司推出的三维图形编程 API,它主要应用于三维游戏的
编程,目前相关的学习资料难于获得,由于它一般需要 VC 等编程工具进行编程,
需要编程人员具有较高的 C++等高级语言的编程功底,因而难以普及。
JAVA3D 是建立在 JAVA2(JAVA1.2)基础之上的,JAVA 语言的简单性使 JAVA3D 的
推广有了可能。OPENGL 和 JAVA3D 之间的比较可以看成汇编语言与 C 语言之间的
比较,一个是低级的,一个是高级的(也许这样比较不太恰当)。 JAVA3D 给我们
编写三维应用程序提供了一个非常完善的 API,它可以帮助我们:
生成简单或复杂的形体(也可以直接调用现有的三维形体)
使形体具有颜色、透明效果、贴图。
可以在三维环境中生成灯光、移动灯光。
可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)
可以生成雾、背景、声音等。
可以使形体变形、移动、生成三维动画。
可以编写非常复杂的应用程序,用于各种领域如 VR。
三。如何获得 JAVA3D 运行环境
从 http://java.sun.com/products/java-media/3D/我们可以获得最新的
JAVA3D 运行环境,目前最新的版本是 1.1.1,在安装之前需要安装 jdk1.2。
在编写 JAVA3D 程序之前,我们需要了解一些概念,完成一些准备工作。
一. JAVA3D 的数据结构
JAVA3D 实际上是 JAVA 语言在三维图形领域的扩展,JAVA3D 的编程和 JAVA 一样,
是面向对象的编程。
JAVA3D 的数据结构采用的是 Scene Graphs Structure(场景图),这一灵活
的树状结构与显示列表多少有些相似之处,但运用起来更耐用(More Robust)。
JAVA3D 的场景图是 DAG(Directed-acyclic Graph),即具有方向性的不对称图
形。
场景图中有许多线和线的交汇点,交汇点称为节点(Node),不管什么节点,
它都是 JAVA3D 类的实例(Instance of Class), 线 ( Arc)表示实例之间的关系。
在 JAVA3D 的场景图中,最底层(根部)的节点是 Virtual Universe,每一个
场景图只能有一个 Virtual Universe。
在 Virtual Universe 上面,就是 Locale 节点,每个程序可以有一个或多个
Locale,但同时只能有一个 Locale 处于显示状态,就好象一个三维世界非常大,
有很多个景点,但我们同时只能在一个景点进行观察。当然我们可以从一个景点
跳到另一个景点,不过绝大多数程序只有一个 Locale。
每一个 Locale 上面拥有一个到多个 BranchGroup 节点。我们知道,要想建立
我们的三维应用环境,我们必须建立所需要的形体(Shape), 给 出 形体的外观
(Appearance)及几何信息(Geometry), 再把它们摆放在合适的位置,
这些形体及其摆放位置都建立在 BranchGroup 节点之上,摆放位置通过另一个节
点 TransformGroup 来设定。另外,我们在安放好三维形体之后,还需要设定具
体的观察位置,我们暂时用 View Platform 代替,它也是建立在 TransformGroup
节点之上的。下面我们用一个示意图来说明上面我们介绍的 JAVA3D 的场景图概
念。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
Virtual Universe
|
|----------------------------------|
| |
Locale Locale
|
|
----------------+-----------------
| | | |
| | | |
BG BG BG BG (BG--BranchGroup)
| | | |
| | | | (S---Shape)
S TG TG TG (TG--TransformGroup)
----+--- | | |
| | | | |
A G S S View Platform
| |
| | (A---Appearance)
----+---- ----+---- (G---Geometry)
| | | |
| | | |
A G A G
JAVA3D 学习系列(四)
一. 如何安装 JAVA3D
下载 JDK1.2 及 JAVA3D (目前最新的为 1.1.1 版本)。在 WIN95/98 上安装,先安
装 JDK1.2,再安装 JAVA3D,将 JDK 安装到 JDK1.2 目录下。建立一个自己的目录,
在自己的目录中编写并运行程序。注意,安装 JDK1.2 时别忘了在 autoexec.bat
中插入一行:
SET PATH=C:\JDK1.2\BIN
二. 如何编写 JAVA3D 源程序
用文本编辑工具编辑源程序,和其它 JAVA 程序一样,程序后缀为 JAVA。
三. 如何运行 JAVA3D 源程序
用 JAVAC 编译源程序,生成 class 文件。根据文件的类型,选择用 JAVA 或
APPLETVIEWER 运行程序。JAVA3D 程序可以为 APPLICATION 程序,也可以为 APPLET
程序,因而 JAVA3D 程序也可以摆放在网页上,当然这时候我们必须在浏览器上
做一些设置工作(以后再介绍)。
四. 一个最简单的 JAVA3D 源程序。
下面我们介绍一个最简单的 JAVA3D 源程序,进而介绍 JAVA3D 为我们提供的各种
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
功能。程序是一个 JAVA 的 APPLET 类型的程序,它的作用是显示一个红色的圆锥,
仅此而已。名为 SimpleCone.java。
//SimpleCone.java
import java.applet.Applet;
import java.awt.BorderLayout;
//import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class SimpleCone extends Applet{
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
TransformGroup objTrans = new TransformGroup();
objRoot.addChild(objTrans);
Appearance app = new Appearance();
Material material = new Material();
material.setEmissiveColor(new Color3f(1.0f,0.0f,0.0f));
app.setMaterial(material);
Cone cone=new Cone(.5f,1.0f,1,app);
objTrans.addChild(cone);
objRoot.compile();
return objRoot;
}
public SimpleCone() {
setLayout(new BorderLayout());
Canvas3D c = new Canvas3D(null);
add("Center", c);
BranchGroup scene = createSceneGraph();
SimpleUniverse u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
// public static void main(String[] args) {
// new MainFrame(new SimpleCone(), 256, 256);
// }
}
//end of Simple.java
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
在运行 applet 程序时,我们需要编写一个 HTML 文件:
先用 javac 将 JAVA3D 源程序编译成 class 文件,再用 appletviewer 运行 HTML
文件。虽然程序是 applet 程序,但我们也可以将其变成 application 程序,这
时我们只需将程序头尾的四个注释行的注释符号去掉即可,这时我们可以用
java 来运行它:
java SimpleCone
JAVA3D 学习系列(5)
JAVA3D 程序也是 JAVA 程序,因而我们首先必须对 JAVA 有所了解,并能编写简
单的 JAVA 程序,了解 JAVA 编程的基本概念。
一. SimpleCone 程序分析
1. SimpleCone.java 及其对应的 VRML 程序
上一节中,我们给出了 SimpleCone 这个非常简单的 JAVA3D 程序,下面我们来解
读这个程序,进而介绍 JAVA3D 所提供的 API 的内容。
第三节中,我们对 JAVA3D 的场景图结构作了一个简单的介绍,从场景图我们可
以看出,JAVA3D 的场景图和 VRML 的场景图非常相似,因而我们可以编写类似的
VRML 程序出来,与 JAVA3D 程序进行比较。SimpleCone 程序只是显示一个红色的
圆锥,相类似的 VRML 程序为:
//SimpleCone.wrl
#VRML V2.0 utf8
Shape{
geometry Cone{ bottomRadius .5 height 1.0}
appearance Appearance{material Material{emissiveColor 1 0 0}}
}
}
可以看到,与 JAVA3D 程序相比,VRML 程序要简单的多,并且可以直接在 IE 和
Netscape 浏览器上运行,而 JAVA3D 则要复杂的多。不过几乎所有的 VRML 程序
都可以用 JAVA3D 编写出来,而稍微复杂一点的 JAVA3D 的程序则基本上无法用
VRML 语言完成。因为 VRML 几乎可以看成是一个三维计算机图形格式,而 JAVA3D
则是一个高级计算机语言。在上面的 VRML 程序中,只定义了一个三维形体及其
材质,背景、灯光、位置等均为缺省值。同样地,SimpleCone.java 程序中,我
们也只定义了三维形体及其材质,没有背景、灯光等,处在缺省的位置上( 坐标
系原点)。JAVA3D 和 VRML 一样,采用的是一个符合右手螺旋法则的三维坐标系。
正 X 轴向右,正 Y 轴向上,正 Z 轴朝外(从计算机屏幕指向我们)。
2. JAVA3D(API)中的类
JAVA3D 是 SUN 公司为我们提供的一个 API,里面包含了几乎所有我们所需要的编
写 JAVA 三维多媒体应用程序的基本的类及方法。我们在编程时,只需调用所需
要的类及方法,就可以快速地编写出复杂的三维多媒体应用程序。可以说,我们
所做的工作只是学会应用 JAVA3D 的各种类(Objects)及方法。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
剩余76页未读,继续阅读
资源评论
linbzh
- 粉丝: 2
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功