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

本文介绍在VRML/X3D中利用TimeSensor, TouchSensor,PositionInterpolator及OrientationInterpolator实现设定路径自动漫游的方法。通过设置loop属性控制是否循环行走,使用TouchSensor触发单次行走。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值