, , ,
(西安工业大学机电工程学院,陕西 西安 710021)
机械产品的拆装展示能有效提高工程人员对产品结构设计和装配设计的能力,同时能够帮助维修人员提高维修设备的技能,也能够帮助机械专业学生更好地理解机械原理,提高他们对机械结构的理解。但是,目前的机械产品的拆装展示仅局限于二维图像,只能使观看者有一种抽象的感性认知,如果缺乏机械的基础知识,会让观看者错误理解机械产品结构,另一方面,观看者不能主动调整观看视角,只能被动接受知识,缺乏主观能动性,学习效果达不到预期。结合虚拟现实技术的机械产品拆装系统可以很好地解决上述问题。
近几年,虚拟现实技术发展迅速,在军事、航空、教育和影视等方面发挥着重要作用。将虚拟现实技术应用机械产品拆装展示,有利于产品的设计、装配集成化和智能化。目前,何高奇等[1-2]利用虚拟现实技术进行了能源站和电力作业交互技术的研究,使工程现场管理更加科学、方便。王腼等[3-4]利用虚拟现实技术设计了展示与交互的教学系统和特种设备教学系统,对新的教学模式进行了探讨。郭晓明等[5]基于虚拟现实技术和智能手机实现了EAST装置的虚拟现实漫游,起到设备维修功能。李为等[6-7]利用虚拟现实技术进行了产品虚拟展示平台的研究与开发,提出了一种交互式的产品虚拟展示平台。刘春芳等[8]基于OSG设计了机械产品虚拟拆装展示系统,针对采用Pro/Engineer软件设计的产品数字化装配模型,实现了具有真实感的虚拟拆装。
以上介绍的系统都是搭载在PC机上,必须在特定的实验室进行,受到空间的限制。针对此问题,提出一种基于手机终端的虚拟拆装展示系统,更加体现出智能化和便捷性,使用者只需携带手机和简易的手机盒子便可随时观看。利用Unity3D引擎,将机械产品拆装进行三维可视化,调用手机的陀螺仪传感器对头部运动进行跟踪,通过外部设备的输入,使系统具有简洁友好的交互性能,设定双目立体视觉,使观看者能有良好的沉浸感,提高对机械产品学习的效率。
机械产品拆装展示系统是在手机终端上运行,设计系统时考虑市场上手机的一般性能,要求系统可以实现虚拟拆装的沉浸感和良好的人机交互性能,且交互必须是动态的[9-10],并在手机上流畅运行,同时,在构建系统时,以减少开发周期和绿色设计为原则,将系统组织结构分为3个模块:功能模块、模型简化模块和虚拟环境管理与渲染模块,其系统结构如图1所示。
a.模型简化模块。机械产品模型都是通过专业的三维绘图软件(SolidWorks,Pro/E,CATIA和UG)绘制而成,这类软件在零件的生成过程中会生成大量的几何顶点,而这些特征在导入3DMax时,会转化成FBX格式,导致模型面数大量增加,在Unity3D中模型的面数多,严重消耗内存,导致场景加载速度变慢,所以必须要进行模型简化。在3DMax中可以通过贴图、删除模型之间的重叠面和删除模型底部看不见的面等方法减少模型面数。
图1 系统组织结构
b.功能模块。其是系统的关键模块,实现拆装路径的生成,对三维模型的拆装先后顺序进行逻辑判断,使模型拆装顺序符合机械工艺准则;调用手机陀螺传感器,控制场景内相机的位姿;根据不同的手机盒子,选取双目立体视觉抗畸变类型;在交互外设适配及控制上,给出一种通用的适配方式,可以用类型不同的蓝牙手柄进行交互;以第一人称视角进行角色控制,用户可以在模型的拆装过程中主动调整观看视角,使沉浸感加强。
c.虚拟场景管理与渲染模块。该模块进行场景的制作、场景渲染、场景管理和场景之间的切换。许多机械产品拆装展示的场景都是可以通用的,对虚拟场景建立管理机制,在展示类型相同的机械产品时,可以节约资源,直接调用场景资源以加快系统运行速度。
基于Unity3D引擎进行开发,Unity3D是一款强大的虚拟现实开发引擎,具有良好的渲染能力,提供学习的源程序,可通过脚本语言实现功能需求,简单易学,Unity3D制作的场景可以发布到PC,Mac,iOS和Android等平台。结合Unity开发特点和系统模块划分,基于手机终端的机械产品拆装展示系统的设计流程如图2所示。
首先,在模型简化模块将三维模型简化并转化格式,然后进入到功能模块,逐步实现各设计功能,最后,在虚拟场景管理与渲染模块,将做好的素材进行统一管理,方便系统应用于不同的机械产品对象。系统开发的具体步骤如下:
图2 系统设计
a.3DMax中简化好的模型以FBX格式导入Hierarchy中,在Scene中构建好场景并利用材质球进行渲染。
b.将制作好的VRcamera.Prefab导入Hierarchy,其包含了VR Camera Left,VR Camera Left,Main Camera和Gaze Pointer4个子物体,还有双目立体视觉控制脚本和手机陀螺仪控制脚本,VR Camera Left和VR Camera Left摄像机实现双目立体视觉,Main Camera抓捕Canvas事件,Gaze Pointer将头部跟踪可视化。
c.根据模型拆装路径规划信息,生成产品拆装路径。
d.利用Unity自带的UGUI制作World Space交互菜单,在Canvas上挂载System Input Manager脚本和Gaze Input Manager脚本,分别用于管理外部设备输入信息和凝视响应事件。在Button的On Click函数中加入拆装逻辑判断,使机械产品的拆装顺序符合机械工艺要求。
e.IntegrateInputManager.Prefab导入Hierarchy,用于侦听外设状态,接收数据。
f.FirstCharacterControl.Prefab导入Hierarchy,控制角色自主漫游、跳跃、惯性、碰撞检测等。
g.进行场景管理和场景切换,保存好可重复利用的资源,提高系统运行效率,最后在Unity中打包生成Apk/Ipa。
机械产品的拆装先后顺序必须符合工艺要求,在设置交互按钮时,每个按钮触发不同的拆装路径,并执行相应的动画。触发的方式是凝视点对准按钮,使按钮被选中,然后按下手柄按键,即可触发Button点击事件,执行拆装。如不加逻辑判断,用户在自主拆装机械产品时,拆装的先后顺序可能不会符合工艺要求,这就起不到本系统拆装展示的效果,所以必须进行拆装逻辑判断。
本系统采用读写配置文件的方式,在执行拆装动画之前加上逻辑判断,按钮的触发事件就可按照系统设定好先后顺序执行,即只有第一步拆装动画执行,第二拆装动画才能执行。本系统是要运行在手机终端上的,在系统的开发测试阶段需要一种在PC机和手机上都能读写配置文件的路径,Application.persistentDataPath可读取PC机和手机上的配置文件,在PC机上查看存储配置文件的地址为:C//用户//计算机名//AppDaTa//LocalLow。拆装逻辑判断流程如图3所示。
图3 拆装逻辑判断
目前,市场上有许多类型的手机盒子,如谷歌Cardboard、聚众创科技Vrbox/Vrminni、暴风魔镜、小宅科技和小鸟看看科技Picol Cop等,每种手机盒子镜片畸变都不一样,为使用户获得更好的沉浸感,手机屏幕输出的图像就需要有抗畸变效果。抗畸变是为了适用于对抗镜片畸变、色散而必须在显示图像中做特殊的图形处理和颜色处理的过程,所有畸变函数的调用必须在Open GL线程中进行。
为满足市场需要,符合绿色设计的原则,设计了适用不同手机盒子的镜片抗畸变效果,不同的抗畸变效果如图4所示。实现的原理是利用C#语言继承、封装的特点,通过不同脚本之间调用,访问json文本中glass列表,获取glasseskeylist,然后做出双目视觉改变,数据访问流程如图5所示。
图4 抗畸变效果
图5 数据访问
本系统具有简洁友好的人机交互性能,通过头部跟踪和蓝牙手柄输入,可现实选取World Space交互菜单的Button、控制角色移动、对焦Canvas菜单和退出应用功能,为用户的沉浸感和自主学习机械产品提供了保障,Unity中交互框架如图6所示。
图6 Unity中交互框架
IntegrateInputManager.Prefab侦听外设状态,接收数据,其功能包括设备连接检测、设备断开检测、系统蓝牙开关检测、设备按键按下响应检测、设备按键按下帧响应检测、设备按键抬起响应检测和设备按键长按响应检测等,可以和Unity自带的UI系统进行数据交互。在Canvas挂载上输入管理脚本SystemInputManager.cs,响应手柄输入事件,Canvas中的EventSystem加上GazeInputModule.cs,响应头部跟踪凝视响应。这种交互框架的设计,系统设计人员可以随意设定手柄上的按键功能,减少系统开发的工作量,也为系统维护提供了方便。
基于Unity强大的脚本引擎和可视化开发环境,将Monodevelop作为开发平台,C#作为编程语言,实现了各设计模块的功能。以二级减速器作为机械产品拆装对象,对该系统进行分析与测试。二级减速器展示子系统中,按照机械工艺要求,拆卸展示设置螺栓拆卸、上箱盖拆卸、齿轮啮合、主动轴拆卸和从动轴拆卸5个拆卸路径触发按钮,装配展示设置从动轴装配、主轴装配、上箱盖装配和螺栓装配,通过手柄按键信息输入可按顺序对按钮进行触发。模型简化模块和场景切换模块测试,如图7所示。通过选择“拆卸”、“装配”和“返回主菜单”可以分别进入到减速器拆卸展示、装配展示和返回主界面场景,模型简化模块将齿轮、轴等几何顶点数多的零件模型简化,场景切换时间短,系统运行流畅;图8是功能模块测试,通过手机旋转,可观看到不同角度的场景,如图8a所示。用手柄摇杆控制角色运动,可以在场景中实现漫游,全方位观察产品拆装展示,如图8b所示。将凝视点对准菜单按钮,按钮处在红色选中状态,根据拆装逻辑判断,按下手柄上的按键,即可触发拆装动画,如图8c所示。
测试结果表明,系统可以在手机上流畅运行,各模块功能实现正常,满足机械产品在装配设计、结构设计和维修培训时对虚拟拆装的要求,验证了系统的可行性。
图7 模型简化模块和场景切换模块测试
图8 功能模块测试
基于Unity3D的机械产品拆装系统在手机终端的实现,打破了传统的机械产品拆装展示方法,用户可以不受时间、空间的约束随时学习机械产品的专业知识,具有便捷性。通过对拆装逻辑判断、双目视觉抗畸变类型选取和交互外设适配及控制等问题的处理,给予用户更佳的体验效果。系统简洁友好的人机交互功能,用户可以自主对机械产品进行拆装,了解拆装步骤,学习机械结构,切实为工程人员提供在装配设计、结构设计时的帮助,给虚拟现实技术应用在机械产品结构学习方面提供实例,具有一定参考价值。
[1] 何高奇,杨凯林,金袆,等.基于Unity3D的能源站交互展示技术研究[J].系统仿真学报,2016,28(10):2626-2631.
[2] 陈奇明,罗滇生,胡强,等.基于虚拟现实技术的电力作业仿真培训系统[J].计算机工程与应用,2013,49(11):232-236.
[3] 王腼.基于VR展示与交互的教学系统设计与现实[D].上海:上海交通大学,2013.
[4] 傅招国,王天威,倪小鹏,等. 基于Virtools的虚拟现实技术及在特种设备教学中的应用[J].计算机工程与科学,2012,34(6):97-100.
[5] 郭晓明.基于VR眼镜和智能手机的虚拟现实系统[D].西安:西安电子科技大学,2015.
[6] 李为.产品虚拟展示平台的研究与开发[D].北京:北京邮电大学,2014.
[7] 李晓玲,陆长德,李小丽.基于网络的交互式虚拟展示技术研究[J].计算机工程与应用,2007,43(3):90-93.
[8] 刘春芳,程熙,谢利,等.基于OSG的机械产品拆装展示系统的设计[J].信息技术,2016(10):48-51.
[9] Anderson B,McGrath A.Strategies for mutability Virtual environments[C]//Virtual Worlds on the Internet. Los A lamitos,Calif:IEEE CS Press,1988:123-134 .
[10] 黄薇. Unity引擎方式下3D对战型游戏的网络设计与开发[J].现代电子技术,2015,38(23):118-121.