很长时间没有听到关于Java3D的消息了,好像Sun已经放弃了Java3D一样,不过Java3D作为一门纯正的面向对象的3D技术,还是很值得我们学习和使用的。不过话说回来Java3D开发的真是比较粗糙。下面介绍些Java3D常用的类吧。
Canvas3D 类
Canvas3D 类继承自Abstract Windowing Toolkit (AWT)类的Canvas类.在场景图的视图分支图中,至少要引用一个 Canvas3D对象(注:有可能存在多个Canvas3D对象,为了使演示简单,在使用SimpleUniverse类时,在程序中仅有 Canvas3D类的一个实例)。关于Canvas类更多的信息,请参考AWT。附录B中提供了一系列参考。
Canvas3D 类的构造函数
Canvas3D(GraphicsConfiguration graphicsconfiguration) 构造并初始化一个新的Canvas3D对象,Java 3D可以在给定的GraphicsConfiguration对象条件下渲染这个对象。这是 AWT Canvas类的扩展的类。关于GraphicsConfiguration 对象的更多信息请参考Java 2D规范。这也是JDK 1.2 AWT的一部分。
Transform3D 类
Transform3D 对象用于进行3D几何形变比于平移和旋转。这些对象一般仅仅用于创建一个TransformGroup对象。首先, Transform3D对象可能基于一些Transform3D对象的组合而创建,然後就用这个Transform3D来构建一个] TransformGroup对象。
Transform3D默认的构造函数
一个通常的变换对象就表示为一个4x4双精度浮点矩阵。 这种数学表示是以行为主的。一个Transform3D对象不是在场景图中用到的,而是用于指定TransformGroup对象的图形变换的。
Transform3D()
构造一个Transform3D 对象,默认使用单位矩阵 (不顾虑在变换)。
一个Transform3D对象能表示平移,旋转,缩放乃至这些变换的组合。当指定一个旋转变换时,角度用弧度来表示。一个全旋转(圆)的弧度是2 PI。设置角度的一个方法是利用常量Math.PI,另外一种算途径是直接设置,这里说一下常用角度的弧度:45度是0.785, 90度是1.57, 而180 度是3.14(约为PI)。
Transform3D 类的方法 (列出部分)
Transform3D 对象用于表示几何形变,比如旋转,平移和缩放。 Transform3D是没在任何场景图中直接使用到的少数几个类之一。Transform3D对象所定义的变换是用于创建场景图中的 TransformGroup 对象的。
void rotX(double angle)设置图形X轴方向沿逆时针对象按指定的角度旋转。角度值用弧度指定。
void rotY(double angle)设置图形Y轴方向沿逆时针对象按指定的角度旋转。角度值用弧度指定。
void rotZ(double angle)设置图形Z轴方向沿逆时针对象按指定的角度旋转。角度值用弧度指定。
void set(Vector3f translate)利用传入的 Vector3f型的参数设置图形的平移值,如果这个传入的形变是单位矩阵,则在其它时候设置真正的形变值。
Transform3D对象中所包含的形变信息在 TransformGroup对象创建时或者是调用了setTransform()方法变复制到 TransformGroup中。
TransformGroup setTransform() 方法
void setTransform(Transform3D t1)利用传入的形变参数设置TransformGroup对象的形变值。
TransformGroup 类
作为Group类的子类,TransformGroup类的实例用于创建场景图并且都其子结点的集合。 TransformGroup对象存储了几何形变比如平移和旋转。一般利用不在场景图中的Transform3D对象来构造某一形变。 TransformGroup对象保存了场景图中的形变信息。
TransformGroup 构造函数
TransformGroup()利用单位矩阵来构造并且初始化一个TransformGroup对象。(不发生形变)
TransformGroup(Transform3D t1)通过传入Transform3D对象参数来构造并且初始化一个TransformGroup 对象。
BranchGroup 类
这种类型的对象是用于构建建场景图的, BranchGroup的实例是子图的根结点, BranchGroup对象也是唯一能成为Locale对象的孩子对象的对象。BranchGroup对象可以有多个孩子, BranchGroup对象的孩子对象可以是Group和Leaf对象。
BranchGroup 默认构造函数
BranchGroup() BranchGroup的实例,作为场景图分支的根结点,BranchGroup 对象也是能唯一插入到Locale对象中的对象。
Vector3f 类
Vector3f 是包javax.vecmath中的数学类,用于用浮点数来设定一个矢量。Vector对象常常用于设置图形开变。
Vector3f对象也不直接在场景图中用到。常用于指定形变,表现,法向量以及一些其它的应用。
Vector3f 构造函数
一个三个元素的矢量。其三个元素用单精度浮点数表示X,Y,Z坐标。
Vector3f()用(0,0,0)构造并初始化一个 Vector3f。Vector3f(float x, float y, float z)指定x,y,z轴坐标来构造并初始经一个Vector3f。
ColorCube类
ColorCube是包com.sun.j3d.utils.geometry中的工具类。定义了一个立方体图形及其各面的不同的颜色,并使位置处于初始位置的中间。默认的 ColorCube对象是一个长宽高均为2米的立方体。如果一个处于原始位置未经旋转的立方体(如HelloJava3Da 示例中的),在名义上的视图位置中,红色面是可见的,其它面的颜色分别是:蓝色, 洋红,黄色,绿色和青色。
ColorCube 构造函数
包: com.sun.j3d.utils.geometry
一个ColorCube 是一个简单的各面均有不同颜色的可视的立方体。
ColorCube 扩展了Shape3D 类;因此,它是叶子结点。 ColorCube可以很容易地放置于虚拟世界中。
ColorCube()以默认的大小构造一个有色立方体。默认地,每一个角到相应坐标的中心都是1米,因而,此立方体处于视图正中心,长宽高都是2米。ColorCube(double cale)构造一个有色立方体,并作指定参数的缩放。默认每一条边都是2米,而此构造函数则构造一个顶点在(scale, scale,scale) 和(-scale,-scale, -scale)的ColorCube。
VirtualUniverse类
Locale, Group, 和 Leaf 类处于类层次中的这部分。除了VirtualUniverse 和Locale对象,场景图中馀下的部分由SceneGraphObject 对象构成。SceneGraphObject几乎是Java3D类中每一个核心类和工具类的超类 [译者注:超类即上层类,可以是父类或者祖先类。SceneGraphObject有两个子类:Node类NodeComponent.类,Node子类提供了场景图中的绝大部分对象,一个Node对象可以是一个Group,也可是一个Leaf结点对象。Group和Leaf是一系列类的超类。这里可以一目了然地看到Node类的子类,它有两个子类,而 NodeComponent 类,在这些背景知识介绍之後,在Java3D程序的构建中会解释到。
Node 类
Node 是Group和Leaf类的一个抽象超类. Node 为其子类定义了一些公共的重要的方法。某些方法的信息会在更多的背景知识介绍了之後提到。Node 的子类构成了子图。
Group 类
Group 类是用于在虚拟世界中指定可视对象位置和方向的类的超类。Group类的两个下层类是 BranchGroup是 TransformGroup. 在场景图的图形表现中,Group标记 (用圆表示)。而其中BranchGroups注为GB, TransformGroups 注为TG,等等。具体例子请见图1-2。
Leaf 类
Leaf是用于指定虚拟世界中可视对象的形状,声音和,动作的类的超类。Leaf的一些子类如Shape3D, Light, Behavior, 和 Sound. 这些对象不能有自己的孩子,并且可能引用NodeComponents对象。
NodeComponent 类
是用于指定Shape3D (Leaf)结点对象的图形,表面,纹理和材质属性的类的超类。NodeComponents 不是场景图的组成部分,但是为其所引用。一个NodeComponent 对象可能为多个Shape3D对象所引用(译者注:就是比如,同一个材质对象可以赋予多个shape3D对象)。
分享到:
相关推荐
教程中提到了Java 3D编程的入门,这说明即使读者没有三维图形或Java 3D的知识背景,也可以从本教程中学习,但若拥有Java编程语言的基本理解会更有帮助。在三维编程方面,编程可能因为涉及大量专业术语和数学内容而...
这可能涉及到编辑系统的PATH变量,将Java3D的bin目录加入其中,并在类路径(CLASSPATH)中包含Java3D的核心库JAR文件,如j3dcore.jar、j3dutils.jar等。此外,对于某些特定的应用,可能还需要配置其他环境变量,如...
Java3D提供了丰富的类和接口,如`javax.media.j3d.Node`用于构建3D场景图,`javax.media.j3d.SceneGraphObject`作为场景图的基本元素,以及`javax.media.j3d.View`定义了观察3D世界的视角。通过这些API,开发者可以...
Java3D通过简单的对象模型和面向对象的编程接口,让开发者能够更容易地处理3D几何、光照、纹理和动画。 在这个"java3D魔方"项目中,"MoFang-2006-9-19智能版源代码.rar"可能是核心代码资源,包含了实现魔方旋转逻辑...
在“java3d-1_4_0-doc”这个压缩包中,我们期望找到的是Java 3D API的完整文档,这份文档通常包含了详细的类和方法说明,示例代码以及如何开始使用Java 3D API的指南。以下是这个API的一些关键知识点: 1. **基本...
描述中提到的"有说明哦"表明可能包含了一些教程或者指南,这对于初学者理解如何在Java3D中创建和操作3D人物模型是非常宝贵的资源。同时,提供了一个QQ群号,意味着可能有一个社区或者支持小组,开发者可以在那里获取...
Java 项目,包含:项目源码、数据库脚本、部署说明等,前后端代码都在里面 。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 一. 技术组成 技术栈:Java,使用 jdk1.8 即可 ...
本资料包是为初学者准备的一套完整的Java3D学习资源,包含运行环境、Java3D的API文档、规范说明以及PDF教程,旨在帮助初学者快速入门。 首先,"3D运行环境"是指Java3D所需的运行时环境,这通常包括Java虚拟机(JVM...
Java3D官方教程第一章作为整个教程的引入部分,主要介绍了Java3D的定义、API构成、场景图的构建、编程基础、术语和一个简单的编程示例。通过这一章的学习,读者将对Java3D有一个基础的认识,并能够进行简单的场景图...
而Java3D则是一个更为强大的库,专为构建复杂的3D场景而设计,它支持OpenGL标准,提供了丰富的3D图形功能。 在这个3D爱心效果的实现中,可能用到了以下技术: 1. **旋转和平移**:通过改变物体的坐标或视角位置,...
JAVA3D的网络三维技术的设计与实现(源代码+论文+说明) 基于Java3D的网络三维技术的设计与实现 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新...
开发者可以通过组合简单的几何对象来构建复杂的3D模型,同时,Java3D还提供了强大的交互性,允许用户与3D场景进行互动。 在"网络三维技术"的上下文中,这意味着我们不仅要在本地环境中展示3D图形,还需要在网络中...
- **第5章:**提供关于Java3D场景图节点的参考资料,包括使用说明和示例。 - **第6章:**解释Java3D场景图渲染模型的各个组成部分,并指导读者如何选择合适的虚拟宇宙配置。 - **第7章:**退一步审视数据模型,探讨...
首先,JAVA3D是一个基于OpenGL的Java API,它提供了丰富的接口和类来构建和操作3D场景。通过JAVA3D,开发者可以利用Java语言的跨平台特性,开发出能够在各种操作系统上运行的3D应用。此技术的核心在于它能够使开发者...