纳金网

标题: Java3D基础(九) [打印本页]

作者: robert    时间: 2012-2-13 09:04
标题: Java3D基础(九)
使用Behavior 类可以使场景动起来并实现交互。Behavior 类实际上提供了一种修改场景图的机制,Behavior 类由刺激(例如鼠标)触发。Behavior 类也有界限和能力位,下面来看一些 Behavior 处理的基本内容。

WakeupCriterion


可以指定触发Behavior 类的条件,包括按键、鼠标事件、定时器或是已播放的帧的数目。可以在最初创建或每次处理Behavior 类的消息时指定触发条件。OrbitBehavior 是一个由鼠标事件唤醒的 Behavior 范例。而通过使用 WakeupOnElapsedTime,可以改变 TranformGroup 的 Transform3D 来使得场景图的一部分动起来。


processStimulus()


当唤醒事件发生时,将会调用Behavior 类的 processStimulus()。程序员可以在 processStimulus()中添加或删除对象,更改变换,更改对象的外观,检测两个对象何时相撞等。记住无论在场景图中做任何更改,都需要设置相关的能力位。例如,要更改 processStimulus()中的 TransformGroup 节点,则需要设置 TransformGroup.ALLOW_TRANSFORM_WRITE 位。


插入器是内置的,它可以帮助您将简单动画添加到场景图中。它们在您所定义的值的范围内平滑地移动或插入。随Java 3D SDK 提供的 GearBox 示例中使用旋转插入器RotationInterpolator来使齿轮动起来。


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


插入器使用 Alpha 对象来实施它们对场景图的更改,Alpha 对象的值可以随时间而改变。每当 Alpha 对象触发 RotationInterpolator 时,RotationInterpolator 使用生成的 alpha 值来计算新的旋转。下面的代码创建了一个以匀速无限循环的 Alpha:


Alpha(int loopCount, long speed)
作者: robert    时间: 2012-2-13 10:44

作者: 艳阳天    时间: 2012-2-13 13:14
有意思
作者: 3D小子    时间: 2012-2-13 14:18
学飞了
作者: 艳阳天    时间: 2012-2-13 14:50
okok
作者: 3D小子    时间: 2012-2-14 07:35
顶顶
作者: 3D小子    时间: 2012-2-14 13:02
不错的
作者: 艾朵儿    时间: 2012-2-14 16:22

作者: robert    时间: 2012-2-15 09:20
jsjs
作者: robert    时间: 2012-4-4 13:12





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