我正在学习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处。我该怎么做?
感谢您帮助我!
答案 0 :(得分:1)
反向逻辑有效:
修改 DEF time TimeSensor { loop FALSE }
以避免无法控制的无限循环。
发送事件set_startTime,当前时间为TimeSensor
。
这种方法的问题可能是如何计算自1970-01-01 00:00:00以来的绝对当前时间(以秒为单位)。
幸运的是,VRML中的所有传感器都会生成在变为活动时输出时间值的事件。
因此,基本上您所要做的就是ROUTE
传感器在eventIn
的{{1}}处于活动状态时生成的事件。