VRML基础教程资料.pptVIP

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第*页增加交互能力现在松开左钮,可以看到场景恢复到原来方位,这种功能称为视点回跳,其原因是松开左钮后接触检测器向view2发送了一个“FASLE”事件,这样view2的当前视点地位被解除,原来的视点成为即当前视点,详细说明可参考VRML标准中对视点节点的专门论述。如果我们不想视点回跳,就想停留在view2视点,那该怎么办呢?这种非系统缺省功能要自己来定义。第*页利用脚本编写自定义行为在VRML中,利用Script节点(脚本节点)定义用户自定义行为,所谓定义就是用脚本描述语言(ScriptingLanguage)编写脚本的过程。VRML97支持的脚本描述语言目前有两种:Java和EMCAScript(这是JavaScript标准化后的名称),关于这两种语言本身,请参考相应的参考资料,VRML97标准中定义了它们和VRML的接口方法。应该注意的是:VRML是基于节点的语言,所以脚本也是封装在Script这个特殊节点中的。这里我们不能过多地讨论脚本描述语言的细节,主要讨论把脚本集成到VRML文件中的方法。第*页利用脚本编写自定义行为我们曾把接触检测器touchBox和视点view2直接通过路径连接起来,现在要定义我们指定的行为,就需要在二者之间插入一个脚本节点,也就是让路径绕个弯:ROUTEtouchBox.isActiveTOtouchScript.touchBoxIsActiveROUTEtouchScript.bindView2TOview2.set_bind第*页利用脚本编写自定义行为其中的脚本节点touchScript有一个事件人口touchBoxIsActive和一个事件出口bind_View2,前者接收来自接触检测器touchBox的事件,然后经自己的脚本处理后,把结果发送给视点节点view2:DEFtouchScriptScript{eventInSFBooltouchBoxIsActiveeventOutSFBoolbindView2urljavescript:functiontouchBoxIsActive(active){bindView2=TRUE;}}第*页利用脚本编写自定义行为关于这个Script节点,请注意以下几点:(1)它的事件入口touchBoxIsActive和事件出口bindView2是自定义的,而其它VRML节点的域和事件都是固定的。(2)事件入口touchBoxIsActive和事件出口bindView2的类型都是SFBool(单值布尔型),touchBox的事件出口isActive和view2的事件入口set_bind的类型也是相同的。(3)“url”是脚本节点的一个域,可以直接包含脚本,也可以包含一个或多个用URL地址指示的脚本,若有多个地址,则按照先后次序获取第一个可得到的脚本。(4)脚本是以函数(function)的形式给出的,函数名touchBoxIsActive与事件入口的名称相同,这是和ECMAScript语言的接口约定,表示相应事件入口接收到事件后应调用此函数进行处理。第*页事件流程下面我们整理一下事件流程:(1)用户在方块上按下鼠标左键。(2)接触检测器发出一个“TRUE”事件。(3)此事件进入脚本节点touchScript的事件入口touchBoxIsActive.(4)调用脚本函数touchBoxIsActive(注意,脚本函数并没有判断入事件的值)。(5)函数向touchScript的事件出口bindView2发送一个“TRUE”事件(还可以进行其它判断或执行其它事件)。(6)view2节点收到“TRUE”事件,成为当前视点。按照VRML约定,“认为”上述事件是同时发生的,也就是这些事件的时间戳相同。(7)若用户松开鼠标左键,则接触检测器发出一个“FALSE”事件,此事件同样引起脚本函数调用并发送“TRUE”事件,所以view2仍然保持为当前视点。本节的完整代码是(HelloWorld7.wrl)第*页事件流程#VRMLV2.0utf8DEFview1Viewpoint{position0020descriptionview1}DEFview2Viewpoint{position5020descriptionview2}Group{children[DEFboxTransform{translation500children[Shape{

您可能关注的文档

文档评论(0)

158****1986 + 关注
实名认证
文档贡献者

文档达人

1亿VIP精品文档

相关文档