机械基础虚拟实验系统的研究与开发

2018-04-11 03:41冯立艳关铁成何世伟李宗岩
实验室研究与探索 2018年1期
关键词:减速器虚拟现实实验教学

冯立艳, 关铁成, 何世伟, 李宗岩

(华北理工大学 机械工程学院,河北 唐山 063210 )

0 引 言

随着高校教育体制的深入改革,招生人数的不断扩大,实验室的设备及规模已经不能满足日益增长的教学需要[1]。伴随计算机技术、信息技术、网络技术、虚拟现实技术的发展,虚拟实验受到了广泛重视,同时网络教育作为一种新兴的教育形式得到了快速发展[2-3]。因机械设备内部结构复杂,反复拆装易造成零件损坏、人员受伤等,故开发机械学科的虚拟实验系统有着广阔的市场前景[4-5]。

国内有些学者对机械学科的虚拟实验平台做了研究与开发。吴青凤等[6]开发了基于VB的减速器虚拟拆装平台,弥补了传统减速器拆装实验的不足,但该平台拆装演示部分,依靠调用SolidWorks保存的AVI格式视频,学生无法任意控制拆装演示的速度和观察角度。王世超[7]提出了在 HTML5 标准下建立水轮机虚拟装配系统,但该系统的拆装约束存在一些缺陷。邬宗鹏[8]基于Virtools 软件开发减速器虚拟拆装实验教学平台,但拆装操作性较差。

本文以传统的真实实验为依据,将三维建模软件SolidWorks、编程语言C#、虚拟现实开发引擎Unity3D有机集成,采用虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)技术,开发了形象逼真、便于操作的机械基础虚拟实验平台,达到了虚实结合、以虚促实的预期目的,彻底解决了实验设备短缺,实验场地和实验时间受限等问题。

1 机械基础虚拟实验平台总体框架

1.1 虚拟实验平台的总体框架及开发流程

图1为机械基础虚拟实验平台的总体框架及开发流程。由于Unity3D软件平台不具备构建复杂几何模型的功能,故采用三维建模工具 SolidWorks进行几何建模,然后将几何模型导入 3D Max中,利用3D Max进行贴图、烘培和材质渲染,构建逼真感强的模型,将模型保存成 FBX 格式导入到 Unity 3D 的资源文件夹 Assets中。在Unity3D虚拟现实平台中,需要根据交互和运动控制的需求,构建虚拟模型的层次数据结构,对每个模型的父子关系进行设定,构建复合逻辑的模型树层次关系。实验的具体操作和场景需通过C#编程来实现。

图1虚拟实验系统的整体框架图

目前,该平台包括减速器(一级圆柱齿轮减速器、二级展开式圆柱齿轮减速器、二级同轴式圆柱齿轮减速器、蜗轮蜗杆减速器、圆锥圆柱齿轮减速器共5种)的虚拟装拆、发动机的虚拟装拆、平面连杆机构的创意设计及虚拟仿真等。每个虚拟实验均分为认知和实战两部分。认知部分用于引导学生自主学习,以掌握实验的具体操作方法,为实战做准备。包括实验目的、注意事项、实验指导等。

1.2 开发软件的选择及接口

当今比较流行的虚拟仿真教学开发软件主要有Virtools、Quest3D、LabVIEW、Eon和Unity3D等。虽然前4种也能开发虚拟仿真实验平台,但只能发布成单机版或网页版,而且维护难度较大,应用范围受到极大限制[9]。而Unity3D技术则使用面向对象技术,相对简单的就能够开发出虚拟仿真教学系统,同时该开发引擎还支持Windows、Mac、Wii、iPhone、Android、Web网页等平台[10]。开发者可以任意选择所需要发布的平台,从而实现只需开发一次,就可实现在单机、网页、移动终端及其他平台同时使用的要求[11]。

Unity3D支持的编程语言有JavaScript、C#和Boo。用户可以根据需要选择编程语言,脚本之间可以相互调用[12]。JavaScript是用户端脚本语言,相对Java语言比较简单,编程效率较高;C#是一种面向对象的、运行于.NET Framework之上的高级程序设计语言,符合人的思维习惯,适合编写复杂程序[13-14]。综合考虑,本课题采用C#编程。

