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

[Java3D] Java3D探奇(七)——行为和插入器(interpolator)

[复制链接]

1026

主题

1

听众

6011

积分

高级设计师

Rank: 6Rank: 6

纳金币
5996
精华
1

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

跳转到指定楼层
楼主
发表于 2011-8-5 11:50:16 |只看该作者 |倒序浏览
Behavior 类



行为允许您使场景元素动起来并同场景图交互。Behavior 类为您的代码提供了一种修改场景图的机制。Behavior 位于场景图中并由刺激,例如鼠标运动,触发。

和光一样,行为有界限和能力位,并且必须被附加到场景图上。因此,如果您的行为没有起作用,请确保界限足够大,以便启用了行为并将行为附加到场景图中。

插入器提供了一种将简单动画添加到场景图中的方法。插入器玩起来可以很有趣,并且我们将在我们的示例中使用它们。但是,首先我们将看一些 Behavior 处理的基本内容。



唤醒调用



通过 WakeupCriterion 指定触发行为的条件。唤醒条件的示例包括按键、鼠标事件、定时器以及已播放的帧的数目。在最初创建行为以及每次处理行为消息时指定条件。OrbitBehavior 是一个由鼠标事件唤醒的 Behavior 示例。

通过使用 WakeupOnElapsedTime,可以改变 TranformGroup 的 Transform3D 来使得场景图的一部分动起来。


processStimulus() 方法


当唤醒事件发生时,将调用行为的 processStimulus() 方法。您可以在 processStimulus() 方法中做任何事情 ― 可以从场景中添加或删除对象,更改变换,更改对象的外观,检测两个对象何时相撞,或者您需要做的任何其它事。

请记住无论您需要在场景图中更改什么事物,都需要设置相关的能力位。例如,要更改 processStimulus() 方法中的 TransformGroup 节点,您需要设置 TransformGroup.ALLOW_TRANSFORM_WRITE 位。



插入器



插入器是内置的,它可以帮助您将简单动画添加到场景图中。它们在您所定义的值的范围内平滑地移动或插入。

随Java 3D SDK 提供的 GearBox 示例使用几个旋转插入器来使下图所示的齿轮动起来。







每一个齿轮都对应一个每隔一定时间就会被重复触发的 RotationInterpolator。RotationInterpolator 对包含齿轮几何对象的 TransformGroup 应用旋转,从而引起该齿轮转动。



全都在计时



Alpha 对象生成一个 0.0 与 1.0 之间的值作为计时之用。(请注意Alpha 对象同顶点的 alpha 值无关,后者指定透明度。)

插入器使用 Alpha 对象来实施它们对场景图的更改。Alpha 对象的值可以随时间而改变,这取决于您如何对其编程。我们的齿轮以匀速连续不停地旋转。每当 Alpha 对象触发 RotationInterpolator 时,RotationInterpolator 使用生成的 alpha 值来计算新的旋转(即,使齿轮转动。)通过使用下面的代码,可以创建一个以匀速无限循环的 Alpha:



Alpha(int loopCount, long speed)



有大量的选项用于更改 Alpha 对象的行为。您可以对其加速,停一段时间,然后慢慢地使其停下来。


旋转示例



创建一个 Sphere ,然后将地图材质应用于其上。(地球看起来有些模糊,因为用作材质的地图不详尽。)我在 RotationInterpolator 中设置了一个 TransformGroup,然后将用材质处理过的 Sphere 附加到 TransformGroup 之下。当 Interpolator 改变 TransformGroup 时,地球开始旋转。因为 Interpolator 在渲染循环开始之后更改了场景图中的值,所以我们必须设置一个能力位:



spinGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE)



在这一示例中,我将 Alpha 对象配置成加速顺时针旋转,然后反过来逆时针旋转。







颜色插入器


对于ColorInterp.java,我已经添加了代码以将颜色插入器附加到旋转的地球上。它不影响 TransformGroup,而是影响 Material 对象中的散射颜色。因为在渲染循环开始之后,Material 对象将会变化,所以我设置了其能力位。



material.setCapability(Material.ALLOW_COMPONENT_WRITE);

Alpha colorAlpha = new Alpha(-1, 2000);

Color3f endColor = new Color3f(1.0f,1.0f,1.0f);

Color3f startColor = new Color3f(0.0f,0.0f,0.0f);

ColorInterpolator colorInterp =

new ColorInterpolator(colorAlpha, mat,startColor,endColor);

colorInterp.setSchedulingBounds(bounds);
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

沙发
发表于 2011-8-10 17:01:21 |只看该作者
我也来支持下
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

板凳
发表于 2012-1-19 23:07:23 |只看该作者
年年岁岁,岁岁年年,春去春来,转眼间又过了一年,小年到,祝福到,愿你在新的一年事业节节高,生活红火火,拜个早年,提前祝你新年好!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

地板
发表于 2012-1-21 23:33:03 |只看该作者
年年岁岁,岁岁年年,春去春来,转眼间又过了一年,小年到,祝福到,愿你在新的一年事业节节高,生活红火火,拜个早年,提前祝你新年好!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

5#
发表于 2012-2-24 23:30:04 |只看该作者
百度的叫度娘,网易的叫易娘,新浪内部还在为是叫新娘还是浪娘而争论不休!……不管你们是企鹅的额娘,豆瓣的伴娘,还是华为的伪娘,都要记得,淘宝才是你们的亲娘啊!亲!!
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

6#
发表于 2012-4-6 23:33:33 |只看该作者
我来顶个
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

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

7#
发表于 2012-5-5 23:22:21 |只看该作者
我来顶个
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

8#
发表于 2012-6-16 23:26:08 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

9#
发表于 2012-6-23 23:22:31 |只看该作者
顶!学习了!阅!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

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

10#
发表于 2012-6-25 23:26:49 |只看该作者
先垫一块,再说鸟
回复

使用道具 举报

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

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

GMT+8, 2024-11-28 02:58 , Processed in 0.679833 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部