VRML的Java编程分析和总结.docx

VRML的Java编程 VRML语言本身提供的交互性,基本上由传感器节点加上路由机制实现,其实现方法是静态的;要灵活地控制三维场景,需要操作的是动态地创建和删除路由。在VRML2.0中引进了一个Script节点,该节点包含一个url域,为实现交互提 供了编程的空间,它是一个字符串数组,在其中可直接编写描述性质的程序,也可指向如JavaScript,VrmlScript,Java 编写的程序文件,其中应用最多的Java文件。 Java对VRML的支持是通过附加的封装好的类来实现的,这些类主要是从java.lang.Object和java.lang.Exception基类中继承下来的,是JAVA与VRML结 合的必要手段,可以完成接收事件输入、发送事件输出、访问节点的域及使用VRML的对象等功能,利用java语言的这些功能,可以实现对VRML场景的较高级的控制。 如果想要实现与HTML页面的通讯,更加灵活地控制VRML场景,需要使用EAI(External Authoring Interface外部程序接口)。它是一个与VRML插件相联系的Java包,它由三部分组成:Vrml.external、Vrml.external.field、Vrml.external.exception。EAI允许一个Java Applet主要以三种方式访问VRML 中的场景:1)、可以发送一个事件到VRML场景中节点的事件入口。2)、可以收到VRML场景中节点的事件出口发出的最新值。3)、当VRML场景中节点的事件出口发出一个事件时,能得到一个通知,激活callback方法。在Java Applet中使用EAI,可以实现Java Applet与VRML虚拟空间之间的相互通信。 具体的实现方法是:VRML 文件可以使用 HTML 文件的标记EMBED或 OBJECT等包含在 HTML 文件中,而 Java Applet 可以通过 HTML 文件的标记 CODE等同样包含在 HTML 文件中,这样包含在同一个 HTML 文件中的 Java Applet 和 VRML 虚拟境界可以相互访问。 利用 JAVA APPLET 实现对 VRML 场景的控制。因此需要考虑三个方面的问题:APPLET,VRML 及 APPLET 与 VRML 的通讯。其中 APPLET 与 VRML 的通讯是关键,在后面核心技术中将详细讨论。 经反复研究系统分为以下几个包(package 包是 JAVA 组织代码的一种方法,通常把实现相关操作的类组织在同一个包中)可有效地组织代码。 上表的列举的是个包中的主要类,其中的辅助类未列举。下面以调节指定零件的透明度为例,简要说明 APPLET 程序实现 VRML 场景交互操作的一般过程,各主要类调用关系。图3-9 为调节指定零件透明度的流程图。该流程图比较清楚地说明了 APPLET 程序实现 VRML 场景交互操作的一般过程。 开始 开始 启动HTML 页 VRML APPLET 装载VRML 场景 得到VRML 浏览器句柄 否 装载完毕 成功得到句柄 是 处于接收事件状态, 等待事件输入 建立与VRML 场景的通讯 事件 否 得到VRML 场景所有相关元素的引用 (主要由SceneWalker 类实现) 有事件产生 是 VRML 和 APPLET 事件桥(VRML 中的事件由APPLETZ中重载callback 的类处理,APPLET 中的事件,通过对 VRML 元素的引用实现场景改变) 初始化APPLET 用户界面(包 括主工具栏、选项框、测量框, 装配框等) 初始化完毕,处于接收事件 状态,等待事件输入 事件 否 有事件产生 是 图 图 3-9 调节指定零件的透明度 关于图 3-9 流程图的几点说明: 1、此流程图大致勾画了出了本系统实现对复杂 VRML 场景交互操作的实现的一般过程,未涉及核心技术,核心技术将在下一小节详细讨论。 2、流程图分两条主线,一条是 VRML 浏览器插件控制的 VRML 场景,一条是 APPLET 通过对浏览器插件的引用,实现对 VRML 场景的交互操作。 3、VRML 和 APPLET 事件桥极为关键,它实现了 APPLET 和 VRML 的通讯。 4、VRML 和 JAVA APPLET 都是基于事件的的编程语言,因此流程图中的“有事件产生”判段循环实际上是不存在的,是为了使流程图结构清晰而加上去的。 核心技术 经过本章前面几个小节的讨论,已基本清楚实现 VRML 场景交互操作的方法。本小节主要讨论针对复杂 VRML 场景(本系统要求)实现交互操作的核心技术。主要分树形结构的快速遍历、获得 VRML 场景所有元素句柄、动态创建路由等。 一、树形结构的一种新型快速遍历算法 零部件装配关系形成装配树

文档评论(0)

1亿VIP精品文档

相关文档