APP下载

邻接矩阵在智能协同仿真实验系统的应用

2019-11-12张祥裕

电脑知识与技术 2019年25期
关键词:邻接矩阵天平客户端

张祥裕

摘要:近年来,沉浸的3D虚拟实验环境越来越吸引研究者和学习者。随着VR、AR技术的发展,给学生营造了一个更加逼真、生动、可交互的虚拟仿真实验环境,使得虚拟仿真实验更加逼近真实实验。但是目前大部分虚拟仿真实验都集中于单人实验,学生之间缺乏交流和协作,同时实验环境缺乏沉浸式的交互和实验步骤呆板固定。对于这个问题,本文基于Unity 3D引擎设计了一个协同天平实验,该协同实验采用Unity 3D的Unity Network技术实现多用户之间的实验场景数据的同步,同时利用邻接矩阵技术并根据实验者的实际操作情况以动画直观的方式智能展示下一步的操作,最后使用Unity 3D碰撞技术实现整个实验。

关键词:虚拟实验;协同实验;邻接矩阵;智能;Uinty 3D

中图分类号:TP391.9     文献标识码:A

文章编号:1009-3044(2019)25-0299-0c

Abstract: In recent years, immersed 3D virtual experimental environment has attracted a growing number of researchers and learners.With the development of VR and AR technology, a more realistic, vivid and interactive virtual simulation experiment environment is created for students, which makes the virtual simulation experiment more close to the real experiment.However, most of the virtual simulation experiments are focused on single-person experiments at present. There is a lack of communication and cooperation between students. At the same time, there is a lack of immersive interaction and rigid experimental steps in the experimental environment.To solve this problem,this paper designs a cooperative balance experiment based on Unity 3D engine. The cooperative experiment uses Unity Network technology of Unity 3D to synchronize the experimental scene data among multi-users. At the same time, the Adjacency matrix technology is used to display the next operation intelligently in an animated and intuitive way according to the actual operation of the experimenter. Finally, the whole experiment is realized by using Unity 3D collision technology.

Key words: Virtual experiment; collaborative experiment; Adjacency matrix; intelligence; Unity 3D

三维虚拟仿真实验教学是虚拟教学的重要组成部分,学生可以根据实际情况自己安排时间来完成实验和重复某个实验[1][2],打破了时间和空间上的限制。3D虚拟实验环境给学生提供一个沉浸和高效的学习环境,在虚拟实验环境中,学生可以进行虚拟实验、探索和分析虚拟实验现象[4]。但是大部分的虚拟仿真实验平台都是以单人虚拟仿真实验为主[4][5][6][7],学生与学生的缺乏交流和合作,同时实验缺乏合理的引导,使得学生失去对实验的兴趣,也不会在做实验的基础上进一步深入了解和探索。因此,一个智能的协同仿真实验系统可以很好地解决这个问题,这样的仿真系统可以让多个学生一起做一个实验,参与者可以相互合作[8],共同解决在实验遇到的问题,提高了学生的积极性和学习兴趣。本文利用Uinty 3D游戏引擎设计了一个以天平实验为例的智能协同虚拟仿真实验系统,该系统使用Unity 3D的Unity Network技术实现虚拟实验实时的同步,采用邻接矩阵根据实验操作的实际实验情况控制下一步操作的动画的播放达到智能指导实验,采用碰撞检测技术和摄像机跟随技术使得实验更加沉浸和逼真,解决了交互性差、体验差和单人实验无趣乏味的问题。

1 相关工作

现在的协同实验研究工作主要体现在四个方面:(1)增加辅助协同实验的手段,这些手段包括语音聊天、视频聊天、分享电子白板、分享虚拟桌面、录制实验操作过程等[9][10][11]。

