APP下载

具有协同交流功能的虚拟物理实验室①

2019-04-10陈昭喜许爱军

计算机系统应用 2019年2期
关键词:服务器端协同实验室

陈昭喜,许爱军

1(广州中医药大学 医学信息工程学院,广州 510006)

2(广州铁路职业技术学院 创新创业学院,广州 510430)

作为信息技术新的增长点,虚拟现实技术(VR,Virtual Reality)在近年得到蓬勃发展.为克服纯粹的场景模拟和单用户操作带来的缺陷,支持多用户协同工作的协同虚拟环境成为当前研究的热点和难点.

关于协同虚拟环境的研究,目前主要集中在多用户协同工作的方法和技术方面,如协作模型、任务划分方法,以及时间、空间一致性等,并已取得一些重要进展.如文献[1]提出基于VRML白板(VRML Whiteboard)的方法,使异地分布的用户同步参与产品设计制作过程;文献[2]建立一个面向教育者的分布式远程教育和交流交互平台,实现了协同虚拟环境在地理教学中的应用;文献[3]采用VRML Automation接口实现了虚拟模型协同设计和浏览的新方法;文献[4]提出并实现了基于角色访问控制的分布式协同虚拟环境系统模型;文献[5]构建了一个多用户协同工作的分布式虚拟环境等.可见,协同虚拟环境能广泛应用到多个领域,在网络化、虚拟化、集成化、智能化、标准化方面取得一些研究成果.但从现有文献看,将协同虚拟环境应用到物理实验教学的研究还相对较少.

物理实验是提高学生动手实践能力、加深理解物理原理的重要手段.在实验教学中,学生往往缺乏对仪器设备的基本认知,导致实验操作效率低下.同时,学生在预习实验时往往缺乏实验环境,导致预习效果不佳.为解决实验教学中的这些问题,本文采用VRMLJS-Java通信机制,设计实现了具有协同交流功能的虚拟物理实验室,在实验教学中取得良好应用效果,为大学实验教学改革提供了借鉴和案例.

1 虚拟物理实验室总体设计

1.1 需求分析与场景层次设计

虚拟物理实验室作为真实物理实验的有效补充,用户进入虚拟实验室后应有身临其境之感.为此,虚拟物理实验室要满足以下需求:

(1)能真实展示物理实验室的整体环境和实验场景,如: 门、窗、书柜、试验台、实验设备等;

(2)能逼真展示若干个虚拟实验,如游标尺测量等;

(3)在实验过程中能与其他用户交流,协同完成部分实验内容等;

(4)在漫游过程中能与环境进行简单交互,如点击门窗能开关、点击窗帘能升降等功能.

为满足以上需求,将虚拟物理实验室分为实验室环境设计和三维人体设计两大部分.其中,实验室环境设计包括装潢设计(如: 门窗、黑板、天花)和设施设备设计(如: 课桌椅、试验台、书柜),三维人体设计包含教师和学生人体设计等.本文选取物理实验室大门作为参照物,依照由外至内、由下至上、从左至右的原则,形成虚拟场景层次结构如图1所示.

1.2 开发工具与交互功能设计

文献[6,7]详细阐述了VRML虚拟实验系统的设计流程,大体思路是: 首先在三维建模软件中进行物体模型设计;其次用可视化编辑软件将单个模型进行合成;再次在VRML文本编辑工具中添加交互节点;最后对模型文件进行压缩和优化,并进行发布,具体流程如图2所示.

本文采用的三维建模工具是3D Studio Max、可视化编辑工具是CosmoWorld、VRML文本编辑工具是Vrmlpad、三维人体模型设计工具是Poser、预览浏览器是Cortona VRML.

交互设计是虚拟实验系统最为核心的功能,本文采用的交互设计原理如图3所示.

图3 虚拟物理实验室的协同交流原理

2 虚拟物理实验室的三维场景构建

构建三维场景的目的是模拟真实物理实验室,营造出一种更逼真的环境氛围,大体可以分为实验室框架设计、装潢设计、设施设备设计、视点灯光设计等.

2.1 实验室框架设计

虚拟实验室的整体空间是一个几何立方体空间,本文采用多个Box节点,分别为实验室四周的墙体、天花板进行建模,然后“拼接”出一个长为38.5、宽3、高16.6(均为VRML单位)的封闭几何体作为实验室的整体框架.

2.2 实验室装潢设计

实验室装潢设计主要利用VRML的几何节点(如:Box、Cone等)来设计装潢几何体的形状及大小,利用外观节点(Appearance)中的材质节点(Material)定义装潢几何外观的材料属性.除窗户的背景图和黑板是通过文理包装节点实现外,其他物件大多采用Box节点实现,或是对它们分别建模后,通过Inline节点进行连接,再设置translation、rotation和scale值,将坐标、旋转角度和缩放比例分别调整.

