APP下载

VR技术在化工过程专业实验教学中的应用*

2020-06-19胡柏松王德武张少峰白玉石

广州化工 2020年11期
关键词:外压调用容器

胡柏松,李 白,张 伟,王德武,张少峰,白玉石

(1 河北工业大学化工学院,天津 300130;2 中建电子信息技术有限公司,北京 100123)

化工设备失效形式多种多样,包括变形失效、断裂失效、腐蚀失效、磨损失效及失稳失效等。其中,外压容器失稳失效是最为常见失效形式之一,针对该失效形式,在高等院校的过程专业实验中会设置外压容器失稳实验,来满足实验教学的需要。而随着高等教育发展和专业建设的步伐加快,这些化工实验设备更新造价较高,教学资源相对不足,无法满足学生需求[1]。同时实验过程持续时间较短,不易理解。针对上述问题,建设虚拟实验室,是一个有效又经济的解决方法[2]。VR技术广泛应用于高校实验教学当中,可解决教学资源相对不足的问题[3-7]。本文以外压容器失稳实验为研究对象,以真实实验数据为依据,开发了一个虚拟实验系统,模拟试件在外压下稳定性受到破坏而发生状态变化。该系统以Unity 3D为开发引擎,3Dmaxs为建模工具,加以Photoshop、Soildworks等辅助工具。设计目标是学生可以通过该系统对外压容器失稳的实验装置、实验流程、内部布局和功能有全面、直观的了解;更深入地掌握实验过程中化工设备结构参数对外压容器设备形态变化及临界压力等。

Unity 3D平台是由Unity Technologies公司开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。其中Virtual Reality Toolkit(简称VRTK),为Unity 3D的高效VR工具包,其涵盖了许多常见解决方案,如虚拟空间内的运动、抓取和使用对象等交互、通过指针或触摸与Unity 3D的UI元素交互、虚拟空间中的刚体物理效应、2D和3D控制等。在VRTK基础上添加Steam VR插件,进行虚拟现实场景的建立。以射线碰撞物体的碰撞点来当作鼠标指针,以完成和UI交互的目的。这些均为VR技术在化工过程专业实验教学上的应用提供了有利的技术支持。

1 基于VR系统的实验室设计

化工过程虚拟专业实验室体系构建如图1所示。通过模型建立、状态管理、玩家行为、进程管理,汇集到预制场景,最终完成虚拟平台建立。

图1 化工过程虚拟实验室开发平台总流程Fig.1 The process of the chemical process virtual laboratory development platform

1.1 化工设备建模

化工设备建模流程如图2所示。设备模型、复杂材质、骨骼动画均在三维建模软件(Soildworks、3ds Max)中制作,将材质附加在模型文件上,导入引擎中,得到设备模型,设备模型加以交互操作的组件、脚本等组成一个预制体。

以化工装置中罐体为例,整个设备模型在一个空的GameObject下,设备的每个零部件,均可作为空GameObject的子物体。而零部件的设备对象包括:①刚体组件,提供力学基础,处理力学响应;②碰撞组件,可处理碰撞;③着色器材质。而模型是基于以下方法:①基本生命周期方法;②碰撞方法;③VRTK的交换方法。预制体GameObject的属性包括:刚体组件、力学计算、与力学相关的处理响应等。

图2 化工设备建模流程Fig.2 Chemical equipment modeling process

图3 外压容器失稳实验装置模型Fig.3 Model of experimental device for instability of external pressure vessel

外压容器失稳装置模型如图3所示,其包括:稳压罐、加压罐、试压泵、外压试件、阀门、压力表等。实验基本流程为试压泵加压,稳压罐压力平稳上升稳定压力后,打开进水阀,此时加压罐的压力上升,试件在外压作用下出现失稳变形。压力表数值发生变化,程序调用外压失稳相关程序,试件发生相应失稳变形。在该系统中,学生可在模拟实验室自主拆卸、组装仪器,故将每个零件进行建模,利用软件的装配指令,将零件自下而上组装成整套外压失稳实验装置。

1.2 物体状态管理

