Graphics 版 (精华区)

发信人: leonado (##小:妖:发:呆:勒##), 信区: Graphics
标  题: 虚拟现实之高级技巧(十一)
发信站: 哈工大紫丁香 (2001年01月07日19:27:29 星期天), 转信

使用Switch结点将使场景具有更多的灵活性和真实感,它的目的在于容许附加多个子结
点,并容许同时运行这些结点。当然也可以使用TouchScense结点同时定义多条路线,但
是这样会使程序非常繁杂,在多个形状变化时,几乎没有人使用这种方法。
  在场景中有一个waiter,当用户接近点击他,waiter做出一个向用户问候的姿式。
完成场景中这样一个设计,首先在三维软件中做出waiter的两个姿式,一个是用户没有
点击时的姿式Detail保存为Detail.wrl,和一个waiter问候的姿式Hello保存为Hello.w
rl。当然理论上Switch结点是支持无限任意姿式的,只需要你预先定义几种模型,让Sw
itch结点选择在什么时候使用什么样的姿式就行了,只是在这个例子中,我们使用了两
个姿式罢了。我们将两个姿式模型定义在一个Switch结点中,在用户点击之后,通过Sc
ript结点的setAgentImage字段传递给Java程序,再由Java程序决定用什么姿式模型,然
后再将选择的结果返回到Script结点的WhichChioce中,告之Switch结点要使用的模型显
示出来。
#VRML V2.0 utf8
Transform{
children[
DEF AGENT_SWITCH Switch{
whichChoice 0
choice[
# normal posture
Inline{url "Detailed.wrl"},
# hello posture
Inline{url "Hello.wrl"}
]
},
DEF AGENT_TOUCH TouchSensor{}
]
}
DEF AGENT_SCRIPT Script{
url "SwitchAgent.class"
eventIn SFTime touchTime
eventOut SFInt32 setAgentImage
}
ROUTE AGENT_TOUCH.touchTime TO AGENT_SCRIPT.touchTime
ROUTE AGENT_SCRIPT.setAgentImage TO AGENT_SWITCH.set_whichChoice

--
美女说:“小妖,你很可爱丫...”
小妖刚要把那段“我已经尽可能的掩饰我的锋芒,奈何还是被慧眼人看出”云云背出来...
美女却扬长而去...>Q<

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.141]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.393毫秒