Java3D探奇(一)——Java 3D眼中的世界 |
|
作者:Robert.J.Brunne 来源:86vr |
|
|
|
本教程是为没有任何 3D 编程经验的 Java 程序员而编写的。我们将从一些基本的 3D 概念入手,探索如何构建一副场景图 — 用于描述我们想要渲染的场景的基本对象。然后,我们将接触 Java 3D 的一些更强大的功能。我们的重点将放在使用一些 Java 3D 实用类来开始您的编程。 预备知识 系统需求
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 为您完成了这项工作。通过使用内置的强大工具,您可以在一个更高的级别上进行编程。 对速度的需要 3D 程序员十分在意性能,这是有其原因的 ― 他们的应用程序往往对性能非常敏感。如果旋转的 CAD 模型没有平滑地旋转,或者 3D 应用程序用户不能够交互地抓取一个对象并移动它,用户将会立即注意到这一点。 令人欣慰的是,Java 3D 能够利用图形适配器所提供的任何 3D 加速性能。Java 3D 最终会在 JNI 层生成可以由图形卡加速的 OpenGL 调用。新工作站通常装有 OpenGL 加速适配器,因此您的 Java 3D 程序应该可以由硬件加速。 那么意义何在呢?
3D 对象包含在一起渲染的坐标集合(请参阅 Primitive 类)。您可以将它们渲染为点、线和多边形。游戏程序员可能想使用点来模仿怪物冲向玩家时射出的一串子弹。CAD 设计者为了看清她所设计的相当精确对象的更多细节,可能希望以线渲染。而当汽车设计者完成汽车对象的大部分设计的时候,他可以不是使用线框而是使用实心多边形的形式来渲染坐标。尽管实心多边形看起来更接近现实,但却不允许设计者方便地使用描述对象表面的基本数据。 在本教程中,我们将始终绘制多边形,因为这其中乐趣无穷。 移动对象
变换在功能强大的 Transform3D 类中作为矩阵指定。Transform3D 提供许多助手函数以指定常见的变换,诸如平移、旋转和缩放。 光照和其它效果 除了指定在场景中显示什么对象之外,我们还可以通过指定光照效果来控制它们的显示方式(有关光照的更详细信息,请参阅 Light 类 )。您可以指定光照的效果类型,例如聚光灯,以及光的颜色。您还可以给您的场景指定雾化效果并且设置对象的自动行为。 材质贴图(通常称为粘贴墙纸)通常用于使场景更真实。例如,您可以使用木纹(wood grain)图像作为对象的表面来模仿橡木桌面。 几何对象不一定非得是非透明的;它们可以是透明的或半透明的。下图中的灯使用了透明和光照效果,陶器使用了材质贴图。 |
Java3D探奇(一)——Java 3D眼中的世界
最新推荐文章于 2020-02-01 04:07:01 发布