标题: 软件设计与实现--基于java3d的虚拟漫游 [打印本页] 作者: 她。 时间: 2012-6-1 09:38 标题: 软件设计与实现--基于java3d的虚拟漫游 1.Java3d 简介
Java 3D API 的设计是对以前流行的诸如 OpenGL 和 Direct3D 的 3D 图形 API 的重大革新(以前的 API 是同 3D 硬件设计紧密结合的低级过程性 API)。Java 3D 是一种功能强大的、面向对象的 API,它提供了许多超出我们认为作为“3D 图形 API”所能有的功能。Java 程序员可能会发现 Java 3D 编程环境非常熟悉而且易用。Java 3D 做了许多事情来为您管理图形数据,这样就使得您可以把精力集中在其它编程工作上。
使用 Java 3D,首先要在场景图中设置所有的图形对象(也称为几何对象),场景图是一个层次模型,它包含有关场景中的对象以及如何渲染它们的全部信息。然后,将该场景图交由 Java 3D 渲染。您无须为显示数据而编写任何代码 ― Java 3D 为您完成了这项工作。通过使用内置的强大工具,您可以在一个更高的级别上进行编程。
1.1场景图树
Java 3D 场景图是一棵由两个部分或分支组成的树,这两个部分是:内容(content)和视图(view)。视图分支含有复杂 Java 3D 视图模型的所有细节,它还定义视点。好的事情是,对于大多数简单的应用我们都可以使用统一实用类(尤其是“正如其名称所暗示”的 SimpleUniverse 类)来处理视图管理的大多数复杂任务。
内容分支描述了您将在场景中看到什么 。它包含所有图形对象(球体、立方体或更复杂的几何对象)、用来移动它们的转换、光、行为、组节点和烟雾。我们的大多数工作将集中在内容分支。
1.2组节点
Group 对象组成了场景图内容分支的内部节点 。您可以使用 Group 节点来将您的场景图组织成相互关联的部分。每个 Group 节点包含一些子节点,在处理该节点时将渲染这些子节点。Switch 节点和 TransformGroup 节点是特殊的 Group 节点,它允许您对场景图施加进一步的控制。TransformGroup 节点在处理期间对它们的子节点应用 3D 变换(诸如平移、缩放或旋转),这使得您可以移动、旋转或缩放整个场景图。 Switch 节点限制在渲染期间访问哪些子节点,使您可以控制渲染场景图的哪些部分。以 Quake 为例,您可以将所有不同的武器分组到一个 Switch 节点下面,使得您可以只渲染当前使用的武器。
1.3能力位(Capability bits)
Java 3D 将会通过尽可能地预先计算值来优化场景图的渲染。如果想在渲染场景时更改场景的某些方面,则必须使用能力位来指定以后想更改的数据。例如,使一个对象动起来需要更改影响该对象的变换。为了做到这一点,需要在 TransformGroup 中启用 ALLOW_TRANSFORM_WRITE 位