基于VR技术的空客A320座椅维修平台设计

作者: 丁佳明 施浩 王建章

基于VR技术的空客A320座椅维修平台设计0

摘要:VR(虚拟现实) 技术是一种诞生于20世纪依托计算机发展起来的新型技术,也可以作为一种多媒体形式,相较于传统多媒体,高度沉浸感和可交互性是其一大亮点。以上特点意味着通过VR技术传递内容更直观,更具可交互性。文章以A320座椅维修平台设计为案例,按测绘、建模、排布、贴图以及VR交互的实现提供一种制作相关软件的具体思路及在制作过程中需要注意的细节问题。

关键词:VR技术;UNITY3D;A320座椅;拆装与维修;VR交互实现

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2022)24-0045-02

1 概述

VR技术在教学中是作为技术媒体使用的, 其技术功能是塑造其所支持学习特征的重要因素。VR技术可以生成一种模拟环境, 利用各类传感设备将用户“投放”到该环境中, 实现用户与模拟环境的自然交互[1]。本文通过3d Max,Unity3D等软件,实现用户运用VR设备完成在虚拟平台对空客A320座舱座椅的维修。

当今市场上借助VR设备做相关专业维修的极其稀少。VR程序大多都应用于商业领域。因为航材价格昂贵且稀有,因此有些飞机维修工程师得不到全面的训练。新手维修学员对维修工作不熟练造成身体损伤也是一个重大问题。基于上述问题本文运用VR设备对航材部件进行维修,使用者戴上头盔,使用本文制定的软件来进行指定航材的拆装及维修,借助VR平台帮助飞机维修学员获得更多的操作机会,加深记忆维修步骤和维修方法,未来能够熟练维修真实航材。本文选用的维修航材为飞机座舱座椅,在日常生活中由于座椅会被反复使用,所以会出现一些老化磨损等现象,在飞机维修设施中属于高频维修设施,飞机维修工程师应该熟练掌握维修座舱座椅的技能[2]。

2 制作过程

2.1 模型的数据采集

本小组所做是空客A320客舱座椅的维修平台,上海工程技术大学拥有1:1客舱模拟器,小组直接对模拟器的尺寸进行测量。测量工具:直尺、卷尺、游标卡尺以及螺旋测微器。测量内容:座椅头枕、靠背、坐垫、扶手、各式连接件、滑动导轨等。采用数次测量物件求其算术平均值的方法尽可能减小人工对测量过程的影响以保证最大的数据准确性,依次将不同部件的数据分类录入计算机后并对相同类型的零件个数进行整理,测绘过程完毕。

2.2 在3d Max中1:1建立模型

将座椅按零件和物件两类分别对其建模再进行组装。对于零件来说,主要是制作紧固件即各种型号的螺栓、螺柱、螺钉、螺母等。这里以制作六角螺帽的螺栓为例进行说明。

螺栓的螺帽直接在3d Max中选择生成六边形,在修改器列表选择基础命令并点击可编辑多边形,在边层级中对螺帽进行圆角命令的添加使之更为贴近真实世界。栓体部分建立圆柱体以其俯视图为主视角添加样条线中的螺旋线,使之与圆柱体完全贴合,并在修改器中确定螺旋线的高度和匝数,点击倒角命令并选择一定的高度值,将该图像转换为可编辑多边形进入边层级,任选该图形中的竖直线添加环形命令,这时选择螺旋线右键点击挤出命令,确定挤出的高度和宽度便可实现螺纹的建立。对于物件来说,例如靠背、头枕、坐垫等完全可以先建立一个拥有基本尺寸的长方体,在此基础上在修改器中选择FFD命令,选择适合的长宽高分段数,来营造凹坑和凸起的效果,核心就是鼠标选取部分FFD后的关键点运用移动、缩放等命令实现。将所有物件零件制作完成后,将他们按先前测绘的比例摆放在一起并打组[3]。

2.3 Unity导入前的预备工作

首先需要所有物体的重置工作轴,避免导入Unity中产生模型错位的问题。其次选中所有模型,转化为可编辑多边形并点击塌陷命令,此操作能将所有电脑已执行并记录的命令全部转化为坐标关系,便于计算机存储,尽可能防止缓解Unity后模型数过多导致的帧数下降问题。

将3d Max中模型保存为obj格式或fbx格式放在统一的文件夹里便于一起导入。

2.4 贴图

Unity中不仅可以简单设置模型的颜色、光滑度、金属度等还提供了PBR材质的贴图可供制作者选择。PBR即Physically-Based Rendering,意为基于物理的渲染,即通过计算光线与物体表面的交互状态而实现模拟真实世界画面的一种渲染方式。其具体材质构成为:DIFFUSION & REFLECTION(扩散和反射) 、Translucency(透明度) 、Metallice(金属度) 、Albedo(反射率) 、Smoothness(光滑度) 、Noraml Map(法线贴图) 、Height Map(高度贴图) 等。项目座椅便是运用了PBR材质而达到较为拟真的效果。

2.5 VR平台的搭建

使用steam VR与VRTK两款插件,在Unity 3d(版本号:2017 4.35f1) 实现VR的各种功能。

首先,在steam VR的子文件夹prefabs中选定camerarig作为主摄像头组件并将其拖入场景中,可以看到淡蓝色区域便是程序运行后体验者的出生位置(如图1) ,适当调整摄像头高度即与场景中的物体保持一定的比例。其次在场景中创建一个空物体,命名为“VRTKK SDK”,将camerarig拖入子目录,并创建left controller与 right controller两个空物体,将自己做的左右手模型和动画分别放在这两个目录下[4]。“VRTKK SDK”添加VRTK_SDK  Manger组件,具体设置如图2。最后在left controller 与right controller两个物体加入如图3组件,至此,VR平台基本搭建完成。