Unity3D几乎支持所有主流的3D模型文件格式,例如.FBX、.OBJ等格式,在3D Max、 Maya等软件中制作并导出的模型文件,添加到项目资源文件夹中,Unity3D会自动刷新资源列表,模型就会出现在Assets面板中并供使用[15]。

2 二级斜齿圆柱减速器虚拟装拆实验的关键功能模块实现

2.1 三维模型的构建

二级斜齿圆柱减速器主要包括3类零件,即轴类(高速轴、中间轴、低速轴等)、盘类(齿轮、套筒、封油盘等)和箱体类(箱盖、箱座)[16]。采用SolidWorks,使用拉伸、旋转、挖切和打孔等诸多造型方法构建了准确的各零部件三维模型,其主要部件的三维模型及编号如表1和图2所示。

2.2 约束关系及装拆路径规划

拆卸是装配的反过程,无论是装还是拆,都必须遵循一定的顺序,就如同必须先装上轴承端盖,才能拧上其固定螺钉一样。减速器的装配顺序如图3所示,分别为高速轴组件、中速轴组件、低速轴组件、箱盖组件、箱座组件和总体装配的路径规划图。图中,P表示零部件,A是组件,e是用字符串表示的装配条件。

2.3 虚拟自动拆装功能的实现

为了让初学者提前了解减速器的拆装顺序,需要在虚拟实验平台中实现自动拆装的功能,而Unity 3D引擎外部插件iTween 能方便地实现该功能。它主要是运用数值插值的原理,处理模型从起始点到结束点之间的运动轨迹。如图4(a)所示,为自动拆装场景,通过按钮控制减速器的装配与拆卸,通过摄像机的位置和旋转角度实现多角度观察自动拆装的过程。

表1 零部件名称及编号

(a)高速轴(b)中速轴(c)低速轴(d)总装图

图2 减速器的三维模型

 (d) 低速轴

(f) 总体装配

图3减速器的装配路径

下行为用于实现物体移动的代码:

iTween.MoveTo(GameObject,iTween.Hash("position", Vector3, "time", float1, "delay", float2));

这里,GameObject—执行命令的对象;Vector3—对象运动的目标位置;float1—从原来位置移动到目标位置的时间;float2—开始移动时的延迟时间。

2.4 虚拟拆装场景的设置

虚拟场景主要分为虚拟装配和虚拟拆卸两个场景,拆卸逻辑与约束是装配的逆过程。故只介绍虚拟装配场景设置的技术关键。

在装配场景中进行手动装配时,除了基准零件(图3中,每个拆装路径图的第一个零件为基准零件,分别是P5、P6、P20、P22、P33和A5)外,其余零件都需隐藏。零部件的安装位置靠碰撞器控制。如图4(b)所示,根据轴上零件的位置,给轴添加a、b、c三个椭圆碰撞器,左侧的封油盘和轴承被碰撞器a包围、中间部位的键和大齿轮被碰撞器b包围、右侧的封油盘和轴承被碰撞器c包围,椭圆的尺寸控制着装配时的精准位置,即只有把待装配的零部件放在椭圆尺寸以内时才被认可。跟随鼠标移动的零件,是通过实例化得到的,如图4(c)所示。当主摄像机发出的射线碰到碰撞器上(鼠标点击到碰撞器上),对应的零件则从隐藏模式变成显示模式,跟随鼠标实例化的零件就此消失。

从主摄像机发射出到鼠标点击位置的射线代码为:

Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);

在场景中,必须使实例化的零件,能灵活地跟随鼠标在屏幕上移动。需要将世界坐标转化成屏幕坐标,采取的办法是:在sence视图中添加一个很小Cube,并将其放到坐标为(0,0,0)的位置。其主要代码为:

screenSpace=Camera.main.WorldToScreenPoint(GameObject.transform.position);

CompPos=Camera.main.ScreenToWorldPoint(newVector3(Input.mousePosition.x,Input.mousePosition.y,screenSpace.z));

这里,screenSpace—屏幕坐标;CompPos—世界坐标;GameObject—Cube;

2.5 虚拟装拆编程

从头到尾进行各个零部件的虚拟装配和拆卸,来模拟替代真实的装配或拆卸过程。通过虚拟装拆,不仅观察设备的外部形态,更重要的是分析其内部结构,深入研究其组成和结构特征、配合关系,思考其设计意图。若拆、装顺序不对,则不能往下进行,并弹出错误警示。

