谈网络实训教学平台设计及实践

时间:2022-10-10 10:34:14

谈网络实训教学平台设计及实践

1虚拟实训场景与人物的构建

1.1虚拟实训场景构建

网络实训项目虚拟环境中,有地面、道路、树木、建筑物以及相关设备等,这些元素构成了网络实训场景的基本环境,主要使用3DSMax的可编辑多边形技术来进行低面数模型的构建,建筑物模型是采用标准的建筑物尺寸建立的,模型的贴图主要来自实际建筑物的照片,通过PhotoshopCS进行处理后将贴图贴到模型表面,以模拟出实际的物体模型,图2中(a)为虚拟教学楼场景的模型,该模型为3层,每层有2间教室、1间办公室,每间教室有6台PC机,每间办公室有1台PC机。楼梯采用3DSMax的平面工具建立,然后利用Photoshop对贴图进行明暗处理,制作成楼梯台阶效果,这样设计的目的是便于虚拟角色能够自由地行走在楼梯上。

1.2虚拟人物构建

虚拟人物(角色)模型是多人协作的网络实训系统环境中最重要的一部分。人物采用写实模型,以模拟真实人物在虚拟场景中进行各种操作,达到沉浸性和娱乐性效果,以提高学习者的学习兴趣和热情。由于Virtools是采用实时渲染的,为了保证实时交互的效果,因此使用低面数模型来制作虚拟人物。低面数模型最大的特点就是以较小的面数,加上贴图来完成制作,模型的细节可以在贴图上表现出来[11]。角色的动画是通过3DSMax的CharacterBiped的骨骼动画系统制作而成的,图2(b)为虚拟人物制作的行走画面。

1.3场景模型、角色及其动画的导出

将虚拟场景制作完成,需要使用由Virtools提供的专用Max导出插件分别将模型、角色以及角色动画进行导出,也就是导出为VirtoolsDev能够识别的.cmo文件。模型导出后,就可以在VirtoolsDev开发环境中进行应用系统的开发。

2多人协作的网络实训系统实现

2.1服务器端会话设置

在MultiuserServer端一般需要设置会话,以便客户端能够使用该会话信息,在该窗口中可设置会话名、宿主服务器中最大并发会话数、每个会话的最大并发客户数、大厅计数(通过为0或1表示)以及会话类型ID号等信息。会话类型ID号是客户端询问服务端有效会话列表时所用的参数。

2.2VirtoolsDev中设置服务器端地址及相关模块设置

本系统需要支持多用户以及与数据库进行连接,因此需要在VirtoolsDev中创建两个阵列,阵列名如Hosts和Modules。在Hosts阵列中有1条记录,这条记录保存着服务器的IP地址及端口号。Modules阵列中有2条记录,分别为构建多用户系统的模块Vir-toolsClientMultiuserModule和连接数据库的模块VirtoolsClientDatabaseModule。

2.3相关物体属性设置

在虚拟环境中,需要对各类物体的属性进行设置,如碰撞检测设置、地板检测设置等。(1)碰撞检测设置。本系统使用Virtools系统内置的角色自动寻路系统,因此需要设置好碰撞检测,本系统使用Grid(网格)来实现碰撞检测。Grid是Virtools中一个非常特殊的功能,它可以很好地控制空间属性以及处理碰撞范围等[12]。网格设置窗口如图3(a)所示。在该设置窗口中,可以设定多个网格,即设计多层,其中白色部分为碰撞检测区,其参数类型为Integer,非白色区域是虚拟角色可以自由活动的区域,层与层之间需要通过链接层进行连接,其参数类型为Linker。本系统针对教学楼进行网格设置,在VirtoolsDev中最终完成的效果如图3(b)所示。其中白色区域为碰撞区域,这样就不会出现角色穿过墙壁、设备等现象,非白色区域为角色可以活动的区域。(2)地板检测设置。当系统中只有一层地面时,将该地面增加floor属性,然后在该角色的脚本中使用EnhancedCharac-terKeepOnFloorBB,这样当角色在这些物体上面行走时不会被掉下去。而在本系统中,教学楼是一栋三层楼的建筑物,如果角色要在虚拟教学楼中行走,至少需要设置3个地面,如果采用EnhancedCharacterKeepOnFloorBB的话,当角色行走到二楼的时候,就会引发从二楼跌至一楼的错误现象。为了解决这一问题,本文建立一个群组floor,将地面、楼梯的模型存放到该组中,然后使用RayIntersectionBB通过遍历群组中的对象来实时检测是否为地面或楼梯,并将角色设置在相应的地表上。

2.4多人连线系统流程

