基于MR技术的计算机组装系统设计与实现

2024-04-14 04:54李广松佳林官泽良
现代信息科技 2024年2期
关键词:台式机笔记本电脑手势

李广松 佳林 官泽良

DOI:10.19850/j.cnki.2096-4706.2024.02.023

收稿日期:2023-05-18

基金项目:广东省2022年科技创新战略专项资金(“攀登计划”专项资金)项目(pdjh2022a0825);2022年度校级虚拟仿真教育教学改革专项项目(XNFZ202214)

摘  要:使用HoloLens2头盔和混合现实插件Mixed Reality Feature Tool开发出一款计算机组装混合现实交互应用。通过HoloLens2凝视、手部跟踪、UX构建基块、语音和听写系统、眼部跟踪等进行输入交互,并配合Unity3D中的Animation系统与UGUI系统,最终实现混合现实虚拟交互。Unity3D工程导出UWP,并生成VS工程,然后部署到HoloLens2中进行测试。测试结果表明,该系统实现了计算机组装的相关交互功能。研究为计算机组装的虚拟操作提供了一种混合现实解决方案。

关键词:HoloLens2;混合现实;Unity 3D;计算机组装

中图分类号:TP391.9  文献标识码:A  文章编号:2096-4706(2024)02-0108-06

Design and Implementation of Computer Assembly System Based on MR Technology

LI Guangsong, ZHANG Jialin, GUAN Zeliang

(Guangdong Polytechnic, Foshan  528041, China)

Abstract: This paper uses HoloLens2 helmet and Mixed Reality Feature Tool to develop a computer assembly Mixed Reality interactive application. It carries out input interaction through HoloLens2 staring, hand tracking, UX building blocks, voice and dictation systems, eye tracking, and so on. And it is in cooperation with the Animation system and UGUI system in Unity3D to realize Mixed Reality virtual interaction, finally. The Unity3D project exports the UWP, generates the VS project, and then deploys it to HoloLens2 for testing. The test results show that the system realizes the related interactive functions of computer assembly. The research provides a Mixed Reality solution for virtual operation of computer assembly.

Keywords: HoloLens2; Mixed Reality; Unity 3D; computer assembly

0  引  言