如图3所示,e1—e35是装配条件,比如在图3(f)中,A1装配完毕,再装A2需要满足条件e26,才可装配成功。每一次的装配成功都会为相关字符串重新赋值,所赋值也恰巧是下一组的装配条件。保证了装配实验的有序操作。

(a)(b)(c)(d)

图4虚拟实验场景的功能图

2.6 手机二维码及操作

整个零件拆装过程中,菜单栏上方会有对应的二维码图片切换,通过增强现实技术开发的手机APP扫描该二维码,对应的3D零件可在手机屏幕显示,可对其任意旋转,多角度观察,如图4(d)所示。

通过Vuforia官网获取Vuforia SDK和制作Database,并将其导入Unity3D中,将Unity3D中的三维零件与对应的ImageTarget结合,即可发布对应的手机APP,有时手机摄像头扫描图片的时候,会出现摄像头不能准确识别二维码图片,需要开发自动对焦摄像头的脚本文件 ,其脚本的主要代码如下:

CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);

因Unity3D可发布多个平台,所以整个平台也可以在手机上运行,解决了学生异地操作等问题。

3 结 语

把当今最流行的VR技术与AR技术融入到机械基础实验教学中,将SolidWorks、C#、Unity3D有机集成开发的近于真实的虚拟实验系统,提高了学习兴趣和学习主动性,方便异地学习与操作,解决了实验设备短缺,实验场地不足,学生动手操作危险等限制条件,可实现资源共享,有力促进机械原理及机械设计的实验教学。本文详细阐述了开发过程中遇到的关键问题及解决方法、各种软件的集成方法等,这些技术可为开发虚拟实验系统的同仁们提供参考。

参考文献(References):

[1]郑鑫,张晓洁.虚拟实验室立体化教学资源平台建设[J].实验室研究与探索,2014,33(8):109-111.

[2]孙澄宇,许迪琼,汤众.在线虚拟实验在建筑教育中的技术应用方案讨论与效果评估[J].实验室技术与管理,2017,34(1):10-15.

[3]罗晓东,尹立孟,王青峡,等.基于虚拟仿真技术的实验教学平台设计[J].实验室研究与探索,2016,35(4):104-107.

[4]张青,赵洪利,郭庆,等.航空发动机虚拟装配培训实验平台的构建与实现[J].实验室研究与探索,2016,35(5):97-100.

[5]郭芮,蒋明,郑劼恒,等.基于Unity3D的加油车虚拟训练系统设计[J].机械设计,2014,31(3):84-87.

[6]吴青凤,江帆,李东炜.基于VB的减速器拆装虚拟实验系统的开发[J].实验室技术与管理,2014,31(1):104-106.

[7]王世超.基于HTML5的水轮机虚拟装配系统研究[J].煤矿机械,2016,37(3):46-48.

[8]邬宗鹏.Virtools软件在开发减速器虚拟拆装实验教学平台中的应用[J].铜陵学院学报,2015(2):109-110.

[9]赵蔚,段红.虚拟现实软件研究[J].计算机技术与发展,2012,22(2):229-233.

[10]王娜,徐鲁雄.基于Unity3D的计算机网络虚拟实验室建设研究[J].实验室技术与管理,2016,33(9):242-245.

[11]修春华,孙秀娟,苗坡,等.基于Unity3D的虚拟矿山漫游仿真系统设计与实现[J].金属矿山,2015(4):262-266.

[12]王文润,王阳萍,雍玖.基于Unity3d的铁路信号设备虚拟现实系统研究[J].铁道标准设计,2016,60(8):144-146.

[13]季铮,谢予星,王玥.基于 Unity 3D的虚拟测量实验系统[J].测绘通报,2016(10):97-100.

[14]吴亚峰,索依娜.Unity5.X3D游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2016.

[15]杨壹斌,李敏,解鸿文. 基于Unity3D 的桌面式虚拟维修训练系统[J].计算机应用,2016,36(S2):125-128.

[16]冯立艳.机械设计课程设计[M].北京:机械工业出版社,2016.

猜你喜欢
减速器虚拟现实实验教学
小议初中化学演示实验教学
电容器的实验教学
对初中化学实验教学的认识和体会
驼峰第三制动位减速器夹停钩车问题的改进
提高车辆减速器缓解可靠性方案探讨
低密度超音速减速器
REALITY BITES
风口上的虚拟现实
几何体在高中数学实验教学中的应用
虚拟现实技术向科幻小说借灵感