场景中某个物体的当前所处的状态、即将变为的状态、状态的转换,这部分为物体状态管理。物体状态管理在游戏对象中用生命周期方法来实现,分别以下几个阶段:①某个物体初始时处于未启用状态;②当准备启用该物体时,唤醒未启用物体的过程会调用物体的Awake()方法;③当这个物体正式启动时,这也是唤醒结束阶段,此时需调用OnEnable()方法;④当这个物体在第一帧渲染前,调用Start()方法;⑤在这个物体每一帧的渲染过程中,调用一次Update()方法;⑥当这个物体在每一次固定时间间隔的物理帧渲染过程中,调用一次FixedUpdate()方法;⑦在这个物体在UI上渲染时,调用OnGUI()方法;⑧在这个物体要被销毁时,调用OnDestroy()方法。

以加压罐为例,加压罐最初处于未激活状态,在操作者在UI中点击开始实验,加压罐在场景中被激活,先后调用加压罐的Awake()、OnEnable()、Start()等方法做初始化操作。而随后每一帧画面均要调用一次Update(),每秒钟调用约为40~60次,用于处理连续变化的运动。随着帧数的改变,Update()方法的调用次数也变化;而FixedUpdate()方法的调用次数虽然固定的,但一般更为频繁,利用FixedUpdate()处理连续运动更顺滑,而消耗更大的内存。使用完毕后,会调用OnDestroy(),这部分程序会做收尾工作,处理相关钩子变量。

1.3 进程管理

进程管理,即Process Management System(简称PMS),其控制当前场景的主要事件进程。包括加载场景,销毁场景,重设场景;提示触发,剧情触发,教学演示触发,或其他自定事件。进程管理通过UI交互来控制预制场景。UI系统与主摄像头的固定视角UI、手柄的按键UI,场景元素绑定的UI。预制场景由设备建模,状态管理器,以及用户行为(玩家行为)组成。玩家行为包括模拟实验过程中实验操作所带来的可交互组件,例如可动的阀门、可按的按钮等。

进程管理包括初始界面和过程中两部分,如图4所示。初始界面包括开始界面和场景UI,其中开始界面可进行场景切换,场景UI从而进行初始化。而进程管理在过程中有提示信息和触发开关两个功能,共同推进进程运行。UI界面基于NGUI、UGUI等Unity官方组件和外部插件。这些UI和鼠标指针互动,从而起到用户操控效果的。

图4 进程管理图Fig.4 Diagram of process management

1.4 预制场景

场景建立是在Discreet公司开发的3ds Max软件实现的。通过对平面场地的挤压、拉伸、布尔、编辑样条线等操作建立虚拟实验室场景模型,并贴图渲染,使之贴近真实景物,更具质感。利用软件的“标准集合体”和“扩展几何形”进行组合,制作出相应的三维模型。利用二维图形(正方形、矩形、圆形等)和一些命令(倒角、挤出、编辑样条线等)来实现三维模型的建立,二维图形节点少,易控制,修改起来也较为方便。多边形建模主要使用EditableMesh(可编辑网格)与EditablePoly(可编辑多边形)。此建模方式兼容性好,占据的系统资源最少,运行速度快,适用于制作较为复杂的模型。采用3Dmax建模中的材质贴图功能可以使模型更加逼真。采集图片时,注重贴图材质的选取,使模型更加逼真,贴图前,对图片进行处理,可用Photoshop等软件对贴图中的颜色、光线改良。加上材质可以显现出图案和背景的颜色,使模型更加鲜明,更具质感。如图5所示为虚拟实验室场景图。

图5 化工过程虚拟实验室场景图Fig.5 Scene diagram of the virtual laboratory

1.5 实验流程

实验流程如图6所示,实验者在UI场景的提示下,进行目标操作。状态管理系统与进程管理系统将接下来需要进行交互的对象激活,初始化所需要的逻辑判断或者作为触发事件的相关各种钩子事件。而开放交互方法,就是为其相关量作初始化,能确保进行正常触发。实验者会根据实验进程管理进行相关操作,或者改变当前操作,以此循环。若完成某项操作,全部相关的对象的生命周期函数需处理好,收集各个逻辑角落,不出现逻辑漏洞。