(2)引入VR设备使得协同实验更加的沉浸和提高用户之间的交互[14][16],如微软的Kinect、在化学实验中发出刺激性气味的嗅觉装置、Oculus和Leap Mothion VR devices。(3)变换协同实验的形式,如老师带领和监督学生做实验[10][12]、提供错误信息反馈[10]。(4)针对不同类型协同实验采取不同的协同算法[14]。现在主流的协同实验系统都体现着这四个方面中的一个或者多个方面,如:Teresa Monahan, Gavin McArdle, and Michela Bertolotto等人利用VR技術设计了一个以网站为平台的多媒体协作e-learning系统CLEV-R[13], 该系统为学生提供文字聊天、语音聊天功能和能直接从网络摄像头采集数据并向3D环境广播,在这个系统中,学生也可以上传并分享个人文件。Moh. Zikky, Kholid Fathoni, Miftakhul Firdaus等人利用VR设备Oculus和Unity 3D引擎的Unity Network技术设计了以太阳系为课题的远程交互的多媒体虚拟协作学习系统[9],该系统的重心是如何建立通信通道、如何进行连接和在三维虚拟场景中共享对象。Jara 等设计的在线实时虚拟协同实验室[15]采用加锁发控制协同实验的并发问题,教师在操作时学生只能观看而不能操作,学生需经过老师的同意之后才能取得操作权。Kong等人开发了实时同步虚拟协同实验平台[16],该平台利用利用网络编程技术、C#编程语言、.NET类库及 Sql Server 数据库等关键技术,设计和实现了一个允许多人实时同步合作完成同一实验的虚拟协同实验平台。Guo等人开发了基于 Kinect 的多人在线虚拟实验系统[17],采用Uinty 3D的RPC技术和Kinect 体感交互技术使得实验者可以采用肢体动作操纵虚拟角色进行自由行走,并把操作同步到其他客户机上。由此可见协同虚拟仿真教学实验具有很大的发展潜力和深深吸引着研究者。但是目前的协同虚拟实验仿真还处于研究初级阶段,人机交互性还相对比较差,实验场景不够逼真。基于以上缺点,本文设计了一个以天平实验为例的智能协同虚拟仿真实验系统,摄像机以第三人称视角,跟随虚拟手模型的移动和旋转,虚拟手模型模拟现实中的手抓取仪器零件,使得实验场景更加地逼近真实实验,利用邻接矩阵以动画的方式动态指导实验操作者如何进行实验,使得人机交互变得更加的灵活。

2 协同实验学习虚拟环境

2.1 Client-Server基础结构

协同实验学习虚拟环境使用Unity 3D引擎自带的网络通信框架Unity Networking(简称UNET)来实现虚拟实验的同步,利用该框架的NetworkManager组件来管理三维虚拟物体的同步生成和同步销毁,利用Network Identity组件来标识每一个三维虚拟物体,利用同步变量的方式来同步三维虚拟物体的位置和旋转。需要同步的三维虚拟物体都在Server端生成,然后通知各个Client端同步生成。该系统需要同步三维虚拟物体的生成、销毁、位置和旋转,其他的所有交互操作都在各自的客户端完成,因为客户端和服务端使用同一套代码,只需要加以相关的控制即可,这样可以减少网络数据的传输。

2.2 协同实验虚拟环境设计

该系统以天平称量硬币质量实验为例说明客户端实验的设计与实现,采用Unity 3D的碰撞检测技术完成天平零件的装配和硬币质量的称量和使用邻接矩阵算法动态给出实验指导方案。

2.2.1协同实验结构

该协同实验包括四个部分:(1)通过键盘控制虚拟手模型的弯曲来抓取或者放开实验仪器零件。(2)被抓取的仪器零件和客户端各自的摄像机跟随手模型的移动,并把对应的位置信息同步到其他客户端。(3)被抓取的仪器部件碰撞到对应的位置就会引发碰撞事件,并把该仪器部件固定到该位置上。(4)天平装配完成后,手模型抓取硬币放入天平的左盘,抓取镊子夹取砝码放入天平右盘,根据需要更换砝码的大小,直到天平平衡。如图1的a所示:

图1的b展示了用来准确固定天平零件装配后的位置和角度的box碰撞体,当手模型抓取的天平零件碰撞到相应的box碰撞体时,把天平零件吸取过去,并把该box碰撞体的位置和角度的值賦值给抓取的天平零件的位置和角度,手模型放开,完成零件的装配。

在需要实时同步的三维虚拟物体的预制体都挂载同一个脚本,该脚本的作用是同步当前三维虚拟物体的位置和旋转角度。先定义两个同步三维虚拟物体的位置和角度的Vector3类型的变量vecPosition,vecRotation,判断手模型抓取的三维虚拟物体是否是当前客户端的三维虚拟物体,如果是当前客户端三维虚拟物体,则记录下当前三维虚拟物体的位置和旋转角度,并把它们赋值到vecPosition,vecRotation,如果不是当前客户端三维虚拟物体,则把vecPosition,vecRotation的值带上当前三维虚拟物体的名称currentName发送到服务端,在服务端根据客户端发来的三维虚拟物体的名称找到在客户端对应的三维物体,并把vecPosition,vecRotation的值赋给找到的三维物体,服务端同时还会把更改的操作同步到各个客户端。

2.2.2 邻接矩阵算法

利用邻接矩阵算法来动态指导动画的播放,并通过特定的摄像机拍摄动画并显示到屏幕上,实现从实验开始到实验结束的全程指导。把用户的当前完整的操作看成是一个步骤,如用户点击按钮也相当于一个步骤,一个实验的完成由多个步骤组成,步骤之间根据实际情况可以相互切换并且切换往往是错综复杂的,如图2中的步骤之间的切换关系:

图2中展示了9个步骤和步骤之间得切换关系,这9个步骤分别是step_a、step_b、step_c1、step_c2、step_d1、step_d2、step_d3、step_e1、step_e2,其中step_a是起始步骤。步骤到另外一个步骤有箭头指向就代表可以从这个步骤切换到那个步骤,并设路径长度为1。根据这9个步骤可以建立9阶的方阵S,该方阵的建立规则如下:

(1) 找出起始步骤到当前步骤所有可能路径,并记录路径长度最小的路径

(2) 从当前步骤开始,沿着最短路径往起始步骤方向走,从中所经过的步骤(包括起始步骤)与当前步骤的关系在方阵中表示设为1,其余的步骤与当前步骤在方阵中表示为0

则根据规则,这9阶方阵如图3所示:

下面以该方阵中的第三行数据为例进行说明:

方阵中第三行数据表示的是步骤step_c1与其他步骤之间的关系,步骤step_c1到起始步骤step_a最短距离为2,从step_c1沿着最短路径到step_a,经过step_b和step_a,所以step_c1与step_b的关系和step_c1与step_a的关系的值在方阵中表示都为1,则方阵中第三行第二列、第三行第一列中的值都为1,该行其他列为0。

容易知道,邻接矩阵S有如下性质:

(1)如果第i行中的元素全部为0,则步骤i可以操作;

(2)如果不存在某行的元素全部为0,则没有步骤能操作。

于是得到邻接矩阵S的算法:

(1)当存在一行元素全部为0时,则推荐给用户的步骤只有一种选择;

(2)当存在多行元素全部为0时,则推荐给用户的步骤有多个,可以随机返回一个步骤给用户;

(3)当步骤i完成后,把邻接矩阵的第i行和第i列的元素全部移除,并重新更新邻接矩阵S。

2.2.3 邻接矩阵算法在协同虚拟实验环境的应用

天平实验待操作的零件如图4所示,操作零件r2记为步骤r2,操作零件r3记为步骤r3,操作零件r4_left记为步骤r4_left,操作零件r4_right记为步骤r4_right,操作零件r5_left记为步骤r5_left,操作零件r5_right记为步骤r5_right,操作零件r6_left记为步骤r6_left,操作零件r6_right记为步骤r6_right,把硬币放进天平的左盘的操作记为步骤coin,把砝码用镊子夹进天平右盘的操作记为步骤weight。

