这章用一个 Java 3D 例子来描述一个 3D 跳棋。这个例子建立了一个场景,包括:由一
个暗绿色和兰色格相交平铺的,并带有标签的 X 轴和 Z 轴形成的平面;一个兰色背景;一
个可以在两个不同方向浮动的球体。 用户可以通过鼠标来浏览 (拉近放远) 场景。 左边的截
图 15-1 显示最初视图,右边的图是用户视图移动一些之后的效果。
bitscn.com
Figure 15-1. Initial view, and later
3D 跳棋阐述了 Java 3D 编程中一些常用的方法和一些小窍门。例如, 3D 场景使用
Canvas3D 类来实现显示(这个类和 Swing 组件结合使用) 。所有的 Java 3D 程序需要一个场
景图, 3D 跳棋说明了如何增加基本图形,灯光,背景。这些场景图形成了文件的可视形式,
记录这些场景信息的文本版本通过 Daniel Selman 的 Java3dTree 包很容易就能实现。(在这节
的最后我会详细介绍)
地板和球体使用了 Java3D 的 QuadArray, Text2D, and Sphere 几何类:地板是由 QuadArray
的一系列四边形组成,标签是用 Text2D 对象沿着地板上的主轴形成。用户通过一个观察点
查看这个 3D 世界,你将看到如何初始放置观察点、在使用 Java3D 的 OrbitBehavior 类时候
如何移动观察点。
3D 跳棋类图
图 15-2 的类图说明了 3D 跳棋程序的 public 和 private 数据项和方法。
bitscn_com
Figure 15-2. Class diagrams for Checkers3D
Checkers3D 是程序的顶层 JFrame . WrapCheckers3D 是场景图拥有的 JPanel ,作为一
个 Canvas3D 对象,他是可视的 . CheckerFloor 建立地板的子图(例如方格,轴) , with 所有
同颜色的方格用单独的 ColoredTiles 对象表示。
提示:例子的原代码在 Checkers3D/目录(可能是原书附带光盘)
Java 3D 和 Swing 的结合
就向 Swing 文本和按纽, Checkers3D 是 GUI 控制位置的的一个 JFrame ,把他放在必