【问题标题】:How to stop TimeSensor in VRML如何在 VRML 中停止 TimeSensor
【发布时间】:2014-09-05 16:28:52
【问题描述】:

我作为初学者正在学习 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。我该怎么做?

谢谢你帮助我!

【问题讨论】:

    标签: vrml


    【解决方案1】:

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

    逆向逻辑有效:

    修改DEF time TimeSensor { loop FALSE }避免不可控的无限循环。

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

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

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

    所以基本上你所要做的就是ROUTE 当传感器激活到TimeSensor set_startTimeeventIn 时生成的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2017-10-17
      • 2016-11-17
      • 2020-10-19
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多