2.3 实验室设施设备设计

设计实验室设施设备之前,要先进行取样,以获取真实模型的大小和尺寸,再对每个设施设备分别建模设计.下面以实验椅子为例介绍模型构建过程.

从几何结构看,实验椅子可以分解为塑料椅面、金属支架、金属底座和滑轮.椅面采用扩展几何体的“切角圆柱体”,金属支架使用基本几何体的“管状体”,金属底座使用基本几何体的长方体,滑轮使用一个切角圆柱体和扩展几何体的“纺锤”进行组合.金属支架的高度略大于椅子面的半径,金属底座中长方体的长度略小于金属支架的半径.创建完上述物体后,根据三视图将各个物体进行移动,然后根据实际更改物体的尺寸,得到如图4所示效果图.

图4 实验椅的建模过程

然后,在前视图中将金属支架沿y轴向下旋转,调整滑轮位置,将支架和滑轮连接成组,克隆选项选择为“实例”.最终效果图如图5所示.

2.4 视点和灯光设计

所谓视点是指用户的3D替身登录虚拟物理实验室后能在各个位置观察实验室中的设施设备,并根据个人意愿参与到实验中去.在虚拟实验室的场景中,用Viewpoint节点对场景进行视点的设置.系统中设置3个视点,分别是实验室后方视点、前方视点以及外部视点.

图5 建模后的椅子

灯光的作用是使虚拟物理实验室具备足够的光线[8].本文的虚拟实验室设置了6束平行光,分别是x、y、z轴的正方向和负方向各3束.系统设置了一个LightSwitch的Script节点.节点中设计了一个布尔类型的switch_changed出事件,当switch_changed为true时,打开光源,相应的域值发生变化;当switch_changed为false时,改变相应的域值关闭光源.节点中与光源开关相关的域值分别为SwitchOn和SwitchOff.

3 虚拟物理实验室的交互设计与实现

3.1 服务器端

虚拟物理实验室的协同讨论功能类似于聊天室,实现流程图如图6所示.

由于用户间需要交流讨论,服务器需要负责监听客户端的连接和实验系统的连接,采用Socket和线程来实现与客户端的连接,并存储在线用户情况和客户端连接服务器的请求情况.

服务器端主要由接受程序和分发程序组成.接收程序的主要功能是将监听到的用户交互信息、位置更新信息等存储到服务器端;分发程序的主要功能是将收到的信息分发给其他用户,以便实时感知其他用户的状态信息[9].除此之外,服务器端还包含用户登录界面和主要系统操作界面.登录界面提供用户注册和登录窗口,操作界面显示用户的个人信息、对系统的操作按钮、与其他用户间的讨论内容,以及虚拟讨论场景的显示等.

图6 服务器端的程序流程图

3.2 客户端

客户端主要提供用户的登录和操作功能.本系统中,用户主要分为教师和学生两种类型.用户登录时可以选择用户类型.用户在客户端的操作界面中输入用户名、服务器主机的IP地址和服务程序的端口号,点击“连接”按钮与服务器端进行连接,即可进入到虚拟物理实验室中;通过“断开”按钮,与服务器端断开连接.客户端也有一个用户列表来显示当前系统上的在线用户列表.其他用户的位置可以在本用户的Java控制台上显示,本用户的行为也可以发送到其他用户的Java控制台上显示,从而实现场景的一致性.

3.3 用户间的交互与感知

在协同多用户系统中,用户间要彼此感知状态与行为的变化,通常利用VRML的Proxim-itySensor节点跟踪用视点的移动获得位置和方向值.通过向其他用户发送这个值的变化信息,其他用户就能感知该用户的移动方向和变化状态.而当用户登录或者退出时,场景中的替身也会同步地增加或消失.

本文的虚拟实验系统采用开放式的登录方式,设置了用户信息数据库和用户信息文本文件.用户只要访问了包含有聊天讨论Applet程序的HTML网页,与聊天程序的服务器进行连接后,即可进入实验室参与讨论.用Socket和线程控制来实现多个用户之间的协同交流.

在门、窗交互方面,系统定义了Touch触摸传感器、Time时间传感器.当单击实验室入口的门板时,信息被触摸传感器Touch获取,通过事件路由ROUTE/TO将事件touchTime传递给事件startTime.将门板的坐标位置信息进行改变,完成开门动作;门开动作完成后,又通过事件路由ROUTE/TO将门的坐标信息恢复到关闭状态,完成门的自动关闭.

3.4 VRML虚拟场景与Java的接口

