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