混合现实(Mixed Reality, MR)技术是一种在现实场景中呈现虚拟对象的虚实融合技术,其通过虚拟世界与物理世界的实时计算,实现无缝叠加,从而达到虚实融合的目的。HoloLens2是微软公司在HoloLens`基础上[1],于2019年推出的第二代混合现实全息眼镜,是目前最具代表性的混合现实设备[2]。在计算方面,HoloLens2配备了一块专用的全息处理单元(Holographic Processing Unit, HPU),主要负责眼球跟踪、运动跟踪、手势交互空间映射等方面的计算处理。在环境理解方面,通过飞行时间(Time of Flight, ToF)深度传感器获取场景几何网格信息后,结合运动跟踪便可智能地辨识地板、桌面等场景对象。在人机交互方面,HoloLens2设备支持凝视、手势、语音三种交互方式[3]。Unity软件是一款跨平台虚拟开发引擎,广泛应用于移动端、电脑端游戏,以及AR、VR、MR相关产品的开发[4]。通过将混合现实以及目标检测的相关技术进行整合,能够提供一种新的人机交互方式,为学习培训、可视化展示等行业所存在的问题提供了理论与技术上的支持,从而使得设计并开发出可交付的解决方案成为可能[5]。

1  系统设计

1.1  系统架构

系统以HoloLens2头盔为硬件平台,以Unity3D2019引擎为软件平台进行构建项目。项目首先导入MRTK2.7,并进行配置,配置内容包括MR项目、MR摄像机、远近交互和语音控制,最后进行MR开发和内容制作。将开发的MR程序在HoloLens2设备中进行安装,实施交互功能与信息反馈。HoloLens2设备会实时将全息影像映射到现实世界中,并通过摄像头和传感器进行实时定位和地图构建。在HoloLens2的虚拟场景中,通过手部近交互、射线远交互或语音交互,选择台式机组装模块和笔记本组装模块。在系统的每个模块中,可以通过手势进行动画观赏、硬件展示、手动组装和考核测评操作。MR计算机组装系统架构如图1所示。

1.2  设计流程

系统使用Unity编译器中的Universal Windows Platform环境进行开发,并辅助使用3Dsmax软件制作模型和Photoshop软件制作贴图和UI进行设计。首先借助Unity3D提供的工程、对象、组件和场景功能模块创建项目,然后使用Mixed Reality Feature Tool提供的MRTK,包括配置文件(边界系统、相机设置、传送和空间感知)、输入系统(6DoF控制器、关节手和语音)和UX构建基块(铰接式手控、对象操纵器和视觉状态交互脚本),进行工程的配置、搭建和打包,最后导出UWP工程,并在VS中部署HoloLens2,完成與HoloLens2硬件平台的数据传输,最终实现计算机组装MR系统。

項目脚本选用C#开发语言,并实现了手部远距离射线交互、手部近距离交互、凝视、语音识别四种交互方式。脚本启动后,首先在Awake()和Start()方法中通过MRTK(SDK)函数完成初始化,然后分别通过OnNoteBookScene()函数实现笔记本电脑组装交互,通过OnDesktopScene()函数实现台式机电脑组装交互,最后在Update()和OnMainScene()方法中实时监听交互输入,并输出反馈结果。

2  交互设计

项目中的交互是基于ObjectManipulator类提供的事件和Interactable.cs脚本进行设计。交互的接口主要有:OnManipulationStarted(),在操控开始时触发;OnManipulationEnded(),在操控结束时触发;OnHoverStarted(),当手部或控制器悬停在近距或远距可操控对象上时触发;OnHoverEnded(),当手部或控制器未悬停在近距或远距可操控对象上时触发。在每个交互对象身上,项目添加了事件需要调用的笔记本电脑组装脚本NotebookAccessories或台式机电脑组装脚本DesktopAccessories。

2.1  凝视

基于射线碰撞检测原理,GazeProvider类提供凝视处理程序,并接收凝视事件。实现凝视功能,需要在摄像机上添加GazeProvider脚本组件。获取眼动追踪数据,需要使用CoreServices.InputSystem.EyeGazeProvider类,其中EyeGazeProvider的GazeOrigin返回注视光线原点,GazeDirection返回注视光线方向。获取凝视目标、凝视原点和凝视方向的代码如下:

//获取当前凝视目标的方法

public GameObject GetCurrentGazeTarget()

{

if(CoreServices.InputSystem.GazeProvider.GazeTarget != null)

return CoreServices.InputSystem.GazeProvider.GazeTarget;

else

return null;

}

//获取当前凝视原点的方法

public Vector3 GetGazeOrigin()

{

if(CoreServices.InputSystem.GazeProvider.GazeTarget)

return CoreServices.InputSystem.GazeProvider.GazeOrigin;

else

return Vector3.zero;

}

//获取当前凝视方向的方法

public Vector3 GetGazeDirection()

{

if(CoreServices.InputSystem.GazeProvider.GazeTarget)

return CoreServices.InputSystem.GazeProvider.GazeDirection;

else

return Vector3.zero;

}

2.2  手势

手势交互是基于人手的输入交互,手势交互的定位机制是凝视。HoloLens2引发手势交互的基本输入事件包括两种:空中点击(Airtap)和Home手势(Bloom)。空中点击操作步骤:凝视交互对象,将手轻握成拳,食指向上,向下轻点手指,再快速抬起;Home手势分单手和双手两种,其中单手Home手势的操作步骤为:伸出一只手,掌心向上,凝视手腕,用伸出那只手的食指和拇指做捏合动作;双手Home手势的操作步骤为:伸出一只手,掌心向上,凝视手腕,用另一只手的食指触摸Windows图标。以这两种核心手势为基础,将点击、保持、释放以及手的位移进行结合,可以表现出多种复合手势。

设置对象的远距离射线交互,需要将ObjectManipulator脚本组件添加到物体对象上,并为交互对象添加一个与它可抓取边界匹配的Collider组件。如果设置对象的近距离抓取交互,还需要添加NearInteractionGrabbable脚本。抓取配件的代码如下:

public void OnManipulationStarted()

{

SetAssemblyHint(true);//抓取开始提示

}

public void OnManipulationEnded()

{

SetAssemblyHint(false);//抓取结束提示

if(isArriveAssemblyPosition)//检测是否到达预定义位置

{

//检测安装顺序是否正确

if(NotebookManager._instance.CheckAssemblyStep

(this))

{

transform.SetParent(assemblyLocationParent.transform);//定位挂载

transform.position = assemblyLocation.transform.position;//位置

transform.rotation = assemblyLocation.transform.rotation;//旋转

transform.localScale = assemblyLocation.transform.localScale;//放缩

//配件安装成功

NotebookManager._instance.HandleAssemblySuccess

(this);

}

else

{

NotebookManager._instance.ShowErrorTip();//显示错误提示

ResetPosition();//复位当前配件

}

}

}

2.3  语音

MRTK语音控制程序提供了KeywordRecognizer、GrammarRecognizer和DictationRecognizer类配置文件,以供开发者设置需要的识别关键字。为更好的控制语音识别的时机,项目设计开发了SpeechRecognizer类实现立即播放和延迟播放两种模式。首先在编辑器的PlayerSetting中将访问麦克风权限打开,然后使用KeywordRecognizer指定要侦听的短语,最后结合UnityEvent事件和识别的短语进行语音播放操作。语音控制代码如下:

//创建结构体集合

[System.Serializable]

public struct KeyStructure

{

//被语音识别的关键字:

public string Keyword;

//被识别事件的按键

public KeyCode KeyCode;

//被语音识别的事件

public UnityEvent KeyEvent;

}

//向字典中添加绑定事件

keywords = speedRecognizerStructure.ToDictionary

(SpeedResponses => SpeedResponses.Keyword, SpeedResponses => SpeedResponses.KeyEvent);

//创建关键字识别器,并告知识别器我们想要识别的内容

keywordRecognizer = new KeywordRecognizer

(keywords.Keys.ToArray());

//注册SpeechRecognized事件

keywordRecognizer.OnPhraseRecognized += SpeechRecognized;

//开始识别

keywordRecognizer.Start();

//循环检测结构体中的按键是否被触发

foreach (var structure in speedRecognizerStructure)

{

if (Input.GetKeyDown(structure.KeyCode))

{

structure.KeyEvent.Invoke();

return;

}

}

//调用事件

private void SpeechRecognized(PhraseRecognizedEventArgs word)

{

SpeechRecognizedUnityEvent(word).Invoke();

}

//判断是否满足调用条件

UnityEvent SpeechRecognizedUnityEvent(PhraseRecognizedEventArgs word)

{

UnityEvent keywordAction;

if (keywords.TryGetValue(word.text, out keywordAction))

{

return keywordAction;

}

else

{

return null;

}

}

3  系统实现

使用HoloLens2设备进入MR计算机组装系统。在混合現实场景中,有两个虚拟按钮,分别是台式机电脑组装场景和笔记本电脑组装场景,如图2(a)所示。通过手部远距离交互(捏手指激发射线)、近距离交互(触摸物体)、凝视交互(准星对准物体凝视3秒)、语音识别交互(说“笔记本”或“台式机”)进入台式机电脑组装场景或笔记本电脑组装场景。

如果选择台式机电脑组装模式,则进入台式机电脑组装场景,在台式机电脑组装场景中有三个模块。第一个模块是场景右侧的动画模块,如图2(c)所示,点击动画观赏按钮浏览台式机电脑拆解动画,点击返回按钮浏览台式机电脑组装动画。第二个模块是场景中间的组装模块,点击开始按钮开启手动组装模式,如图2(e)所示。在手动组装模式中,需要按照正确的顺序安装每一个部件。如果安装顺序错误,则会出现红色字体提示。如果用户安装完成,开始按钮会重新打开,以便再次练习安装。如果在手动组装时直接点击退出按钮,系统会自动依次安装每个部件,完成后,开始按钮也会重新打开。第三个模块是台式机电脑硬件展示模块,此模块展示了台式机电脑各个硬件,如图2(g)所示。

如果选择笔记本电脑组装模式,则进入笔记本电脑组装场景,在笔记本电脑组装场景中也有三个模块。第一个模块是动画模块,如图2(d)所示,点击动画观赏按钮即可开始观看笔记本电脑拆解动画,点击返回按钮即可以观看笔记本电脑组装动画。第二个模块是组装模块,点击开始按钮,等待笔记本拆解动画播放完成后,即可开始手动组装,如图2(f)所示。需要按照正确的顺序安装每一个部件。第三个模块是组装考试模块,如图2(h)所示。点击开始按钮进入考试,包括选择题和组装考核。选择题选对一个加10分,选错不扣分。完成选择题后,进入组装考试模块,用户需要按照正确的顺序进行组装,错一个步骤,扣10分。考试模块最高分为100分,最低分为0分。考试模块主要考核笔记本电脑组装知识、技巧和流程。

无论是选择台式机电脑组装场景或笔记本电脑组装场景,操作者身后都有一个返回主菜单按钮,如图2(b)所示,点击后可返回主菜单,重新选择场景。

4  系统测试

4.1  導出设置

通过Unity3D打包导出UWP工程到VS中部署HoloLens2中测试。首先在Unity3D中添加Universal Windows Platform Build Support模块和Windows Build Support(IL2CPP)模块。然后在File—>BuildSettings窗口中选择Universal Windows Platform选项,点击SwitchPlatform按钮切换打包环境。然后在Project Settings—>Player面板中,选择Publishing Settings—>Capabilities并勾选项目对应所需权限。最后在XR Settings属性中勾选Virtual Reality Supported—>Windows Mixed Reality—>Depth Format,并选择16-bitdepth,在Stereo Rendering Mode中选择Single Pass Instanced,以提升项目性能。

4.2  调试设置

项目调式需要选择VS环境进行,并在Visual Studio Installer的“通用Windows平台开发”选项中,勾选“USB设备连接性”和“C++(V142)通用Windows平台工具”,最后部署到HoloLens2中进行调试。

4.3  其他注意事项

在使用混合现实工具包Mixed Reality Feature Tool导入SDK时,会出现弹不出Mixed Reality Toolkit设置面板的问题。解决方法:在Window—>Package Manager中搜索并更新Text Mesh Pro包。

在工程搭建时,需要修改系统参数或实现系统功能,但对Mixed Reality Toolkit组件进行修改时,会出现不允许修改MRTK默认值的问题。解决方法:

1)开始项目搭建时,点击Unity菜单栏—>MixedReality按钮(这个按钮导入SDK后会自动显示在Unity菜单栏)—>Toolkit—>Add to Scene and Configure,创建主配置文件。

2)在Mixed Reality Toolkit组件的第一行,点击Clone按钮,则会克隆一个预设并弹出CloneProfile窗口(在窗口中可以为该预设重命名、修改存放位置),点击窗口中的Clone按钮。

4.4  结果分析

经过打包并在HoloLens2中部署安装测试。分别使用手部远距离指针交互、手部近距离触摸交互、凝视和语音识别交互进行测试,实现了系统中的各功能模块。经过反复测试,系统功能稳定。测试结果表明:系统实现了真实世界和虚拟世界的实时交互融合。系统不仅可以让对计算机组装感兴趣的人学习计算机组装知识,还可以让他们更加真实的体验到计算机组装的流程。测试效果图如图3所示。

5  结  论

系统使用Unity3D 2019.4.40f1c1 LTS引擎、MRTK2插件和HoloLens2设备进行开发,并运用C#编写交互脚本,设计和实现了一款基于MR混合现实技术的计算机组装系统。系统通过手部远距离指针、手部近距离触摸、凝视和语音识别来进行交互,并测试成功。团队下一步的研究方向是:运用Anchor实现真实空间锚点功能;显示HoloLens2中的第一视角全息视频;多台HoloLens2中系统协同运行。

参考文献:

[1] 龚赤兵.HoloLens增强现实技术的变革和性能评估 [J].科技创新导报,2018,15(36):217-219.

[2] 吕秀琴,张生海.基于HoloLens2的DEM空间分析实验教学混合现实环境研究 [J].实验技术与管理,2021,38(10):124-129.

[3] 付超.基于HoloLens2的医学影像辅助治疗系统的设计与实现 [D].沈阳:中国科学院大学(中国科学院沈阳计算技术研究所),2022.

[4] 梁巨宏,王殊轶,胡忞仁,等.混合现实技术引导放疗摆位 [J].软件导刊,2021,20(11):106-112.

[5] 曾笑.基于HoloLens2的目标检测技术研究 [J].现代计算机,2021(14):92-95.

作者简介:李广松(1980—),男,汉族,河南林州人,副教授,硕士研究生,研究方向:游戏开发、XR技术。

猜你喜欢
台式机笔记本电脑手势
台式机还是笔记本了解这些选择就不难
笔记本电脑“僵尸”
挑战!神秘手势
云淡风轻,品牌台式机深耕商用市场
V字手势的由来
专业级笔记本电脑
胜利的手势
为笔记本电脑换上新年盛装
数码相机 手机 笔记本电脑
笔记本超越台式机只是时间问题