则可得该实验的步骤切换关系如图5所示:

根據步骤切换关系图得邻接矩阵S,如图6所示:

把每一步操作的步骤都录制成可视化的动画文件,建立邻接矩阵的行号与动画名称一一映射关系。当一个步骤被操作后,就删除邻接矩阵中的对应的行和列的元素,同时查找下一个操作步骤的行号,如果找到多个行号符合要求,则随机返回一个行号,并根据该行号找到与之对应的动画名称并播放该动画,实验操作者可以通过观看该动画可以知道下一个操作如何做,从而达到指导的效果。该动画在Unity 3D实验场景的另外一个地方内执行,利用专门的摄像机拍摄并渲染到实验场景中的带有RenderTexture材质贴图的3D屏幕上,效果如图7所示:

只要符合实际,实验操作者可以随心所欲地操作,并且可以根据实验操作者的实际操作情况,动态给出实验指导,同时实验操作者可以不按照给出的指导步骤进行操作,摆脱传统的安排好的操作流程,每一步都是固定好的,不按照它指导的操作步骤做无法进行下一步实验。

3 结果和讨论

系统利用Unity3D的碰撞检测技术完成天平零件的装配和硬币的质量称量,利用Unity Network技术实现虚拟实验的同步,利用邻接矩阵实现实验教程动态指导,实现了一个智能、沉浸的三维协同实验系统。摄像头以第三人称视角跟随手模型移动和旋转,手模型抓取虚拟物体在三维场景中移动和旋转并与其他三维虚拟物体进行交互,摆脱按住鼠标拖拽物体进行交互的传统方式,使得虚拟实验更加逼近真实的实验。该系统还可以进一步完善,如增加互动功能(视频聊天)、智能人机交互功能(AR技术)、动态建模功能(2D图像转3D模型)、动态增加习题功能(动态从数据库抽题并根据题目要求动态建立习题UI)。

参考文献:

[1] Valdez M T, Ferreira C M, Martins M J M. 3D virtual reality experiments to promote electrical engineering education[C]//2015 International Conference on Information Technology Based Higher Education and Training (ITHET). IEEE, 2015: 1-4.

[2] Zikky M, Fathoni K, Firdaus M. Interactive Distance Media Learning Collaborative Based on Virtual Reality with Solar System Subject[C]//2018 19th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD). IEEE, 2018: 4-9.

[3] Grivokostopoulou F, Perikos I, Kovas K. Utilizing virtual reality to assist students in learning physics[C]//2017 IEEE 6th International Conference on Teaching, Assessment, and Learning for Engineering (TALE). IEEE, 2017: 486-489.

[4] Daineko Y A, Ipalakova M T, Yunnikova M V. Using of ICT in E-learning: Development of the virtual learning environment for physics study[C]//2017 Computing Conference. IEEE, 2017: 1195-1198.

[5] Liao H, Qu Z. Virtual experiment system for electrician training based on Kinect and Unity3D[C]//Proceedings 2013 International Conference on Mechatronic Sciences, Electric Engineering and Computer (MEC). IEEE, 2013: 2659-2662.

[6] Du H, Jia Z, Wang J. A control mechanism of the physical simulation experiment based on game engine[C]//2009 International Conference on Computational Intelligence and Software Engineering. IEEE, 2009: 1-3.

[7] Alam A, Ullah S. Adaptive 3D-Virtual Learning Environments: From Students' Learning Perspective[C]//2016 International Conference on Frontiers of Information Technology (FIT). IEEE, 2016: 7-10.

[8]Scheucher B, Bayley P, Gütl C. Collaborative virtual 3d environment for internet-accessible physics experiments[J]. International Journal of Online Engineering, 2009, 5(REV 2009): 65-71.

猜你喜欢

邻接矩阵天平客户端
轮图的平衡性
天平的平衡
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
基于邻接矩阵变型的K分网络社团算法
Inverse of Adjacency Matrix of a Graph with Matrix Weights
客户端空间数据缓存策略
简易天平