打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于Unity3D的柴油机部件虚拟培训系统研究与实现
? 基于Unity3D的柴油机部件虚拟培训系统研究与实现

基于Unity3D的柴油机部件虚拟培训系统研究与实现

朱乐浩,卫 刚

(同济大学电子信息与工程学院,上海 201804)

摘要:为解决传统的柴油机培训过程中存在的问题,基于Unity3D平台设计了柴油机部件虚拟培训系统。系统通过NGUI(次世代界面)实现界面交互,运用SQLite数据库存储产品信息,利用Unity3D碰撞检测模拟训练。以沪东重机有限公司的柴油机部件为例,运用该系统进行教学培训,结果表明,相比于传统的单一教学方式,学员对虚拟现实教学更有兴趣,学习效率有所提高。

关键词:柴油机;虚拟现实;Unity3D;次世代界面;SQLite

虚拟现实技术(virtual reality,VR)是通过反馈进行人机交互的三维模型仿真技术,它可以逼真地模拟对象在环境中的反馈,使人有一种真实在场的感觉,实现用户的交互感和沉浸感。虚拟培训是虚拟现实的一个重要分支,也是一个新的应用领域[1-2]。虚拟培训是利用虚拟现实技术打造三维环境,以便更好地完成知识的学习,从而解决传统教学培训中的一些难题。如在柴油机的操作培训过程中,如果操作不当,将会造成柴油机零件损坏,甚至产生安全事故,导致学员受伤等。虚拟培训的目标是能够提供给学员真实的培训场景及操作说明,使学员能够较快速地掌握设备的操作流程和规范,避免操作不当导致人员受伤或设备损坏。

虚拟现实技术实现的前提是成功运用3D建模软件对现实世界的物体进行建模。目前,最流行的3D建模软件有AutoCAD、Sketch、3Ds MAX等。交互软件主要有Web 3D系列软件,比如Eon、Unity3D等[3]。本文采用3Ds MAX对柴油机进行建模,以Untiy3D引擎作为平台实现虚拟现实。

Unity3D[4]是一款专业游戏引擎,支持Android、iOS、VR设备等20多种平台,同时支持JavaScript、C#脚本语言。Unity3D使用DirectX、OpenGL和自由的APIs来支持其强大的图形引擎,同时Unity3D内置NVIDIA的PhysX物理引擎,使操作具有较强的逼真感。Unity3D被广泛应用于三维场景开发[5-6]

1 现状与需求

目前国内柴油机相关知识、技能的培训存在诸多问题,如培训方式单一等。在教学方式上,普遍采用传统的教师授课方式,这种方式很难保证培训效果。另外培训内容不能实时更新,随着新装备、新工艺的出现,许多教学讲义已经过时,致使学员学习积极性不够高。在现实场景中,拆装零部件是一件费时费力的事,有些零部件非常沉重不易搬运,学员们不能全方位仔细观测,接受培训的人员如果有问题还需去查阅各种资料,很难保证培训的效果。

虚拟培训可以克服传统培训的缺点,提高学员学习的积极性。柴油机虚拟培训可以满足以下几点需求:柴油机的整体展示;柴油机单个部件的多角度展示;储存、展示与更新教学内容。

2 系统设计

柴油机部件培训系统共有两大功能模块:信息模块和展示模块。信息模块负责显示零部件的名称和属性信息,同时支持对信息的编辑,涉及NGUI(次世代界面)插件界面交互设计,数据库存储和碰撞检测技术。NGUI[7]是严格遵循“KISS( keep it simple,stupid)原则”用C#语言编写的Unity(适用于专业版和免费版)插件,它提供了强大的UI系统和事件通知框架,可以通过添加相应行为给控件来增加控件功能,非常方便,对于初学者来说容易上手,而且NGUI插件支持事件系统,与Android、iOS兼容,方便拓展[8]

