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

六月ゝ 毕业季﹏ 提交于 2019-11-26 20:40:47

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!