教學說明
課程分為上、中、下三個部分,上為公開部分,中和下僅社群可見,歡迎關注原文作者以及加入社群。
你可以隨時回到初始頁:Unity Vision Pro 開發|一、開發前準備 來了解從頭開始串連 Unity 與 Apple Vision Pro 的完整流程。
教學內容概括
使用 PolySpatial + XR Interaction Toolkit 開發 visionOS 的 MR 模式下的物體交互功能:
- 眼動 + 手追交互
- Poke 手指點觸
- 近距離抓取物體
- 雙手縮放物體
- 物體高亮效果
- 物體陰影效果
- 交互事件
Unity XR 開發工具架構(底層 + 高層 SDK)
底層 SDK(對接硬件)
不同的底層 SDK 對接對應的 XR 硬件平台,讓 Unity 程序兼容到對應的硬件設備上,適配硬件的特性。提供的 API 偏底層,開發者通常只要在 XR Plug-in Management 中選擇對應的供應商,然後進行設置,Unity 會自動處理程序與硬件的兼容,開發者很少會在代碼中直接調用底層 SDK。
例:Apple visionOS、Oculus、OpenXR
Unity XR 開發架構(底層 + 高層 SDK)
高層 SDK(應用交互層)
將 XR 應用開發中的常用交互功能封裝成模塊給開發者使用。開發者會在開發流程中經常使用高層 SDK。
應用層的交互例如:抓取、Poke 手指點觸、MR 環境識別……
經典的高層 SDK:XR Interaction Toolkit、Meta XR SDK、PolySpatial、AR Foundation、SteamVR SDK
XR Interaction Toolkit(XR 交互工具包)
- 簡稱 XRI
- Unity 推出的跨平台 XR 交互開發工具包
- 封裝了通用的 XR 交互模塊,如抓取、點觸、射線、移動
- 使用 Unity 的 Input System 處理不同平台的輸入
- 支持 OpenXR 標準(但是蘋果不支持)
- 能結合 ARFoundation 開發 AR/MR 應用
Input System(Unity 新版輸入系統)
- 將輸入設備和動作邏輯互相分離,通過配置映射來處理輸入信息
- 動作(Action)是 Input System 的核心
- 在 Unity 中,我們只需要提前配置好動作和輸入的映射關係,無需寫代碼來判斷設備輸入,只需把重心放在邏輯處理上,也就是檢測到輸入後要做的事情
例:射擊
舊版輸入系統 | 新版輸入系統 | |
---|---|---|
輸入:按下手柄板機鍵 | 代碼:如果檢測到按下手柄板機鍵,執行射擊代碼 | 配置文件:將“射擊”動作與“按下手柄板機鍵”綁定 代碼:如果檢測到射擊動作發生,執行射擊代碼 |
輸入:雙指捏合 | 代碼:如果檢測到雙指捏合,執行射擊代碼 | 配置文件:將“射擊”動作與“雙指捏合”綁定 代碼:如果檢測到射擊動作發生,執行射擊代碼 |
這邊比較了舊版與新版輸入系統在處理“射擊”動作時的差異。新版系統中動作與輸入設備分離,透過配置文件綁定後,代碼邏輯變得更加簡潔和模塊化。
Unity visionOS 开发工具选择
基於 Metal 渲染的應用
底層:Apple visionOS
高層:XRI + InputSystem
(+ AR Foundation + XR Hands)
基於 RealityKit 渲染的應用
底層:Apple visionOS
高層:XRI + InputSystem + PolySpatial
(+ ARFoundation + XR Hands)
visionOS 共享空間輸入類型
XR 交互參與的對象
- Interactor:發起交互的對象
- Interactable:被交互的對象
XRI 中通過 XR Interaction Manager 腳本統一管理場景中所有的 Interactor 和 Interactable
上一步:Unity Vision Pro 開發|五、PolySpatial 2.0 導入方式
下一步:Unity Vision Pro 開發|七、UI 互動+ 虛擬鍵盤
————————————————
本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。
特約作家簡介
支持贊助 / DONATE
亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。
BTC |
352Bw8r46rfXv6jno8qt9Bc3xx6ptTcPze |
ETH |
0x795442E321a953363a442C76d39f3fbf9b6bC666 |
TRON |
TCNcVmin18LbnXfdWZsY5pzcFvYe1MoD6f |