`
qianjiangbing
  • 浏览: 87544 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java3D学习(二)

阅读更多
  基本组件的功能用途
总的来讲,Java3D里绘制场景图就是相当于绘制一个树状图,由跟节点画起,直到画出数的叶子。
(1)超结构:在Java3D里超类结构对象有VirtualUniverse类和Local类对象,一个Java3D程序只有一个VirtualUniverse对象,VirtualUniverse对象表示任何Java3D程序都要用到的整个3D空间。VirtualUniverse对象用三个高精度的256位定点数来表示坐标。VirtualUniverse对象用Locale类对象表示一个较小的局部空间,每个VirtualUniverse可以包含一个或多个Local对象,每个Locale对象可以附属有分支图,当一个分支图被附属到一个Locale时,Java3D绘制引擎就会开始绘制此分支图,即活动分支图。
(2)Node:节点。Node类是绘制场景图中的主体树结构的节点,包括Group节点和Leaf节点对象。
Group节点是场景图树结构的主要构建模块,包含有BranchGroup节点和TransformGroup节点等六个节点对象。Group节点的子节点可以是Leaf节点,也可以是一个Gruop节点。需要注意的是每个节点只有一个父节点,正如一个人只有一个父亲一样。从根节点到每个叶节点都只有一条唯一路径。下面的方法可以给父节点添加一个子节点:
void addChild(Node child);//添加子节点
void insertChild(Node child,int index);//根据索引添加子节点
可以通过索引访问某个子节点:
Node getChild(int index);
void setChild(Node Child,int index);
其他方法:
Enumeration getAllChildren();
void remove Child (Node child);//删除某个节点
void remove Child (int index);//根据索引删除节点
void removeAllChildren();//删除所有节点
每个BranchGroup节点Java3D场景图的某一个分支的根节点,只有BranchGroup对象才能直接附属到一个Local对象上,所以每个场景图至少有一个BranchGroup节点。BranchGroup节点的作用是把其他节点整合在一起,仅此而已。
Leaf类是Node类的子类,是抽象类。通常叶节点表示的是各种集合对象、声音或场景中其他图形对象。叶节点没有子节点,常用也节点对象一般有Shape3D(图形)、ViewPlatform、Background(背景)、Light(灯光)等对象。Shape3D类叶节点,表示各种需要绘制的图形对象。通过Shape3D对象定义图形的几何外观属性,可以设置形状大小和材质颜色。Ligth对象定义绘图场景中的光源。ViewPlatform对象节点表示观察者在场景图中的位置。BackGround类可定义场景的背景颜色,一般设置为白色。
(3)节点组件。一个场景的结构是用组节点和叶节点来定义的。但这些节点的属性则由节点组件类(NodeComponent)定义。可以定义几何特征、颜色、材质、纹理等特性。
Geometry类:每个Shape3D叶节点都依赖一个Geometry类对象,通过Geometry类及其子类来定义图形对象的几何属性。
Appearance类:提供形体的外观属性,如颜色、纹理,Appearance是NodeComponent(节点组件)的子类,它不是场景图的一部分,每个Appearance对象可以被多个Shape3D对象所用。
它所引用的其他对象有ColoringAttributes、PointAttributes、Material、Texture、Alpha、Font3D等。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics