?

基于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)??罩悬c擊操作步驟:凝視交互對象,將手輕握成拳,食指向上,向下輕點手指,再快速抬起;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分??荚嚹K最高分為100分,最低分為0分??荚嚹K主要考核筆記本電腦組裝知識、技巧和流程。

無論是選擇臺式機電腦組裝場景或筆記本電腦組裝場景,操作者身后都有一個返回主菜單按鈕,如圖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字手勢的由來
專業級筆記本電腦
勝利的手勢
為筆記本電腦換上新年盛裝
數碼相機 手機 筆記本電腦
筆記本超越臺式機只是時間問題
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合