MRTK3設置指南
這個示例場景展示了如何将MRTK3集成到您的Unity項目中(zhōng)。有(yǒu)關MRTK的更多(duō)信息,請查閱MRTK3文(wén)檔。
在Windows上設置新(xīn)的Unity項目
該指南将引導您如何為(wèi)Snapdragon Spaces設置和構建全新(xīn)的MRTK3項目。
注意事項! 請避免使用(yòng)涉及虛拟鍵盤和Web浏覽器的組件,因為(wèi)它們目前不受支持,可(kě)能(néng)導緻意外行為(wèi)。 |
Unity項目設置
從從Unity 設置指南開始,按照Unity設置指南的步驟進行,直到啓用(yòng)Spaces功能(néng)。
設置完成後,請保持Unity項目處于打開狀态,并記下文(wén)件路徑。
MRTK項目配置
● 安(ān)裝(zhuāng)MRTK3的先決條件:
○ Visual Studio 2019社區(qū)版或更高版本
○ 混合現實功能(néng)工(gōng)具(jù),用(yòng)于訪問MRTK3包。目前僅在Windows上可(kě)用(yòng)。下載但不要運行。
○ 您将需要包含在Visual Studio 16.11.14+中(zhōng)的.NET 0.5+運行時。
導入MRTK3包:
打開混合現實功能(néng)工(gōng)具(jù)(MixedRealityFeatureTool.exe)。
● 等待工(gōng)具(jù)加載完成後,點擊“開始”。
● 将項目路徑設置為(wèi)Unity項目的文(wén)件路徑。
● 點擊“發現功能(néng)”。
○ 對于MRTK3的項目條目,點擊“全選”。
○ 點擊“獲取功能(néng)”。可(kě)能(néng)會顯示一些推薦的依賴項,如有(yǒu),請選擇并導入它們。
○ 完成後,您可(kě)以選擇關閉功能(néng)工(gōng)具(jù),或根據需要保持其打開,以進行進一步的調整。
返回Unity完成包導入
回到Unity項目,并等待由混合現實功能(néng)工(gōng)具(jù)添加新(xīn)功能(néng)導緻的任何導入過程。
如果出現提示,請選擇“我已備份,繼續!”以确認XR交互層掩碼。
如果需要重新(xīn)啓動,請選擇“是”。
場景設置
創建一個新(xīn)場景。這個場景将用(yòng)于從頭設置相機和輸入。
修改适用(yòng)于Snapdragon Spaces的相機設置
● 從場景層級中(zhōng)删除主相機。
● 找到MRTK XR Rig預制體(tǐ),并将其拖拽到場景中(zhōng)。位置在:Packages/com.microsoft.mrtk.input/Assets/Prefabs/MRTK XR Rig.prefab
配置适用(yòng)于Snapdragon Spaces的控制器輸入
如前所述,本指南僅适用(yòng)于使用(yòng)Companion控制器作(zuò)為(wèi)設備輸入。要為(wèi)Companion控制器設置,請按照以下步驟操作(zuò):
● 在MRTK XR Rig(頂級GameObject)上:
○ 在輸入動作(zuò)管理(lǐ)器組件中(zhōng),向動作(zuò)資源下拉菜單添加第二個元素,并設置為(wèi):輸入動作(zuò),位置在:Samples/Snapdragon Spaces/[版本ID]/Core Samples/Shared Assets/Input Actions。這将映射輸入動作(zuò)到從Snapdragon Spaces核心示例中(zhōng)設置的動作(zuò),以便正确連接到Companion控制器。
● 現在添加設備指針預制體(tǐ),它位于:Samples/Snapdragon Spaces/[版本ID]/Core Samples/Shared Assets/Prefabs/Interaction/。
○ 在XR Interactor Line Visual組件中(zhōng),将線(xiàn)寬度調整為(wèi)0.005。
最後,設置MRTK配置文(wén)件
● 創建MRTK配置文(wén)件的副本,路徑為(wèi)Packages > MRTK Core Definitions > Configuration > Default Profiles,并将其拖放到項目的Assets目錄中(zhōng)。
● 打開編輯 > 項目設置 > MRTK3。
● 将複制的配置文(wén)件拖放到Android選項卡下的配置文(wén)件部分(fēn)。
● 取消勾選MRTK Hands Aggregator子系統。
● 取消勾選Hand Synthesis子系統。
可(kě)選步驟:添加交互組件以測試MRTK功能(néng)
可(kě)選擇的物(wù)體(tǐ)
● 向場景中(zhōng)添加一個3D立方體(tǐ)。
○ 将其位置設置為(wèi)(0, 0, 1.5)。
○ 将旋轉設置為(wèi)(45, 45, 45)。
○ 将縮放設置為(wèi)(0.5, 0.5, 0.5)。
○ 添加ObjectManipulator組件,以便通過激光指針進行抓取。
MRTK按鈕組
● 添加一個ButtonGroup_32x32mm_H3預制體(tǐ)到場景中(zhōng),通過此步驟測試MRTK的預制交互組件。
● 這可(kě)能(néng)會提示您安(ān)裝(zhuāng)TextMeshPro。如果需要,請選擇導入TMP Essentials。
● 在層次結構中(zhōng)選擇ButtonGroup,在檢視器中(zhōng)将Transform的位置設置為(wèi)0,0,0.5。按下播放按鈕以處理(lǐ)腳本并可(kě)視化按鈕面闆,然後停止返回編輯模式。
● 展開ButtonGroup,逐個展開三個PressableButton_32x32mm_IconAndText對象。
● 第一個按鈕:選擇頂層按鈕對象,在檢視器中(zhōng)找到Pressable Button組件,點擊+号添加OnClicked()事件,将其設置為(wèi)場景中(zhōng)的立方體(tǐ),并将動作(zuò)設置為(wèi)GameObject.SetActive,複選框不勾選。
○ 在子對象CompressableButtonVisuals中(zhōng):
○ 找到UX.Button.Icon.Char子對象,并将SpriteRenderer的Sprite更改為(wèi)空圓。
● 第二個按鈕,選擇頂層按鈕對象,在檢視器中(zhōng)找到Pressable Button組件,點擊+号添加OnClicked()事件,将其設置為(wèi)場景中(zhōng)的立方體(tǐ),并将動作(zuò)設置為(wèi)GameObject.SetActive,複選框勾選。
○ 在子對象CompressableButtonVisuals中(zhōng):
○ 找到UX.Button.Icon.Char子對象,并将SpriteRenderer的Sprite更改為(wèi)填充圓。
○ 找到TextMeshPro子對象,并将Text輸入設置為(wèi)顯示。
○ 對于第三個按鈕,您需要首先創建一個新(xīn)腳本并将其添加到立方體(tǐ)上。該腳本應該包含一個公(gōng)開的函數,例如
● 第三個按鈕繼續:
○ 選擇頂層按鈕對象,在檢視器中(zhōng)找到Pressable Button組件,點擊+号添加OnClicked()事件,将其設置為(wèi)場景中(zhōng)的立方體(tǐ),并将動作(zuò)設置為(wèi)從新(xīn)腳本中(zhōng)調用(yòng)的Quit()函數。
○ 在子對象CompressableButtonVisuals中(zhōng):
○ 找到UX.Button.Icon.Char子對象,并将SpriteRenderer的Sprite更改為(wèi)“Quit”按鈕。
○ 找到TextMeshPro子對象,并将Text輸入設置為(wèi)Show。
連接設備進行測試:
● 配置構建設置和播放器設置以便構建應用(yòng)程序。
● 從構建設置窗口中(zhōng)構建應用(yòng)程序并将其保存到本地。
● 連接您的Android設備,并在提示時批準USB調試。
● 将apk安(ān)裝(zhuāng)到您的設備上。
● 長(cháng)按應用(yòng)圖标,點擊“應用(yòng)信息”,并批準所有(yǒu)權限。
● 插入眼鏡,并等待應用(yòng)程序完全加載後運行。
MRTK示例:
為(wèi)了進一步了解可(kě)用(yòng)的MRTK3用(yòng)戶界面組件,建議下載MRTK3示例并為(wèi)其配置Snapdragon Spaces。按照以下步驟操作(zuò):
獲取MRTK3示例:
● 克隆或下載Unity項目示例的存儲庫:https://github.com/MixedRealityToolkit/MixedRealityToolkit-Unity/tree/main/UnityProjects
● 在文(wén)件名(míng)較短的位置解壓或克隆此存儲庫。該存儲庫包含多(duō)個文(wén)件夾,文(wén)件名(míng)過長(cháng)可(kě)能(néng)導緻Unity中(zhōng)出現問題。
● 請不要移動存儲庫中(zhōng)的任何文(wén)件,因為(wèi)存在許多(duō)依賴項,移動文(wén)件可(kě)能(néng)會導緻問題。如果必須移動存儲庫,請整體(tǐ)移動整個存儲庫。
打開項目并集成Snapdragon Spaces:
● 在Unity Hub中(zhōng)的UnityProjects文(wén)件夾中(zhōng)添加MRTKDevTemplate。
● 打開Unity項目。
● 按照Unity設置指南中(zhōng)的步驟導入Snapdragon Spaces包。
● 選擇要打開的場景。建議打開HandInteractionExamples場景。
● 根據以上說明配置場景,修改相機和輸入設置。
● 構建并部署到設備。
手部跟蹤
手部跟蹤插件設置
手部跟蹤使用(yòng)混合現實OpenXR插件支持。要獲取插件,請使用(yòng)混合現實功能(néng)工(gōng)具(jù)(如上文(wén)所述),并從平台支持部分(fēn)選擇混合現實OpenXR插件。
完成項目更新(xīn)過程後返回Unity項目。
Unity配置
在Unity中(zhōng),有(yǒu)兩個地方需要更新(xīn)。
MRTK設置
首先是MRTK設置。确保啓用(yòng)MRTK Hands Aggregator子系統和OpenXR Hands API子系統的複選框。
另外,建議嘗試調整“Pinch Closed Threshold”設置的校準值,該設置默認為(wèi)0.25。一些開發者已經嘗試将該阈值調整到0.45或0.5,并取得了一定的成功。
OpenXR設置
第二個需要更新(xīn)的區(qū)域是OpenXR設置。請注意可(kě)能(néng)存在兩個手部跟蹤功能(néng)選項。為(wèi)避免沖突,請僅啓用(yòng)“Microsoft Hand Tracking”複選框,并禁用(yòng)其他(tā)任何手部跟蹤複選框。正确的選項旁邊有(yǒu)一個問号,通過點擊設置圖标可(kě)以确認其為(wèi)Microsoft版本。
手部可(kě)視化設置
除了MRTK提供的手部網格外,Snapdragon Spaces SDK還提供了一個用(yòng)于顯示虛拟手部疊加效果的QCHT手部網格。
實施方法是,在場景層級結構中(zhōng)選擇MRTK XR Rig > Camera Offset > MRTK RightHand Controller下的MRTK RightHand Controller對象。
将位于 packages/QCHT Unity Interactions/Prefabs/MRTK3/ 目錄下的 hand_right_qcht 預制體(tǐ)拖放到 MRTK XR Rig 的 MRTK RightHand Controller 的 Model Prefab 字段中(zhōng)。
對于左手,同樣地進行這個操作(zuò)。
手部追蹤選項
注意! 由于與 OpenXR 控制器配置文(wén)件的沖突,目前無法同時從 Snapdragon Spaces 控制器和兩隻手進行射線(xiàn)投射。因此,有(yǒu)兩個可(kě)選方案。 |
選項1:禁用(yòng)左手跟蹤
要禁用(yòng)左手跟蹤,請在 MRTK XR Rig 中(zhōng)關閉左手控制器,但保持右手控制器開啓。如果保留左手控制器,它可(kě)能(néng)仍能(néng)作(zuò)為(wèi)碰撞體(tǐ)工(gōng)作(zuò),但可(kě)能(néng)無法正确作(zuò)為(wèi)射線(xiàn)交互器工(gōng)作(zuò)。這個選項允許繼續使用(yòng)設備指針,但這種限制可(kě)能(néng)不是理(lǐ)想的選擇。
選項2:禁用(yòng)Snapdragon Spaces控制器(雙手選項)
要禁用(yòng)Snapdragon Spaces控制器,請在場景中(zhōng)移除或停用(yòng)設備指針預制體(tǐ)。
接着,從OpenXR設置中(zhōng)移除該配置文(wén)件。
這會在基礎運行時功能(néng)旁邊标記一個警告,但可(kě)以忽略。這樣可(kě)以使雙手都能(néng)跟蹤,但手機控制器将不會向應用(yòng)程序發送任何指針跟蹤或按鈕按下的消息,因為(wèi)它處于“僅手部跟蹤”模式。這種模式主要推薦用(yòng)于直接從其他(tā)“僅手部跟蹤”平台移植應用(yòng)程序。
MRTK資源
如需更多(duō)關于MRTK的詳細信息,請查閱MRTK3文(wén)檔或訪問Github MRTK項目的源代碼。