java3d 文档说明_第1页
java3d 文档说明_第2页
java3d 文档说明_第3页
java3d 文档说明_第4页
java3d 文档说明_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA 3D 说明文档说明文档 一 一 引言引言 JAVA 3D 是 Java 语言在三维图形领域的扩展 是一组应用编程接口 API 利用 Java 3D 提供的 API 可以编写出基于网页的三维动画 各种计算机辅助教 学软件和三维游戏等等 利用 Java 3D 编写的程序 只需要编程人员调用这些 API 进行编程 而客户端只需要使用标准的 Java虚拟机就可以浏览 因此具有 不需要安装插件的优点 JAVA 3D 从高层次为开发者提供对三维实体的创建 操纵和着色 使开发工 作变得极为简单 同时 JAVA 3D 的低级 API 是依赖于现有的三维图形系统的 如 Direct 3D OpenGL QuickDraw 3D 和 XGL 等 它可以帮助我们 A 生成简单或复杂的形体 也可以直接调用现有的三维形体 B 使形体具有颜色 透明效果 贴图 C 可以在三维环境中生成灯光 移动灯光 D 可以具有行为 Behavior 的处理判断能力 键盘 鼠标 定时等 E 可以生成雾 背景 声音等 F 可以使形体变形 移动 生成三维动画 G 可以编写非常复杂的应用程序 用于各种领域如 VR JAVA 3D 的这种体系结构既可以使其开发的程序 到处运行 又使其能充 分利用系统的三维特性 就因为 JAVA 3D 拥有如此的强大的三维能力 使得它 在网络世界 特别是在游戏中能大展姿彩 So what is java3d Java3d java 3d 目前 JAVA 3D 的可下载的最新版本为 java 3D 1 5 1 如下图所示 图 1 1 Java 3D 最新版本 二 二 Java 3D 和其他三维技术比较和其他三维技术比较 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 语言等其它高级语言的连接较难掌握 因而逐渐被淹没 在竞争激烈的网络三维技术中 技术实现层次开发语言难度扩展性最适合领域 Java3D中层 JVM Java较易 J2SE 标注扩 展 好 网上三维显 示实现 OpenGL底层C C 难 各大厂商支 持 较好 三维设计软 件 Direct3D底层C 较难 Windows 平 台 差 三维游戏 VRML上层标记语言容易 安装插件支 持 一般 网上虚拟现 实 表 1 1 Java 3D 和其他三维技术比较 三 三 Java 3D 优势优势 1 基于 Java 技术 秉承了 Java 的一切优点 具有优秀的 丰富的 UI Swing AWT 和 Web 发布能力 通过 Java Plug In 2 作为第四代 3D 图形 API Java 3D 简单易用 不需要多深厚的计算机 图形学功底和学习曲线 开发者便能开发出很专业的动画 仿真和交互 3 功能强大 高层次开发 因为 Java 3D 在底层借助于 Open GL DirectX 的强有力支持 在高层 开发者不再需要负责对象渲染 碰 撞检查的编程任务 所以很不错 4 基于场景图结构 Scene Graph Structure 这种层次结构 无论是 描述现实中的对象 还是计算机实现都栩栩如生 她 Java 3D 在这两者之 间几乎达到了极致 Java 思想的简单也正体现在此 善于将复杂问题简单化 比较人性化 四 四 Java 3D 场景图结构场景图结构 Java3D 实际上是 Java 语言在三维图形领域的扩展 与 Java 一样 Java3D 有纯粹的面向对象结构 Java3D 的数据结构采用的是场景图 就是一 些具有方向性的不对称图形组成的树状结构 图 4 1 我们在一个 Java3D 应用程序看到的逼真三维场景从程序的角度看来 实 际就是由 Java3D 定义的一系列的对象 这些对象不是杂乱无序 对象之间也 不是毫无关系 如果想让三维图像正常显示 必须在这两点上遵循 Java3D 场 景图的规定 观察图 4 1 Java3D 场景图的树结构由各种各样的对象组成 在图中出现的这些对象都实现了 Java3D 中有重要的意义的类 从逻辑上 我们将它们分为三类 根节点 Root Virtual Universe Object 节点 Node Local Object Branch Group Nodes Behavior Node Shape3D Node 叶子节点 Leaf Appearance Geomery 图图 4 14 1 在应用中的 在应用中的 Java3DJava3D 场景图场景图 场景图中线和线的交汇点称为节点 Node 这些节点都是 Java3D 类的实 例 Instance of Class 节点之间的线表示各个实例之间的关系 Virtual Universe 是根节点 每一个场景图的 Virtual Universe 是唯一的 在 Virtual Universe 下面是 Locale 节点 每个程序可以有一个或多个 Locale 但同时只能有一个 Locale 处于显示状态 就好象一个三维世界非常大 有很多个景点 但我们同时只能在一个景点进行观察 Java3D 允许从一个 Locale 跳到另一个 Locale 不过绝大多数程序只有一个 Locale 每一个 Locale 可以拥有多个 BranchGroup 节点 所有三维形体的其位置 信息 Transform Group Nodes 都建立在 BranchGroup 节点之上 TransformGroup Node 用来设定 Shape3D 在 Virtual Universe 中的位置 Spape3D Node 是三维图形节点 这个节点的实体放映在最后的显示画面 中 就是三维世界中的每个形体 包括正方体 球体以及任何形状和外观的三 维形体 位于场景图最下层的是两个叶子节点 三维体的外观 Appearance 和几何 信息 Geometry 这两个节点定义了一个三维体的显示效果 View Platform 位于图 4 1 的另一个分枝上 与前面所有描述三维体的性质 的概念不同 View Platform 和 View 都是用来定义观察者的信息 上面所列的概念很多 但是对于建立一个简单的 Java3D 程序 我们至少 需要了解三个概念 虚拟宇宙 Virtual Universe 场景 Locale 坐标系统 4 14 1 虚拟宇宙虚拟宇宙 Virtual Virtual Universe Universe 在 Java3D 中 虚拟宇宙被定义为结合一系列对象的三维空间 虚拟宇宙 被用作最大的聚集体表现单位 同时也可被看作一个数据库 不管是在物理空 间还是逻辑内容 虚拟宇宙都可以很大 实际上在大多数情况下 一个虚拟宇 宙就可以满足一个应用程序所有的需求 虚拟宇宙是各自独立的个体 原因是在任何时候一个结点对象都不能在超 过一个的虚拟宇宙中存在 同样的 在一个虚拟宇宙中的结点对象也不能在其 他的虚拟宇宙中可见或者与其他的对象结合 对于一个 Java3D 应用程序 必须定义一个虚拟宇宙才可以在这个 宇宙 中 显示三维图像 4 24 2 Java 3D 的坐标系统的坐标系统 默认情况下 Java3D 的坐标系统是右旋的 用方位语义学来解释就是 正 y 方向是本地重力的上 正 x 方向是水平的右 正 z 是这对着观察者的方向 默认的单位是米 双精度浮点 单精度浮点甚至是定点来表示的三维坐标都足够来表示和显 示丰富的 3D 场景 不幸的是 场景不是真实世界 更不必说整个宇宙了 如 果使用单精度坐标 有可能出现下列情景 离原点仅有一百公里的距离 被描绘得相当量子化 所能达到的最好效果 就是三分之一英寸 在实际应用中这样的精度比要求的粗糙的多 如果要缩小到一个很小的尺寸 例如表现集成电路的大小 甚至在离原点 很近的地方就会出现同坐标问题 为了支持一个大型的邻接虚拟宇宙 Java3D 选择了有 256 位的高分辨率 坐标 Java3D 高分辨率坐标由三个 256 位的定点数组成 分别表示 x y z 定 点被固定在第 128 位 并且值 1 0 被定义为真实的 1 米 这个坐标系统足够用 来描述一个超过几百万光年距离的宇宙 也可以定义小于一质子大小 小于一普 朗克长度 的对象 在 Java3D 中 高分辨率坐标仅仅用于将更加传统的浮点坐标系统嵌入更 高分辨率的底层系统 用这种方法 可以创造出一个具有任意大小和规模的在 视觉上无缝的虚拟宇宙 而且可以不必担心数字上的精度 参看表 4 1 一个 256 位的定点数还具有能够直接表示几乎任何的合理适当的单精度浮 点值 Java3D 用有符号的 两位补码的 256 位定点数字来表示高分标率坐标 尽管 Java3D 保持内部高分辨率坐标表示的不透明 但用户用有八个整型变量 的数组来表示 256 位的坐标 Java3D 把数组中从索引号由 0 到 7 分别看作高 分辨率坐标的从高到底位上的数 第 128 位上是二进制的小数点 也可以说在 索引号为 3 和 4 的整数之间 高分辨率坐标的 1 0 就是 1 米 如果是 小 的虚拟宇宙 类似于相对比例的几百米 在虚拟宇宙对象下的 0 0 0 0 0 0 点建立一个带有高分辨率坐标的 Locale 作为根节点就足够使用了 装入程序在装入过程中能自动构建结点 而在高分辨率坐标下的点不需要任何 外部文件的直接描述 大一些的虚拟宇宙期待被构建为有如同计算机文件那样的层次 这意味着 一个根宇宙要包含由外部文件引用的嵌入虚拟宇宙 就这样 文件引用的对象 用户指定的 Java3D 组或高分辨率结点 定义了被读入现存虚拟宇宙的数据的位 置 Java 3D 高分辨率坐标 2n Meters Units 87 29Universe 20 billion light years 69 68Galaxy 100000 light years 53 07Light year 43 43Solar system diameter 23 60Earth diameter 10 65Mile 9 97Kilometer 0 00Meter 19 93Micron 33 22Angstrom 115 57Planck length 表 4 1 Java 3D 高分辨率坐标 4 34 3 场景场景 Locale Locale 为了支持大型虚拟宇宙 Java3D 提出了 Locale 的概念 Locale 把高分辨 率坐标作为起源 把高分辨率坐标看作精确的定位 它在高分辨率坐标的影响 范围之内使用精度较低的浮点坐标指定对象的位置 一个 Locale 和与它结合的高分辨率坐标一起组成了在虚拟宇宙之下的一个 表现层 所有虚拟宇宙包含一个或多个高分辨率 Locale 而所有其他的对象都 是附加在一个 Locale 上的 在整个体系中 高分辨率坐标扮演的是上层的仅供 翻译的转换结点 例如 附加到一个特定 Locale 的所有对象的坐标都会与这个 Locale 位置的高分辨率坐标有关 图 4 2 图 4 2 高分辨率坐标指定场景 如果一个虚拟宇宙

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论