系统采用SQLite数据库。SQLite 是一个开源的嵌入式关系数据库,是具有自包容、零配置、支持事务优点的SQL数据库引擎, 其特点是高度便携、使用方便、结构紧凑、高效可靠[9]

展示模块负责在三维场景中对单个零部件进行全方位展示,实现单个部件的多角度展示。

系统的整体架构如图 1所示。用户通过输入输出设备操作Unity3D引擎软件,选中要操作的部件并进入相应的模块进行学习。

图1 系统整体架构

3 系统实现

3.1 模型预处理

系统使用3Ds MAX[10]作为格式转换辅助工具,将模型格式转化成通用的模型格式FBX[11]。FBX格式有很多优点,FBX格式的文件可以保存模型材质、动画等信息,同时FBX格式作为中间格式支持跨平台应用,因此被许多建模软件和游戏引擎支持。通过3Ds MAX转换成FBX格式,再把模型导入到Unity3D中是比较好的方案。

以沪东重机有限公司柴油机某部件为例,其模型如图 2所示。转换后的柴油机部件模型中,部件层次属性非常多,它们或代表单个零件,或代表零件上的属性。这些层次在原本的机械模型中可能有其特定的实际意义,但是在Unity3D中若要寻找该零件时,由于该零件隐藏在很深的层级,需要遍历每一层,给零件的寻找造成困难,而且Unity3D对模型和贴图有特殊要求[12],很多层次属性在Unity3D中并没有实际意义,因此需要对冗余的层次进行删除。层次嵌套如图 3所示。

有些层次在模型转换过程丢失了Mesh Render 属性(Mesh Render用作组件的网格渲染),而Uni-ty3D需要带有Mesh Render属性的层才能识别部件中的每个零件实体,因此需要在对应的层次上手动添加此属性,便于后面对零件的进一步操作。

图2 部件模型

图3 模型层次嵌套

在对零件的层次进行整理后得如到图 4所示的层次关系。

图4 处理后的层次

3.2 信息模块

为方便用户多角度观测模型,将由两部相机分别通过不同的视角来渲染柴油机某部件的主视图和侧视图(图 5),主视图或侧视图的右下角有一个小窗口显示对应的另一个视图(侧视图或主视图),用户可以通过按键1,2来切换视图。以按键1为例,相机切换的核心代码如下:

//按键1

if (Input.GetKey(KeyCode.Alpha1)){

//绘制相机2渲染图的位置

ca2.rect = new Rect(0.8f, 0.0f, 0.2f, 0.2f);

//绘制相机1渲染图的位置

ca1.rect = new Rect(0, 0, 1, 1);

//设置相机1的渲染队列深度

ca1.depth = 0;

//设置相机2的渲染队列深度

ca2.depth = 1;

}

图5 柴油机某部件主视图和侧视图

为了方便用户直观地看到选中的零部件,当鼠标移动到该零部件时,改变零部件颜色并对零部件进行高亮显示。

若用户进一步单击鼠标右键,将弹出菜单,通过菜单可以显示存储在数据库中的部件属性数据,还能分别进入部件单独显示和属性显示两个模块(图 6)。

图6 高亮显示和右键菜单

系统使用碰撞检测技术来识别用户是否点击了某个零部件。碰撞可以分为碰撞检测和碰撞响应,在Unity3D中碰撞检测是为了判断两个加了碰撞器的刚性物体是否发生了碰撞。碰撞响应是收集碰撞时的反馈信息以及做出现实世界中的物理反应[13-14],比如碰撞后两物体弹开。

碰撞检测方法在Unity3D中有碰撞器检测和触发器检测两种方法。碰撞器会产生碰撞的物理效果,而触发器则不会。触发器更多用于判断两个物体是否接触或者某物体是否进入某个区域[15],比如人靠近门的时候,触发器使门自动打开。本系统采用碰撞器来保证碰撞检测的实时性和准确性。