本文采用Java程序对虚拟场景进行控制.JS是嵌套于网页中的脚本语言,既可以访问VRML虚拟场景又可以访问Applet小程序,因此基于网页脚本交互的基本思想,通过JS语言编写函数作为桥梁,采用VRMLJS-Java的通信机制实现VRML和Applet之间的通信.以JS为桥梁实现VRML与Java Applet之间参数传递的步骤及代码如下.

第一步,用VRML文本编辑器在场景文件中添加Script节点和触发器,对需要访问的节点用DEF定义名称,在文件后端添加路由.在Script节点入事件处理函数中调用网页脚本的代码为:

Browser.loadURL(‘javascrip:fun(+参数+)’,’’);

其中,Browser为浏览器的对象实例,loadURL为浏览器的接口函数,fun为脚本函数名.

第二步,分析各功能模块及调用关系,设计Java Applet子类,编译成目标文件,两项主要工作是:

一是引用jsobject包.由于项目实施中使用JDK1.6版本,高于1.4版本,jsobject包在plugin.jar中.需要将其加入到classpath中,以便能够顺利地在开发时编译.

二是调用JavaScript函数.在Applet的init()方法中,可通过“win=JSObject.getWindow(this);”语句获取JavaScript窗口句柄,引用当前文档窗口.有了win参数,才可以调用JS的相应函数.在相应的方法中,通过“win.eval(“javascript:方法名(“+参数+”)”);”语句,将获得的参数传递到JS相应的函数中,再由JS函数将得到的参数付给VRML虚拟场景中的相应结点,这样便实现了对虚拟场景的控制.

第三步,在网页源文件中添加VRML场景文件、Java Applet以及脚本函数.加入网页脚本函数一般有两种类型,一种是加入的函数使VRML可以通过JS调用Applet小程序;另一种是定义VRML虚拟场景的引擎,获得对虚拟场景的引用.

4 虚拟物理实验室的效果测试

4.1 虚拟物理实验室的发布

虚拟物理实验室设置了黑板、教师工作台、学生课桌椅、两个书柜、一台空调、一台饮水机以及门窗等模型.将这些模型组合完成后,可以采用微软IIS服务器进行发布,发布时将Web服务器的MIME类型设置为model/VRML,整体效果图如图7所示.

图7 虚拟物理实验室内部效果

4.2 游标卡尺实验的实现效果

在虚拟物理实验中设置了若干个实验,用户单击试验台上的相应实验,就调出实验系统,图8是游标卡尺实验效果图.在实验界面的左上角,设置了退出实验、查看读数、退出读数三个按钮,在正上方设置了输入读数的文本框.

图8 游标卡尺实验效果

4.3 实验交流的实现效果

虚拟讨论系统需要将VRML虚拟场景和Java Applet程序一起嵌套到HTML网页文件中.用户通过访问服务器主机上的HTML网页文件,进入到虚拟讨论系统中.服务器端的程序要始终运行,用户方可连接服务器,实现与其他用户的信息交流.HTML网页的访问情况如图9示.

4.4 其他交互的实现效果

为逼真模拟出虚拟物理实验室,我们在实验系统中添加了一些鼠标交互动作,如用鼠标单击窗帘,窗帘可拉开,再次单击则窗帘关闭,实现效果如图10所示;用鼠标点击实验大门,大门可以打开,再次打击则大门关闭,实现效果如图11所示.

图9 实验交流场景效果图

图10 窗帘交互效果

图11 开门交互效果

5 结论与展望

本文实现了一种具有协同交流功能的虚拟物理实验室,并具有以下特点:

(1)具有操作简单、使用方便、逼真度高等特点,用户只需要下载VRML插件就可以访问,实现对虚拟物理实验室的在线浏览;

(2)具有交流便利、协同工作的特点,用户登录系统后通过选择角色,可以实现师生之间的沟通交流,协同完成实验内容;

(3)具有良好的层次性、可重用性和互操作性,支持跨平台运行,易于扩展和维护.

本文以JS为桥梁实现VRML与Java Applet之间传递参数,从而实现了具有交流功能的虚拟物理实验室,解决了虚拟实验过程中学生交流不畅的问题.在实验内容上,目前仅完成游标卡尺的测量,未来将增加其他物理实验内容,并进一步提升系统的伸缩性、兼容性和开放性,这也是今后研究工作的重点.

猜你喜欢

服务器端协同实验室
输入受限下多无人机三维协同路径跟踪控制
家校社协同育人 共赢美好未来
Linux环境下基于Socket的数据传输软件设计
“四化”协同才有出路
电竞实验室
电竞实验室
电竞实验室
电竞实验室
京津冀协同发展
基于Qt的安全即时通讯软件服务器端设计