∥颐墙幼派弦黄绦致鬯婊シ诺奈锾澹热缢的憧梢陨杓颇愕某【埃庇没恳淮谓胧倍伎梢运婊シ乓恍┎煌谋尘耙衾郑庖桓鲈擞糜胛颐窃忍致鄣奈锾宓乃婊硕绯鲆徽蓿徽饫镂颐羌尤肓藄ound结点和audioclip结点。
首先来分析一下这个场景,当用户进入场景后,开始随机播放音乐,用户进入场景这是一次性的动作,这与连续运动不同它是非连续的,同时在我们需要先将音乐预设在场景中,由于篇幅有限,我们在这里只给出几步重要的步骤。
sound {
maxfront 100
maxback 5
source def agent_voice1 audioclip {
loop false
url "sound.wav"
}
}
这是定义了一个场景中的sound,声音文件包括在sound.wav里,注意它loop为false,就是说声音是否播放需要通过agent_voice来触发。什么时间通过什么方式进行agent_voicede的触发,同时这里又有一个判断用户是否在场景中的问题,需要对用户进行fine-grined跟踪,需要用到我们下面谈到的proximitysensor结点,向大家介绍完fine-grined跟踪方式,大家自然知道随机播放声音的方法了。
首先说明proximitysensor结点是产生报告用户在场景中的位置和变化的方位,进行用户是否进入场景的判断只是它的一个用法,千万不要认为它只能进行判断,不清楚的地方大家可以看看结点指南中关于它的介绍。在proximitysensor结点中,关键参数是size字段,它定义了传感器的操作范围,只要在范围中,该结点就能判断用户的位置,一旦用户进入了范围,isactive字段变为真,同时在entertime中产生一个进入时间,position_changed和orientation_changed字段将随用户移动产生事件。在这里用到的主要是isactive字段,通过它来触发agent_voice事件,播放音乐。将与java程序产生更为复杂的动作,下面是rodger lea教授在他的构建vrml虚拟城市中,用到的一小段自动门程序,很具有代表性,看过后我们再向大家解释程序过程。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器