纳金网

标题: Java 3D基础(三) [打印本页]

作者: robert    时间: 2011-12-21 08:45
标题: Java 3D基础(三)

Java 3D 的场景图是由两个分支组成的树状图,分别是:内容(content)和视图(view)。
视图分支中含有复杂的 Java 3D 所要描述视图模型的所有细节,还包括定义视点,幸好在大多数简单应用下可以用Java 3D中提供的统一实用类来处理这些视图管理方面的工作。
内容分支描述了在场景中你将看到什么,它包含所有图形对象的几何形状(球体、立方体等)、移动它们所用的转换、光亮度、它的行为、组节点和烟雾等,大多数需要程序员做的工作集中在内容分支。

组(Group)节点和能力位(Capability bits)
程序员可以使用 Group 节点来把场景图组织成相互关联的部分,每个 Group 节点还可包含一些子节点,在处理这些节点时将同时渲染这些子节点。
其中,Switch 节点和 TransformGroup 节点比较特殊,程序员可以通过它们对场景图实施进一步的控制。编译器在处理TransformGroup 节点时会同时对其子节点应用 3D 变换(如平移、缩放或旋转),这使得程序员可以移动、旋转或缩放整个场景图。而Switch 节点会限制在渲染期间访问的子节点,使程序员可以控制渲染场景图某个具体部分。(纳金网注:以3D游戏 Quake 为例,如果将不同武器分组到一个 Switch 节点下,就可以实现只渲染当前的武器)

Java 3D 会尽可能地通过预先计算来优化渲染过程,如果想在渲染时更改场景,则必须先用能力位指定想更改的数据。例如,如果使一个对象动起来时要更改影响该对象的变换,则要先在 TransformGroup 中开启 ALLOW_TRANSFORM_WRITE 位,代码如下(纳金网注:能力位允许访问场景图节点中的数据):

suzySpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

场景图在附加到空间(universe)之前,可以对它做任意更改。然而,在 Java 3D 开始渲染后,就只能对适当设置了能力位的对象进行更改。

请看下面这段代码,它只显示一个立方体:
Canvas3D c = new Canvas3D(
SimpleUniverse.getPreferredConfiguration());
setLayout(new BorderLayout());
add(“Center”, canvas);
BranchGroup scene = new BranchGroup();
scene.addChild(new ColorCube(0.4));
SimpleUniverse u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);

范例中首先创建一个 Canvas3D 以在其上绘图,同时创建一个 SimpleUniverse 分支来处理所有的与视图管理工作相关的参数。注意内容分支的顶部总是 BranchGroup,将 ClolrCube 作为子对象添加给 BranchGroup 渲染。当将 BranchGroup 添加到 SimpleUniverse 之后,Java 3D 将不断循环地进行渲染。

作者: 艳阳天    时间: 2011-12-21 14:21
看样子还要学点java才行哈
作者: 3D小子    时间: 2011-12-21 14:38
学点java还是有用的
作者: robert    时间: 2012-3-29 13:05
hk
作者: LUCKstar    时间: 2012-3-29 19:17

作者: Tomoya    时间: 2012-3-29 19:58
  
作者: 奇    时间: 2012-6-21 23:25
先顶上去,偶要高亮加精鸟!

作者: 菜刀吻电线    时间: 2012-7-10 23:22
“再次路过……”我造一个-----特别路过

作者: C.R.CAN    时间: 2012-7-28 23:24
有意思!学习了!

作者: C.R.CAN    时间: 2012-9-21 23:28
“再次路过……”我造一个-----特别路过

作者: 菜刀吻电线    时间: 2012-10-8 23:27
已阵亡的 蝶 随 风 舞 说过  偶尔按一下 CTRL A 会发现 世界还有另一面

作者: 菜刀吻电线    时间: 2012-11-8 23:28
楼主收集的可真全哦

作者: 菜刀吻电线    时间: 2012-11-11 23:23
再看一看,再顶楼主

作者: 晃晃    时间: 2012-12-2 23:25
不错 非常经典  实用





欢迎光临 纳金网 (http://wwww.narkii.com/club/) Powered by Discuz! X2.5