VRML/X3D中如何按照设定好的路径自动漫游或行走?且如果控制只走一遍?

VRML/X3D中如何按照设定好的路径自动漫游或行走?且如果控制只走一遍?

今天查了很多资料,总结出来这个算是比较简单的方案。

主要用到TimeSensor,TouchSensor,PositionInterpolator,OrientationInterpolator。

示例:

DEF pi PositionInterpolator {

key [ 0

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

]

keyValue [

9        1.5   2       ,

9        1.5   4       ,

20      1.5   15     ,

22      1.5   15     ,

23      1.5   16     ,

42      1.5   16     ,

43      1.5   17     ,

43      1.5   31     ,

42      1.5   32     ,

42      1.5   38     ,

41      1.5   39     ,

]

}

DEF   oi OrientationInterpolator {

key [ 0 0.05 0.25 0.3 0.35 0.55 0.6 0.75 0.8 0.95 1]

keyValue [

           0 1 0 3.14,

           0 1 0 4,

           0 1 0 -1.57,

           0 1 0 -1.57,

           0 1 0 -1.57,

           0 1 0 -2.8,

           0 1 0 3.14,

           0 1 0 3.14,

           0 1 0 3.14,

           0 1 0 3.14,

           0 1 0 3.14]

}

DEF ts TimeSensor {

cycleInterval 33

loop FALSE

}

DEF   tct TouchSensor       {}

ROUTE tct.touchTime       TO ts.startTime

ROUTE ts.fraction_changed TO pi.set_fraction

#ROUTE pi.value_changed TO tr.set_translation

ROUTE  pi.value_changed       TO CVP.set_position

ROUTE ts.fraction_changed TO oi.set_fraction

           ROUTE oi.value_changed TO CVP.set_orientation

当loop为FALSE时,需要自己启动TimeSensor,这时借助TouchSensor来传递ts的startTime来启动。

这样就每当点击场景中物体时,就会激发一次动画(即路径行走一遍)。

如果把loop设置为TRUE那就不需要TouchSensor来启动了,会自发启动并且一直循环下去。

转载于:https://www.cnblogs.com/BrainDeveloper/archive/2011/05/21/2052501.html

你可能感兴趣的:(VRML/X3D中如何按照设定好的路径自动漫游或行走?且如果控制只走一遍?)