2.6 VR场景的交互实现

在VR场景搭建中,为了显著增强画面感并且进一步降低由于绚丽画面对于实时灯光的依赖而造成的性能下降,主要光照烘培应用主要集中在烘培静态场景中。处理好场景后对手部模型进行更改,steam VR 软件中对应的手部模型为普通手柄,为了达到切实的维修,需要制作切合实际的手部模型,同时将专业维修工具添加到制作的维修仓场景中。座舱座椅导入到Unity软件后要进行相关设置。首先要赋予物体质量并添加碰撞体积,在box collider指令中调整碰撞体的大小来仿真现实中碰撞效果。完成上述操作后需要添加动画从而实现手部模型对物体的抓取,与零件之间的交互动作来完成拟真维修。本文利用VRTK和Steam VR的插件来实现一些比较简单的交互并使用Visual C++软件编程一些插件实现不了的操作的代码。

2.7 座舱座椅维修步骤

使用者进入VR场景,按下手柄上扳机键即可拾取维修工具,当工具与零件相接触时,零件会高亮显示,这代表虚拟双手已触碰维修部件,随后对照AMM大修手册,首先进行座椅的拆卸,保持座椅不动,用规定扳手拧松螺钉,之后转动座椅,使其能够从导向装置上松开滚筒并拆下座椅。座椅拆好后即可进行靠背拆卸,首先拆下尼龙搭扣带连接的护罩,其次拧松螺钉,拆下靠背的后面框。最后进行安全带的拆卸,将与座椅相连的安全带上的两个卡簧拆卸下来并拆下两个销,最后将安全带拆下。完全拆好后对照维修手册进行维修并对老化的零部件进行更换,安装的步骤要按照拆卸步骤的顺序逆推一遍,切忌跳步[5]。

2.8 编程与调试

为了达到商业使用标准,本文在制作完成后继续美化场景、优化软件、不断试错,将软件运行中遇到的问题一一解决。本文在场景中搭建了创立了专业的维修平台,且均通过精密仪器测量加以严谨的软件绘制完成座舱中物体的制作,添加了手部模型完成对物体的交互,使用户维修零部件时看到的是自己逼真的双手来操作工具。交互中使用Visual C++部分代码如下所示。

protected float minDistanceForNormalLerp;

protected float lerpTime = 0.1f;

public virtual void OnWillDashThruObjects(DashTeleportEventArgs e)

{if (WillDashThruObjects != null)

{WillDashThruObjects(this, e);  }  }

public virtual void OnDashedThruObjects(DashTeleportEventArgs e)

{if (DashedThruObjects != null)

{ DashedThruObjects(this, e); } }

protected override void OnEnable()

{base.OnEnable();

minDistanceForNormalLerp = minSpeedMps * normalLerpTime; // default values give 5.0f

} protected override Vector3 SetNewPosition(Vector3 position, Transform target, bool forceDestinationPosition)

{return CheckTerrainCollision(position, target, forceDestinationPosition); }

protected override void StartTeleport(object sender, DestinationMarkerEventArgs e)

{base.StartTeleport(sender, e); }

protected override void ProcessOrientation(object sender, DestinationMarkerEventArgs e, Vector3 newPosition, Quaternion newRotation)

{if (ValidRigObjects()) {

StartCoroutine(lerpToPosition(sender, e, newPosition)); } }

protected override void EndTeleport(object sender, DestinationMarkerEventArgs e){}

protected virtual IEnumerator lerpToPosition(object sender, DestinationMarkerEventArgs e, Vector3 targetPosition)

{enableTeleport = false;

bool gameObjectInTheWay = false;

3 意义

相较于传统的维修训练,VR技术依托计算机创建的虚拟场景,硬件上只需电脑主机、VR头盔、VR手柄即可,有效地减少了传统训练中使用训练器材的购置成本,训练过程中对于器材的磨损及修复成本[6]。同时也极大降低了训练时对于环境的严苛要求程度,VR可在近乎任意地点运行。最后在传统维修训练中由于学员的不当操作所造成的安全事故也屡屡发生,VR的出现把发生危险的可能性降到了比较低的位置。总体来说,VR具有高度的可重复性和拓展性,也减少了在真实世界中为了演示所耗费的材料成本、时间成本和金钱成本,是一个能够极大提升训练效率的实用技术。

参考文献:

[1] 何聚厚,梁瑞娜,韩广欣,等.基于虚拟现实技术的深度学习场域模型构建研究[J].电化教育研究,2019,40(1):59-66.

[2] 刘迪.浅谈VR虚拟仿真在汽车检测维修教学中的应用[J].湖北农机化,2018(7):37.

[3] 张嵩逸,施浩,朱正.基于unity3D的初教六飞机起落架收放以及拆装运动模拟[J].电脑知识与技术,2020,16(11):227-228,231.

[4] 张雪峰,施浩,朱正.基于VR/AR的初教六飞机起落架模型的设计制作[J].电脑知识与技术,2019,15(3):264-265.

[5] 葛剑,孙罡,金国友.虚拟仿真在A320飞机维修实训教学中的应用研究[J].电视技术,2021,45(3):126-128.

[6] 刘玉海,张锡恩.VR在装备维修中的应用研究[J].计算机工程,2001,27(8):132-133,168.

【通联编辑:唐一东】

上一篇 点击页面呼出菜单 下一篇