本联机系统以C/S为架构模型,即在广域网或局域网中有一台专用服务器,其他均为客户端来访问服务器,为了保证虚拟场景的一致性,所有的计算均由服务器来完成,客户端只负责用户输入、输出和渲染。具体流程如下:(1)使用ConnectToServerBB连接服务器,如果Hosts阵列与Modules阵列设置正确,同时VirtoolsServer也在正常状态下,联机就会被建立起来,并获得ConnctionID。(2)使用GetSessionsListBB获得服务器上的会话列表,该BB的SessionType必须和VirtoolsServer上的SessionType的设置是相同的。GetSessionsListBB是根据SessionType的数据来做寻找的依据,当没有发现其他玩家所开户的Session时,就会使用Cre-ateSession来创建会话,如找到其它的Session时就会使用JoinSessionBB加入到会话中。(3)角色的建立与数据传输。角色的建立是使用ObjectCopyBB从角色模板中复制创建一个本机操作的角色,然后通过CreateDistributedObjectBB将角色数据注册到Server上,即创建本机角色的Dis-tributedObject,然后通过控制本地用户的跟随摄像机来控制玩家移动,其他用户通过使用DistributedOb-jectCreated收到角色的注册讯号后在其他用户的就复制一个本机角色出来,并使用BindDistributedOb-jectBB把新角色和获得的DistributedObject进行绑定,分布式对象传递的数据就交给Server来进行统一的管理和控制,同时按照ManageDistributedClassesBB所设定要传递的数据来进行数据的传送。(4)角色和场景的撤销。当对方角色离开Ses-sion会话时(或者说对方角色下线时),DistributedObjectDestroyedBB会检测到用户离开,然后使用ObjectDeleteBB来删除在本机上显示对方的角色。当Session关闭时,GetSessionStateBB可检测到会话关闭,并使用DeleteDynamicObjectBB来删除场景中所有的对象。

2.5分布式对象管理与使用

在Virtools的MultiuserServer模块中,提供了两类主要的消息发送机制:网络消息(NetworkMessa-ges)和分布式对象(DistributedObject)。网络消息主要适用于一些简单的信息传递,如客户端之间的聊天信息、对象的简单位移信息等。在分布式对象的消息发送机制中,一个分布式对象是跟一个本机控制的角色相关联的,它们之间是一一对应的关系。分布式对象的状态包含的内容可以通过ManageDistributedClassesBB来进行定义,如位置、方向、动画等。分布式对象的状态可以通过网络发送给其他客户端,因此,可以把本机所控制角色的一举一动,通过与它相关联的分布式对象发送出去并显示在其他客户端上[13]。这种方式适合于复杂的信息传递或是某些对象复杂的动作、运动的同步等。在进行多人协作系统开发时,需要设置ManageDistributedClassesBB来对分布式对象的状态进行管理,具体过程可分为分布式对象的统一管理、声明;分布式对象的创建与交互;分布式对象的操作以及分布式对象的撤销4个部分组成[14]:(1)分布式对象的统一管理、声明。分布式对象的运作主要是通过ManageDistribu-tedClassesBB来设定的,该BB包含对角色等运动物体的定位以及自定数据与传输的时间。由于该BB是一个全局对象,对所设定的所有对象进行管理和控制,因此需要把ManageDistributedClassesBB定义在Level层级上。在本系统中,存在着学习者以及系统内设定人物两种类型的人物,因此需要定义2个类,使用Charac-ter模板,设定不同的属性。学习者定义为Player类,拥有世界位置、方向和动画的属性以及聊天信息等属性;NPC为系统内设定的人物,也就是非玩家角色,将其定义为NPC类,拥有世界位置、方向和动画属性。(2)分布式对象的创建及绑定。在各个客户端中通过使用CreateDistributedOb-jectBB创建分布式对象。(3)分布式对象的撤销。分布式对象的撤销主要是通过DistributedObjectDestroyedBB来进行实时地探测分布式成员是否被撤销,当检测到有分布式对象被撤销时使用ObjectDeleteBB来遍历数组查找对应的分布式对象信息,并删除相应的数据库信息和分布式对象,分布式对象的撤销脚本如图6所示。

3系统运行的效果

本文基于ThinkPHP开源框架,整合Virtools所开发的多人协作系统,构建基于Web学习平台,然后将系统部署到Apache服务器上。学习者需要登录到网站进行注册,通过认证后,选择需要进入的虚拟网络工程项目的学习环境。用户将以虚拟化身的方式进入到虚拟网络实训场景,进入场景后,可以在进入教学楼内部,和虚拟场景里的NPC(非学习者操作角色)进行会话,了解用户的基本需求;到教学楼的每个教室,统计各个教室的PC机数目,与其他学员的虚拟化身面对面地交流,共同讨论如何进行方案讨论,比如项目中需要多少台交换机可以满足项目需求,如何进行网络布线,完成本工程项目大致需要多少预算等。系统的整体运行效果如图7所示,其中图7(a)为学习者的虚拟化身上楼梯的效果,图7(b)为学习者的虚拟化身之间利用文字信息进行交流,讨论相关的问题等。

4结束语

本文主要研究了多人协作网络教学系统的虚拟实训环境,以虚拟一个三层楼的教学楼为例,学习者可以虚拟化身的形式进入到虚拟环境中,身临其境地体验虚拟场景的具体情况,通过聊天的方式与其他学习者共同协作探讨一个简单的网络建设过程。利用虚拟现实技术进行网络工程项目的实训是一种有效的训练途径,通过开发基于协作式网络工程项目训练系统,学习人员可以在虚拟环境中对设备进行安装、调试、故障排除、训练考核等三维交互式训练。通过模拟各种网络设备的实际环境、状态、特征,使学习人员沉浸在如同真实场景和真实设备中进行训练,既不会危及人身的安全,也不会损坏真实设备,是一种节省人力和财力的理想训练方式。虚拟实验实训已经成为一种全新的实践教学手段,支持多用户协作的、分布式的虚拟实验,实训系统将是未来实训教学系统的一种发展趋势。

作者:龙艳军 欧阳建权 单位:湘潭大学信息工程学院 永州职业技术学院网络信息中心

上一篇:探究计算机网络课程规划 下一篇:小议网络工程在线实验室的开发