李利正, 陈兰生
(绍兴职业技术学院信息工程学院,浙江绍兴 312000)
实践教学在计算机专业的一些实践性强的课程中具有重要作用,学生只有通过实验操作,才能真正理解和掌握实验原理与操作技能。高校实验教学在改革实验内容的同时,更要求增加设计性、综合性、创造性和选择性实验项目[1],建设设备先进、管理优良的实验室,各高校在提高实验设备利用率,增加资金投入和开发虚拟实验软件等方面加大了力度,基于虚拟技术的具有高交互、强烈沉浸感的智能仿真实验室成为当前的研究热点[2-3]。以“计算机组装与维护”课程虚拟实训室为例,有的提出桌面型虚拟现实,结构简单,操作简单,但是缺乏沉浸感、学生易受环境干扰,而且不具有开放性,只能在特定环境下进行[4];有的提出使用Flash仿3D设计,虽能降低研发成本、加快软件在网络的运行速度,但用多角度多层次压缩拼接真实图片而形成的3D仿真软件存在动态交互性差,缺乏随机应变能力与临场感[5];有基于Virtools的虚拟仿真实验室,三维沉浸感强,人机交互效果好,并能通过网络共享教育资源,但是由于3D计算耗用CPU资源大,运算速度慢[6]。因此本文提出了基于具有可编程、多线程、高强度并行计算能力的多核图形处理器GPU[7]的计算机组装与维护虚拟实训平台,以提供学生不受时空限制进行实验的反复模拟练习。
基于可编程的GPU计算机组装与维护虚拟实训平台具有3D仿真元器件、主机箱等硬件设备,能满足学生进行计算机安装与调试、硬件故障模拟与排除等实验,通过服务器端的实验参数管理,智能语法库、技能库、操作经验库等数据的管理,为客户端的智能交互提供数据依据,系统根据专家智能库、经验库对学生实验操作生成报告并进行分析,最终给出操作评价,系统架构如图1所示。
图1 虚拟实训平台体系结构
系统采用B/S架构,服务器端使用PHP语言开发,与数据库进行数据通信,对客户端的Http请求,输出XML格式数据进行数据通信,客户端利用基于GPU的Stage3D实现技能训练[8],流程如图 2所示。Stage3D是Adobe推出的底层3D渲染引擎[9],该引擎能够调用电脑显卡的OpenGL[10],借助GPU强大的运算能力提高渲染效率。本系统首先应用3Dmax建立主机箱和各类数据线、元器件的静态三维模型,建模时应根据不同材质和不同参数设置不同的状态,并导出为md5mesh格式文件作为Stage3D建模文件,通过基于Stage3D的开发框架Starling设计场景、操作对象、特效渲染、交互操作,由于使用GPU硬件加速,在浏览器端进行实验操作异常流畅[11]。技能训练模块与浏览器端通过Javascript和XML产生交互,从专家智能库读取语法表达、组装维护逻辑和技能经验等作为参考,对实验人员的实时操作进行分析,产生XML文件格式的实验分析结果,以便监控评价模块调用并给出成绩和分析。
图2 技能训练流程图
虚拟实训平台的操作设备是主体,仿真交互是核心。构建硬件设备的三维模型为虚拟交互设计提供可操作对象,同时虚拟交互设计时三维模型实现动态操作的必要途径,服务器端数据的维护提高了系统的可扩展性。虚拟实训仿真平台是一个比较复杂的应用项目,本文重点论述三维模型数据结构的构建以及利用Stage3D技术实现三维场景的渲染和非线性实时交互设计的过程。
三维模型数字表达依据几何结构的不同主要分为规则网格和不规则三角形网格[12],其中三角形网格具有较高绘制效率,无论在转换、采样以及顶点之间都存在很强的规律性,本文采用三角形网格绘制模型,每个模型顶点状态由各顶点位置、颜色和法线确定,表示为[x,y,z,c,nX,nY,nZ]T,计算前须将顶点以组为单位上载至GPU缓存;为了确定能形成三角形的顶点,提炼顶点索引上载至GPU缓存,让GPU知道顶点渲染顺序;GPU中,模型的视图变换包括平移、缩放和旋转,设平移、缩放、旋转的变换矩阵分别为 P、S、N,则顶点位置向量变换可表示为原顶点位置向量与P、S、N的点积:
平移、缩放变换比较简单,这里给出旋转变换,设与x轴、y轴、z轴的夹角分别为θ、φ、γ,则变换矩阵可表示为:
每个顶点的线性变换由VertextShader执行计算,完成一个三维图像的网格结构。
操作过程中,元件与数据线在移动过程中,摄像机必须实时跟踪,同时为了能扩大视野,本文将摄像机设于主机箱上方,其Up矢量指向下方,如图3所示,在元件或数据线对象移动过程中,通过右手准则,修改Up矢量,以便始终指向元器件等对象的Dir矢量[13]。并通过引用元件或数据线对象的当前位置来实现摄像机的这一行为,确定元件或数据线视主板为相对位置的参考物。
三维模型顶点在世界坐标系到透视平面的坐标的转换,实现了三维坐标系到二维坐标系的坐标,见图4。基本的透视投影模型是由视点和视平面,视点可以认为是用户的位置,这里的透视平面可认为是电脑屏幕,假定投影中心在Z轴-d处,即观察者与屏幕的距离,那么模型的一点V(x,y,z)的透视投影V'(x',y',z')的坐标,根据相似三角形对应边等比例关系有:
则转换矩阵的形式如下:
图3 控制摄像机的方位
图4 坐标系的转换
仅使用网格模型和层级结构信息只能绘制线框网格,为了渲染得到完整的模型,需要对每个顶点进行纹理采样,对模型进行片段着色或纹理贴图渲染。每个顶点颜色使用4个8位段来表示RGB和Alpha,保存在AGAL(Adobe Graphics Assembly Language)寄存器,各顶点的颜色值经过线性插值计算输出为图元中各种像素的颜色值[14]。
为了使整个场景有立体感,需要处理好光照与叠交画面。本文将各种光照信息,如物体顶点、法线、材质参数和材质反射颜色存储到GPU缓存,逐像素遍历这些信息,计算光照像素信息。由于纹理只能按照颜色格式存储,因此处理后的信息将按照RGBA四个通道进行保存。为了节省纹理存储空间,同时操作远近物体像素的遮挡,GPU用深度缓存顶点深度信息(Depth)和摄像机的远近截面计算顶点位置信息,如图5所示。
图5 顶点位置和深度与纹理存储关系
技能操作时,涉及元器件与插槽和主板的碰撞处理,为了防止硬件穿越虚拟设备或环境而出现不合常理的情况,需要通过给主板表面设置为floor对象,控制元器件的移动。但只是在x与z轴上的2d运动,并不能随着floor对象进行y轴上的变化,为了控制元器件调整角度,垂直插入插槽,在主板表面新增一个对象floor1,floor1为主板去掉其他的控件,仅剩各插槽对象mem_slot,video_slot,audio_slot 等。 设 置 类RayCollision用于检测碰撞效果,它的作用相当于从器件等对象身上向下射出一道光线,与floor1对象发生碰撞,得到碰撞点的mesh、法线、位置等信息,这个位置信息用来设定器件等对象在Y轴上的位置。另外为了避免器件对象在对碰撞做出响应时因为一些角度而“卡死”,设置类ObjectSlider调节radius参数实现器件对象对碰撞对象的相对滑动,保证操作过程顺利完成。
本文基于可编程GPU,采用3DMAX进行平台场景、机箱、元器件建模,采用Stage3D进行三维交互设计与虚拟实训平台的开发。该平台用于计算机硬件组装与调试维护过程的仿真实验,并可在实验过程中动态修改参数以模拟计算机系统不同的故障状态,给出相应的维护方法,具有高交互性和强烈沉静感。边学边做的开放式学习平台,激发了学生的学习动机,可有效提高学生的动手实践能力,并实现了教学资源共享,解决了传统实验教学资源不足、设备陈旧、器件耗损大等问题。
本文针对计算机组装与维护三维实验操作模型数据计算量大和运算速度慢的问题,提出了基于GPU[15]加速模型绘制、渲染的方法,成功建立了三维交互式计算机组装与维护实训平台,完成了装机、故障检测、维修等过程的仿真和有效的监控评价功能,在构建过程中引入智能专家库,采用Stage3D和AGAL很好的解决了智能交互过程中信息的实时传递,而模型数据的流化处理更是实现了虚拟实训平台的扩充性,具有较高的推广性,实用性好。
[1]邓来胜.基于三网融合建设高校开放性实验室的探讨[J].电脑与电信,2011(5):47-49.
Deng Lai-sheng.Exploration on“Triple Play”Based Open Labs Construction of University[J].Computer & Telecommunication,2011(5):47-49.
[2]Christoppher D Gerger,Joerg Stoecklein,Florian Klompmaker,et al.Development of an augmented reality game by extendinga 3D authoring system[J].ACM International Conference Proceedings Series,2007,203:5527-5530.
[3]Sankar Jayaram.Virtual assembly using virtual reality techniques[J].Computer-Aided Design(S0010-4485),1997,29(8):575-584.
[4]李 赟,顾 容.桌面型虚拟现实技术在计算机硬件组装训练中的应用必要性和可行性论述[J].教师,2009,50(20):101-102.
Li Yun,Gu Rong.The Necessity and Feasibility of Application on the Computer Hardware Assembly Training of Desktop Virtual Reality Technology[J].Teacher,2009,50(20):101-102.
[5]陈尹立,彭诗力.智能虚拟实验平台的设计与研究——以计算机组装与维修课程为例[J].实验技术与管理,2010,27(7):77-79,83.
Chen Yinli,Peng Shili.Design and research of an intelligent virtual experimental platform [J]. Experimental Technology and Management,2012,27(7):77-79,83.
[6]卿立兴.计算机组装实验PCVR系统的构建[J].内江师范学院学报,2010,25(12):49-52.
QING Li-xing.The Construction of Virtual Computer Assembly Experiment System Based on the Virtools[J].Journal of Neijiang Normal University,2010,25(12):49-52.
[7]Yue T X,Chen C F,Li B L.An adaptive method of high accuracy surface modeling and its application to simulating elevation surfaces[J].Transactions in GIS,2010,14(5):615-630.
[8]吴振华.网络化高清非编实验室的建设[J].实验室研究与探索,2011,30(9):181-184.
WU Zhen-hua.HD NLE Laboratory Network Construction[J].Research and Exploration in Laboratory,2011,30(9):181-184.
[9]Stage3D介绍[OL].2013.3.http://www.adobe.com/cn/devnet/flashplayer/stage3d.html.
[10]Todd Yard.Foundation ActionScript3.0 Image Effects[M].New York:Apress Media LLC,2009:154-161.
[11]闫长青,岳天祥.GPU加速的高精度数字地面模型建模方法[J].计算机工程与应用,2012,48(22):22-27.
YAN Chang-qing,YUE Tian-xiang.GPU accelerated high accuracy surface modeling methods for DEM Modelling[J].Computer Engineering and Application,2012,48(22):22-27.
[12]罗 涛.三维网格模型的多尺度几何处理算法研究[D].北京:北京大学信号与信息管理学院,2012.
[13]陈旭亮.实时渲染中3D虚拟摄像机的研究与应用[D].镇江:江苏科技大学模式识别与智能系统,2012.
[14]胡 蓉,张东宁,朱栗华.ActionScript 3.0游戏编程(第2版)[M].北京:人民邮电出版社,2012.
[15]李顶峰,孔国梁.基于OpenGL的工程三维仿真系统通用开发平台[J].铁道勘察,2012,38(5):1-5.
LI Ding-feng KONG Guo-liang.Common Development Platform of Engineering 3D Simulation System Based on OpenGL[J].Railway Investigation and Surveying,2012,38(5):1-5.