为解决碰撞干涉问题,对柴油机部件进行分离(图 5),并对每个部件添加合适的碰撞器。在Unity3D中存在多种碰撞器,常用的有盒碰撞器、胶囊碰撞器、球碰撞器、网格碰撞器[16]。本系统针对不同形状的零件模型,采用不同的碰撞器,如图 7所示,图中灰色线框为碰撞器形状。

图7 不同的碰撞器

为了判断部件间是否产生碰撞,采用射线方式检测是否有碰撞。本系统中射线从鼠标点击位置发出,当与附着碰撞器的物体碰撞时停止发射。Unity3D中的Physics.Raycast 函数可以记录被射线射到的部件名称,根据获取到的部件名称搜索数据库中该名称对应的数据。碰撞检测的核心代码如下:

//发出射线判断是否与碰撞器发生碰撞,hit变量存储被碰撞物体信息

if(Physics.Raycast(clickRay,out hit,Mathf.Infinity)){

//判断是否点击鼠标右键

if (Input.GetMouseButtonDown(1)){

//将右键菜单显示

menu.SetActive(true);

//改变右键菜单的显示位置

menu.transform.position=Input.mousePosition + offset;

//存储碰撞器的名称,便于数据库查询componentName = hit.collider.name; }}

当用户点击“部件属性”菜单时,可以弹出相应模型信息界面。本系统的界面由NGUI插件制作。模型信息界面显示部件名称和属性。利用NGUI插件可以触发按钮的相应状态,点击“确定”按钮返回原场景,点击“编辑”按钮将弹出零件编辑界面,如图 8所示。在零件编辑界面,用户可编辑矩形框中的文字,点击“提交”按钮,可将文字保存到对应的数据库条目中。

图8 信息显示和编辑界面

右键点击“部件属性”(图 6)进入NGUI界面,查询和更新数据库的流程如图 9所示。

图9 NGUI展示与编辑流程图

图形界面中的信息都存储在如图10所示的表中。表中的“Alias”字段对应模型中部件名称,根据射线碰撞获得的信息在“Alias”字段中查找相应的部件信息。Name字段对应部件的真实名称,Property对应部件属性。

图10 部件信息表

3.3 三维场景交互实现

当用户选择菜单中的“单独显示”按钮,将进入零部件的单独显示场景。该场景包括下拉列表和零件两部分,如图 11所示。下拉列表中的选项是零件的名称,“return”表示返回查看整体模型。

图11 展示场景

点击其中某一个选项,将单独显示该零部件,选中零件的同时按X键,零件将沿X轴旋转;同样,按Y,Z键将分别沿着Y,Z轴旋转,如图 12所示。

以零件沿Z轴旋转为例,主要代码如下:

//设置旋转速度

y=RoatedSpeed*Time.deltaTime;

//判断是否按下Z键 if(roate&&Input.GetKeyDown(KeyCode.Z)){

//沿着自身Z轴旋转

gameObject.transform.Rotate(new Vector3(0, 0, y),Space.Self);

}

图12 零件旋转示意图

4 结束语

本系统借助Unity3D平台将虚拟现实技术运用于柴油机的教学培训中,利用不同碰撞器解决碰撞检测中的干涉问题;通过NGUI交互界面展示部件具体信息,运用SQLite数据库存储产品信息,利用NGUI更新信息,解决教学内容过时的问题;用三维场景交互全方位展示部件结构,给用户营造了一种沉浸感,解决了传统教学培训刻板、单调的缺点,激发了学员的学习兴趣。基于Unity3D模型提供的交互功能,提供给用户更加安全的学习环境,使学员全方位观测部件细节,实现真实教学环境难以实现的教学功能。随着虚拟现实技术的发展,Unity3D可满足新时代工业产品的展示需求,将成为工业产品虚拟展示的主要技术手段。

参考文献:

[1] 宿春慧, 杨方廷, 涂颖.基于数据手套虚拟训练系统的研究与实现[J].系统仿真学报, 2009,21(1): 189-192.

[2] 石培科, 高明, 黄罡.混凝土泵车虚拟培训系统[J].工程机械, 2010, 41(1):1-3.

[3] 吴景, 赵运生, 黄海峰, 等.基于 Unity3D 的多模块虚拟系统的设计与实现[J].机械工程与自动化, 2015 (6): 59-61.

[4] 王星捷, 李春花.基于 Unity3D 平台的三维虚拟城市研究与应用[J].计算机技术与发展, 2013, 23(4): 241-244.

[5] HONG W T,LEE P S.Mesh based construction of flat-top partition of unity functions[J].Applied Mathematics and Computation, 2013, 219(16): 8687-8704.

[6] 倪乐波, 戚鹏, 遇丽娜, 等.Unity3D 产品虚拟展示技术的研究与应用[J].数字技术与应用, 2010(9): 54-55.

[7] XIE J.Research on key technologies base Unity3D game engine[C]// 2012 7th International Conference on Computer Science & Education.Melbourne:ICCSE, 2012:695-699.

[8] 舒中义.基于 Unity3D技术的三维数字校园系统研究[J].科协论坛, 2013(12): 80-81.

[9] 沈美, 于翔.基于 SQLite 数据库的安卓日程管理系统的设计与开发[J].电子技术与软件工程, 2014(23): 216-217.

[10] 刘航, 王积忠, 王春水.虚拟校园三维仿真系统关键技术研究[J].计算机工程与设计, 2007, 28(12): 2934-2936.

[11] 邱建松.基于 Unity3D 的实时虚拟仿真系统的研究与实现[J].电子制作, 2012(12): 11-12.

[12] 蒙印, 林宗坚, 李成名.精细 3 维城市建模初探[J].测绘通报, 2004(12): 17-20.

[13] MOORE M, WILHELMS J.Collision detection and response for computer animation[J].Acm Siggraph Computer Graphics, 1988, 22(4):289-298.

[14] BARAFF D.Interactive simulation of solid rigid bodies[J].Computer Graphics and Applications, IEEE, 1995,15(3):63-75.

[15] 欧阳攀, 李强, 卢秀慧.基于 Unity3D 的虚拟校园开发研究与实现[J].现代电子技术, 2013, 36(4):19-22.

[16] 郑立国, 王栋柱, 罗江林, 等.基于 Unity3D 的虚拟校园漫游系统[J].电子技术与软件工程, 2015(1):107-108.

Research on diesel simulation training system with Unity3D

ZHU Lehao,WEI Gang

(CAD Center of Tongji University, Shanghai,201804,China)

Abstract:In order to solve the boredom and safety problems that exists in traditional diesel training, it designs a system which simulates training process with Unity3D.Appling NGUI to achieve UI interaction,it makes use of Unity3D to detect collision and incorporated SQLite to store teaching contents.The sample is from Hudong heavy machinery company in the experiment.This system provides a new way for training.Improves learners interesting in virtual reality education and learning efficiency.

Key words:diesel; virtual reality; Unity3D;NGUI ; SQLite

DOI:10.3969/j.issn.2095-509X.2016.10.020

收稿日期:2016-07-05

基金项目:上海市科委科研计划资助项目(14DZ1100500)

作者简介:朱乐浩(1991—),男,浙江海盐人,同济大学硕士研究生,主要研究领域为虚拟现实、图像处理。

中图分类号:TP391.9

文献标志码:A

文章编号:2095-509X(2016)10-0092-05

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
整车开发流程第四章:电子虚拟样车阶段
unity3d学习笔记(十)NGUI制作中文字体
Unity UGUI NGUI 模型 粒子特效 三者之间 渲染层级设置
EasyAR一课一练|AR动物园
unity碰撞发生的条件以及检测
unity 3d中NGUI显示清晰中文字体
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服