12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 9393|回复: 12
打印 上一主题 下一主题

[Java3D] Java3D探奇(二)——场景图细节

[复制链接]

1026

主题

1

听众

6011

积分

高级设计师

Rank: 6Rank: 6

纳金币
5996
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-8-4 19:34:07 |只看该作者 |倒序浏览

   
        
            
        
        
            场景图树
            
            Java 3D 场景图是一棵由两个部分或分支组成的树,这两个部分是:内容(content)和视图(view)。视图分支含有复杂 Java 3D 视图模型的所有细节,它还定义视点。好的事情是,对于大多数简单的应用我们都可以使用统一实用类(尤其是“正如其名称所暗示”的 SimpleUniverse 类)来处理视图管理的大多数复杂任务。
            
            内容分支描述了您将在场景中看到什么 。它包含所有图形对象(球体、立方体或更复杂的几何对象)、用来移动它们的转换、光、行为、组节点和烟雾。我们的大多数工作将集中在内容分支。
            
            

            组节点
            
            
            Group 对象组成了场景图内容分支的内部节点 。您可以使用 Group 节点来将您的场景图组织成相互关联的部分。每个 Group 节点包含一些子节点,在处理该节点时将渲染这些子节点。Switch 节点和 TransformGroup 节点是特殊的 Group 节点,它允许您对场景图施加进一步的控制。
            
            TransformGroup 节点在处理期间对它们的子节点应用 3D 变换(诸如平移、缩放或旋转),这使得您可以移动、旋转或缩放整个场景图。
            
            Switch 节点限制在渲染期间访问哪些子节点,使您可以控制渲染场景图的哪些部分。以 Quake 为例,您可以将所有不同的武器分组到一个 Switch 节点下面,使得您可以只渲染当前使用的武器。
            
            

            能力位(Capability bits)
            
            
            Java 3D 将会通过尽可能地预先计算值来优化场景图的渲染。如果想在渲染场景时更改场景的某些方面,则必须使用能力位来指定以后想更改的数据。例如,使一个对象动起来需要更改影响该对象的变换。为了做到这一点,需要在 TransformGroup 中启用 ALLOW_TRANSFORM_WRITE 位,如下所示:
            
            

            suzySpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
            
            

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

            
            
            
            
            。但是需要提醒的是,它确实很乏味。
            
            UglyCube 只显示一个立方体。它摘自 Java 3D SDK 所带的示例 HelloUniverse 。在该样本中,创建了一个 Canvas3D 以在其上绘图,并创建了一个 SimpleUniverse 来为您处理所有的视图管理工作。内容分支的顶部总是 BranchGroup。我们将 cube 作为子对象添加并交给 BranchGroup 以便渲染。
            
            当将 BranchGroup 添加到 SimpleUniverse 之后,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);
            
            

            看,我说过它很乏味吧。
            
            场景图要点
            
            SimpleUniverse 创建场景图的视图分支。

            Group 节点将分层结构加到场景图上。

            能力位允许访问场景图节点中的数据。
            
        
   
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-1-25 23:26:28 |只看该作者
新年的风,吹散你的阴霾;新年的雨,冲刷你的无奈;新年的雾,锁定你的失败;新年的日,照耀你的期待。新年到来,幸福怀揣,新年快乐,响彻天外!
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-2-13 23:31:37 |只看该作者
灌水。。。
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-3-21 23:20:52 |只看该作者
加精、加亮滴铁子,尤其要多丁页丁页
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-4-3 13:14:13 |只看该作者
好`我顶``顶顶
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

6#
发表于 2012-4-11 23:24:33 |只看该作者
再次路过……
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-5-8 23:19:09 |只看该作者
提醒猪猪,千万不能让你看见
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-5-20 23:25:31 |只看该作者
凡系斑竹滴话要听;凡系朋友滴帖要顶
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-8-20 23:30:04 |只看该作者
加精、加亮滴铁子,尤其要多丁页丁页
回复

使用道具 举报

1274

主题

1

听众

4万

积分

禁止发言

纳金币
43676
精华
4
10#
发表于 2012-11-1 09:46:58 |只看该作者
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-23 19:58 , Processed in 0.377721 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部