Unity XR Interaction Toolkit 教學說明
這期教學我將介紹使用 Unity 官方推出的 XR Interaction Toolkit 開發 XR 應用的基礎準備,包括軟硬體需求、如何安裝和設置 XR Interaction Toolkit、常見互動模組的運用,以及基於不同平台的相容性調整與優化。透過本期教學的學習,您將掌握使用 Unity XR Interaction Toolkit 開發跨平台 XR 應用的核心技術,為後續深入開發 XR 應用奠定堅實的基礎。
抓取互動課程內容:
- 配置抓取相關腳本,講解腳本上的常用參數。
- 遠距離抓取時使射線不彎曲。
- 遠距離抓取時保持手部與物體的相對距離不變。
- 抓取物體時讓物體能夠被其他碰撞體阻擋。
- Unity 磁碰產生的條件。
- 優化 VR 場景的陰影效果。
- 設置抓取點。
- 雙手抓取物體(以其他物體抓取為例)。
- 雙手縮放物體。
- 互動探測範圍。
- 抓取物體時鬆開抓取鍵也能保持抓取狀態。
XR Interaction Toolkit 是什麼
XR Interaction Toolkit 是 Unity 官方推出的一套跨平台互動開發工具包,專為 XR(擴增實境、虛擬實境及混合實境)應用設計,提供常見互動功能的封裝模組,幫助開發者快速高效地實現 XR 應用的互動需求。
Unity XR 開發架構
使用 Unity 開發 XR 應用的整體架構由底層插件和高層 SDK 組成。
在本套系列教學中,會使用 OpenXR + XR Interaction Toolkit 的開發方案。
底層插件(對接硬體)
不同的底層插件對接對應的 XR 硬體平台,讓 Unity 程式相容到對應的硬體設備上,適配硬體的特性和使用者的輸入。
開發者通常只要在 Unity 的 XR Plug-in Management 中選擇對應的 XR 插件供應商,然後進行設置,Unity 會自動處理程序與硬體的兼容,使得開發的應用能夠成功接入設備的 XR 能力,在設備上正常運作。
範例: OpenXR ,Apple vision OS,Oculus,Pico XR 插件。
高層 SDK(面向應用交互層)
將 XR 應用開發中常用的互動功能封裝成模組給開發者使用。開發者會在開發流程中經常使用高階SDK。
經典的高層 SDK:XR Interaction Toolkit,Meta XR SDK,PolySpatial,SteamVR SDK。
OpenXR
在早期,不同的 XR 裝置都維護它們各自的 SDK,供開發人員製作出能在對應裝置上運作的程式。但尷尬的地方就在於,可能利用廠商 A 提供的 SDK 開發的程式無法相容到廠商 B 的硬體設備。不像如今已經比較成熟的安卓行動端,只需用 Android SDK 開發一款程序,就能相容於不同的安卓手機上。
而 OpenXR 就是為了簡化 XR 開發而製定的一套標準。相當於在編寫的 XR 應用程式和不同的硬體設備間新增了一個中間層,向上提供一套統一的開發 API,不同的開發引擎對該 API 進行二次封裝,提供給 XR 應用開發者使用。而不同的設備廠商為硬體編寫支援 OpenXR 標準的接口,使得中間層能夠向下相容對應的硬體設備。如今,越來越多的 XR 裝置開始支援 OpenXR 標準,這意味著選用 OpenXR 進行 XR 裝置的開發可以成為通用的方案。
有了統一的標準後只要寫一次程式碼,就能相容於所有的裝置。這樣開發者只要專注於程式開發本身,而不用在意設備間的差異。
XR Interaction Toolkit
特點
- 簡稱 XRI。
- Unity 推出的跨平台 XR 互動開發工具包,跨平台機制體現在以下幾個面向:
- 封裝了通用的X R 互動模組,如抓取、點觸、射線、移動。
- 使用 Unity 的 Input System 處理不同平台的輸入。
- 支援 OpenXR 標準(但蘋果不支援)。
- 能結合 AR Foundation 開發 AR/MR 應用。
- 逐漸成為業界流行的標準,許多平台推行使用 XRI 作為互動開發包,結合自家 SDK(包含了硬體的特性),完成整套開發流程。
XRI 能夠實現的互動類型
- 3D 物體互動:抓取物體,遠距離操控物體,點選物體…。
- UI 互動:點擊按鈕,拖曳滑動條…。
- 移動:持續移動,傳送,攀爬…。
XR 互動參與的對象
Interactor:啟動互動的對象。
Interactable:互動的對象。
XRI 中透過 XR Interaction Manager 腳本統一管理場景中所有的 Interactor 和 Interactable。
XRI 中與互動相關的狀態
Hover 懸停
- 當 Interactor 接近 Interactable,準備互動的時候,會進入到 Hover 狀態。
- 範例:使用手柄射線點擊 UI 按鈕,當射線射到 UI 按鈕上時,就進入到 Hover 狀態,此時點擊動作未發生,還未正式進行交互。
Select 選中
- 在進入到 Hover 狀態的前提下,做出額外的輸入動作發起交互,進入到 Select 狀態。
- 範例:使用手柄射線點擊UI 按鈕,當射線射到 UI 按鈕上時,進入到 Hover 狀態,然後按下手柄的扳機鍵,相當於做出點擊按鈕的動作,進入到 Select 狀態。
Focus 獲得焦點
- 當物件進入 Select 狀態時,同時也會處於 Focus 狀態,直到再次選取 Interactable 或選取另外一個 Interactable 或明確不選擇任何內容時退出 Focus 狀態。
- 例:使用手柄抓取物體,手柄靠近物體時進入到 Hover 狀態,然後按下手柄抓取鍵把物體抓起時會同時進入到 Select 和 Focus 狀態,鬆開手柄抓取鍵結束抓取,會退出 Select 狀態,但是不會退出 Focus 狀態。重新抓起物體,才會先退出 Focus 狀態,再同時進入新的 Select 和 Focus 狀態。鬆開後單獨按下手柄抓取鍵但不抓起物體,也能退出 Focus 狀態(明確不選擇任何內容)。
Activate 激活
- 在進入到 Select 狀態的前提下,做出額外的輸入動作可進一步對當前的交互對象進行交互。
- 範例:用手柄抓取鍵拿起手槍,進入 Select 狀態,然後按下手柄扳機鍵進行射擊,進入 Activate 狀態。
下一步: Unity XR Interaction Toolkit 開發|二、導入 SDK【3.0 以上版本】
————————————————
本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。
特約作家簡介
支持贊助 / DONATE
亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。
BTC |
352Bw8r46rfXv6jno8qt9Bc3xx6ptTcPze |
|
ETH |
0x795442E321a953363a442C76d39f3fbf9b6bC666 |
|
TRON |
TCNcVmin18LbnXfdWZsY5pzcFvYe1MoD6f |