0

我正在学习 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 并重复。我希望它只移动 1 次。球体停在坐标 3 3 0。我该怎么做?

感谢你们对我的帮助!

4

1 回答 1

1

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

反向逻辑有效:

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

将带有当前时间的事件 set_startTime发送TimeSensor到.

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

幸运的是,VRML 中的所有传感器都会生成事件,当它们激活时会输出一个时间值。

所以基本上你所要做的就是ROUTE当传感器eventInTimeSensor set_startTime.

于 2014-09-05T08:28:52.510 回答