如何在VRML中停止TimeSensor

时间:2013-11-21 20:11:32

标签: vrml

我正在学习VRML作为初学者。我有一个需要帮助的TimeSensor问题。这是我的源代码

DEF time TimeSensor
{
loop TRUE
cycleInterval 2
}
DEF C11 Transform
{
translation -3 0 0
children
[
       Shape
       {
        geometry Sphere
        {
          radius 0.5
        }
        appearance Appearance
        {
          material Material
          {
             diffuseColor 0 0 0
             specularColor .29 .3 .29
             shininess .08
             ambientIntensity 0
             transparency 0.0
          } 
        }
       }

     DEF moveC11 PositionInterpolator
     {
         key [0 1]
         keyValue [-3 0 0,3 3 0]
     }
]
}
ROUTE time.fraction_changed TO moveC11.set_fraction
ROUTE moveC11.value_changed TO C11.translation

当我在浏览器中查看时,球体从坐标-3 0 0移动到3 3 0并重复。我希望它只移动一次。球体停在坐标3 3 0处。我该怎么做?

感谢您帮助我!

1 个答案:

答案 0 :(得分:1)

TimeSensor的VRML概念不是停止无限循环

反向逻辑有效:

修改 DEF time TimeSensor { loop FALSE }以避免无法控制的无限循环。

发送事件set_startTime,当前时间为TimeSensor

这种方法的问题可能是如何计算自1970-01-01 00:00:00以来的绝对当前时间(以秒为单位)。

幸运的是,VRML中的所有传感器都会生成在变为活动时输出时间值的事件

因此,基本上您所要做的就是ROUTE传感器在eventIn的{​​{1}}处于活动状态时生成的事件。