图6 实验流程Fig.6 Diagram of experimental process

VRTK框架中提供了许多基础交互方法,以触摸为例:

触摸:VRTK_InteractTouch

概述:Interact Touch脚本通常应用于Controller并提供碰撞器以了解控制器何时触摸某些内容。为控制器创建了碰撞器,默认情况下,所选控制器SDK将为该SDK的给定默认控制器提供一组碰撞器。Custom Rigidbody Object参数可以提供自定义对撞机。

Controller Start Touch Interactable Object

//触摸有效对象时发出;

Controller Touch Interactable Object

//触摸有效对象时发出;

Controller Start Untouch Interactable Object

//当开始触摸有效对象时发出;

ControllerUntouchInteractableObject

//当不再触摸有效对象时发出;

ControllerRigidbodyActivated

//激活控制器刚体时发出;

ControllerRigidbodyDeactivated

//当控制器刚体停用时发出;

UNITY EVENTS:

将VRTK_InteractTouch_UnityEvents组件添加到VRTK_InteractTouch对象允许访问UnityEvents它将对类事件做出相同的反应。

CLASS METHODS:

ForceTouch

//强制触摸;

Public virtual void ForceTouch(GameObject obj)

该方法的参数GameObject obj为尝试强制触摸的游戏对象。无返回值。

GetTouchedObject //返回控制器当前正在触摸的对象;

Public virtual GameObject GetTouchedObject()

无参数。

返回值为GameObject

//此控制器当前正在触摸的游戏对象。

通过对触摸,抓取等方法的灵活组合运用,就可以实现与虚拟实验设备的交互。

以操作者抓起试件的操作为例。首先,试件需要添加VRTK_Interactable Object脚本。操作者手持控制器,可选择直接触摸抓起,此时碰撞组件会将控制器碰到的物体对象返回脚本。

Controller Start Touch Interactable Object

//开始触摸;

Controller Touch Interactable Object

//触摸过程中;

Controller Start Untouch Interactable Object

//开始不再触摸;

Controller Untouch Interactable Object

//不再触摸。

监测以上变量来确定当前动作处于哪一阶段;如抓起物体后将试件坐标与控制器坐标相绑定,实现抓起效果。若是选择射线抓取,则射线碰撞实现后返回游戏对象,其余部分相同。

2 外压容器失稳虚拟实验系统平台

将本系统拓展到化工过程专业实验当中,建立了过程专业虚拟实验室,主菜单如图7所示。系统中可内置多个实验供师生选择,如选择外压容器失稳实验,UI界面如图8所示。

图7 软件主界面Fig.7 Main interface of virtual Lab

图9 外压试件失稳模拟图Fig.9 Specimens external pressure instability Rendering

外压容器失稳实验操作结束后,外压试件失稳模拟图,如图9所示。该图形与真实实验结果一致,并可进行进一步动态分析外压失稳状态的原因。并可改变外压容器的结构参数,深入理解其对失稳波形的影响,对真实实验条件进行了拓展。

3 结 语

为了更好地了解化工设备的失稳失效,开发了基于Unity 3D的外压容器失稳虚拟实验系统。该系统可使师生身临其境地处于实验室环境中,对实验装置可进行拆解,理解装置各部分结构,动态地观察到外压容器失稳整个过程,更加具体地理解外压容器的结构参数以及轴向支撑对外压容器失稳波形的影响。进而更好地理解失稳失效的相关理论知识,增加学习记忆深度,提供学生在实验方面的自主创新能力。在该系统的基础上可轻松地增加其他专业实验,更好地弥补教学条件不足,为广大师生提供一个不受时空限制的仿真实验环境,对现代化工类高校实验教学改革具有极大的促进作用。

猜你喜欢

外压调用容器
容器倒置后压力压强如何变
浅谈Ω 型膨胀节许用外压的确定和外压试验方法的可行性
难以置信的事情
核电项目物项调用管理的应用研究
有关外压石墨圆筒计算的思考
基于系统调用的恶意软件检测技术研究
核电厂安全壳外压分析
取米
外压圆筒有限元分析及应用研究
利用RFC技术实现SAP系统接口通信