天天看點

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

作者:映維Nweon

(映維網Nweon 2022年11月25日)互動是沉浸式VR的一個關鍵方面。為了提高留存并提升整體體驗,它必須自然和直覺。是以,Meta為Presence Platform帶來了Interaction SDK,進而幫助開發者利用子產品化和靈活的元件來實作大量互動,進而建立高品質的手部和控制器互動。

在日前釋出的博文中,Meta介紹了Interaction SDK的功能、示例和其他資源。視訊可以通路YouTube,下面映維網整理了相關的文字說明:

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

1. 什麼是Interaction SDK?

Interaction SDK是一個元件庫,用于為你内容體驗添加控制器和手部互動。它允許你納入使用者互動的最佳實踐,Ray光線投射、Poke戳和Grab抓的互動模型,以及HandGrab、HandGrabUse和Pose Detection的互動模型。

要使用Interaction SDK,你需要安裝支援的Unity版本和Oculus Integration包。更多有關先決條件、支援裝置、Unity版本和依賴關系的更多資訊請檢視這一頁面。

Meta希望令你的Interaction SDK體驗盡可能流暢,是以團隊會定期添加新功能,進行bug修複和改進。有關新功能、棄用和改進的最新資訊可以檢視這一頁面。

2. Interaction SDK如何工作?

Interaction SDK中的所有互動模型都由一對Interactor-Interactable元件定義。例如,Ray光線互動由RayInteractor-RayInteractable元件對定義。Interactor和Interactable元件一起構成互動。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

更多有Interactor-Interaction的資訊請檢視這一頁面。你同時可以選擇使用InteractorGroup并根據多個Interactor的狀态來協調它們。這一頁面介紹了InteractorGroup是什麼,如何使用它們,以及它們如何幫助你協調多個Interactor以建立 InteractorGroupMulti。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

如果你想令一個互動依賴于另一個正在進行的互動,你可以在一個主要-次要關系中将互動彼此聯系起來。例如,如果你想首先抓取一個對象,然後使用它,這時抓取互動為主要,而使用互動則是次要。更多資訊請通路這一頁面。

3. 有什麼可用的互動?

Interaction SDK允許你實作一系列穩定和标準化的互動,如Ray光線投射、Poke戳和Grab抓等:

3.1 Hand Grab手抓

Hand Grab互動提供了一種抓取對象,并将對象對齊到預先編寫的手抓姿勢的方法。它使用HandGrabInteractor和HandGrabInteractable進行此互動。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

Hand Grab使用每個手指資訊,使用HandGrabAPI來通知選擇何時開始或結束,HandGrabAPI訓示抓取開始和停止的時間,以及抓取姿勢的強度。當HandGrabInteractor搜尋最佳可互動候選對象并提供所需的必要對齊資訊時,HandGrabInteractor訓示是否可以抓取對象、對象如何移動、哪根手指執行抓取、用手資訊、手指限制、手應該如何對齊等等。這一頁面讨論了Hand Grab Interaction的更多資訊。

3.2 Poke戳

Poke互動允許使用者通過直接觸碰與表面互動,例如按下或懸停在按鈕之上,然後與彎曲和平面的UI互動。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

Poke使用PokeInteractor和PokeInteractable進行互動。PokeInteractor使用名為Pointable Surface的碰撞曲面來計算懸停和選擇。更多源于Poke的資訊請通路這一頁面。

PokeInteractable同時可以與PointableCanvas結合,以實作可直接觸碰的Unity UI。這一頁面介紹了如何将Interaction SDK與Unity Canvas內建。

3.3 Hand Pose Detection

Hand Pose Detection手勢檢測提供了一種能夠識别手部何時比對形狀和手腕方向的方法。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

這個SDK提供了六個示例姿勢作為預制件,并展示了Hand Pose Detection的工作原理:

  • 剪刀石頭布的石頭姿勢
  • 剪刀石頭布的布姿勢
  • 剪刀石頭布的剪刀姿勢
  • 拇指向上姿勢
  • 拇指向下姿勢
  • 停止姿勢

根據所述姿勢定義的模式,你可以定義自己的姿勢。更多關于姿勢預制件包含的内容,請檢視這一頁面。

這個互動使用ShapeCognition、TransformRecognition、VelocityRecognition和其他函數來檢測形狀、姿勢和方向。ShapeRecognizer允許你指定手指特征,而Transform提供有關方向和位置的資訊。更多相關資訊請檢視Shape頁面,Transform頁面和Velocity頁面。

3.4 Gesture手勢

Interaction SDK結合了Sequences和Active State的使用,使得你能夠建立手勢。你可以使用Sequences連結Active State以建立手勢,例如滑動手勢。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

當滿足指定的條件(如形狀、變換特征、速度等)時就可以激活一個狀态。例如,當手指特征的所有狀态與所列形狀中的狀态比對時,或者說當滿足指定形狀的條件時,一個或多個ShapeRecognizerActiveState元件可以變為活動狀态。

由于Sequences可以随着時間的推移識别一系列活動狀态,是以它們可以用于建立複雜的手勢。更多關于Sequences的資訊請檢視這一頁面。

3.5 Distance Grab遠距離抓取

Distance Grab互動允許使用者選擇和移動通常超出臂展範圍的對象。例如,這可以意味着将對象吸到手,然後抓住它。 Distance Grab同時支援其他動作。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

這個互動使用DistanceHandGrabInteractor和DistanceHandGrabInteractable。這一頁面介紹了Distance Grab互動是如何工作,如何選擇最佳的遠端互動,以及如何自定義互動的行為等等。

3.6 Touch Hand Grab接觸抓取

Touch Hand Grab根據碰撞器的配置抓取對象,并令手指動态貼合其表面。這意味着使用者可以通過接觸表面來抓取互動對象,無需完全抓握對象。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

這個互動使用TouchHandGrabInteractor和TouchHandGrabInteractable。TouchHandGrabInteractor定義了接觸互動屬性,而TouchHandGrabInteractable定義了Interactor用于在選擇期間測試重疊的碰撞器。更多關于Touch Hand Grab互動的資訊請通路這一頁面。

3.7 Transformers變換

Transformers允許你定義在三維空間中操縱可抓取對象的不同方式,包括如何使用可選限制平移、旋轉或縮放對象。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

例如,可以為對象使用Grab互動、Transformers和Constraints來實作互動,例如在平面上移動對象、使用雙手更改其比例和旋轉對象等等。

3.8 Ray Interactions射線互動

Ray Interactions允許使用者通過光線投射來選擇對象。然後,使用者可以選擇使用姿勢進行互動。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

這個互動使用RayInteractor和RayInteractable。RayInteractor定義了光線投射的原點和方向,以及互動的最大距離,而RayInteractable則定義了被投射對象的表面。使用手時,HandPointerPose元件可用于指定RayInteractor的原點和方向。更多關于射線互動的資訊請通路這一頁面。

如果你想了解更多關于上述功能的資訊,請檢視這個互動文檔。

4. Interaction SDK示例

為了友善你嘗試相關互動,Meta提供了Interaction SDK Samples應用,并展示了上面讨論的每個功能。這個示例應用程式位于App Lab。為了幫助你更好地了解互動,它将每個功能作為單獨的示例突出顯示。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

在嘗試示例之前,請確定你已啟動手部追蹤。請轉到頭顯端的“Setting/設定”,單擊“Movement Tracking/運動追蹤”,然後打開“Hand Tracking/手部追蹤”。你可以将“Auto Switch Between Hands And Controllers/手和控制器之間的自動切換”選項保留為選中狀态,以便在放下控制器時可以使用手部。

進入應用後,頁面将顯示所有可供嘗試的示例互動,包括上面列出的互動。

  • HandGrab示例:這個示例展示了HandGrabInteractor,并示範了單手抓握姿勢。例如,你可以以單手抓握火炬。
  • Touch Grab示例:這個示例展示了如何通過觸摸而不是實際抓取對象來抓取對象。Touch Grab使用對象的實體形狀動态建立手勢。在這裡,你可以找到一個運動學和非運動學的例子來嘗試這種互動。
  • Distance Grab示例:這個示例展示了多種發送信号、吸取和抓握遠距離對象的方法。例如,Anchor at Hand可以錨定對象,你可以移動錨點而不實際抓取。Interactable to Hand則顯示對象快速朝手部移動,然後保持與手的連接配接。最後,Hand to Interactable允許你遠距離移動對象,就好像你的手就在遠距離對象的附近一樣。
  • Transformers示例展示了GrabInteractor和HandGrabInteractable,并添加了實體、變換和對象限制。地圖展示了僅平移具有平面限制的可抓取對象。寶石展示了可以用手拿起,扔下,變換和縮放的實體物體。相框則展示了帶有限制的單手旋轉變換。
  • Hand Grab Use示例:這個示例示範了如何在HandGrab互動之上執行Use互動。在本例中,你可以抓住噴水瓶并用手指按住扳機。然後,你可以瞄準植物,按下按鈕,進而以直覺自然的動作灑水葉片。
  • Poke示例:這個示例展示了PokeInteractor應用在各種具有觸碰限制的表面之上。它使用獨立按鈕或Unity Canvas來示範戳按互動和可按下按鈕。
  • Ray示例:這個示例展示了RayInteractor使用CanvasCylinder元件與彎曲的Unity畫布互動。它示範了與Unity畫布的射線互動。它同時展示了允許各種材質類型的曲面:Alpha Cutout、Alpha Blended和Underlay。
  • Poses示例:這個示例展示了六種不同的手部姿勢,并帶有姿勢識别的視覺信号。它檢測拇指向上、拇指向下、剪刀石頭布和停止姿勢。姿勢可以由左手或右手觸發。它同時會在姿勢開始時觸發粒子效果,并在姿勢結束時隐藏效果。Interaction SDK提供了一個手勢創作工具,它允許你啟動編輯器,以自然的方式伸出手并握住項目,記錄姿勢,然後立即使用姿勢。
  • Gestures示例:這個示例示範了Sequence元件與ActiveState邏輯的結。需要注意的是,手勢僅在懸停在對象上時才處于活動狀态。

更多關于上述示例如何工作的資訊,并尋找開始使用它們的參考材料,請檢視示例場景和功能場景。

5. 嘗試《First Hand》

除了上述示例,Meta同時利用Interaction SDK建構了手部追蹤示範内容《First Hand》。這款應用将允許你以雙手使用開關、杠杆和虛拟使用者界面,以及建構機器人手套等等,進而以裸手方式體驗直接用手與虛拟世界互動的魅力。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

《First Hand》利用Presence Platform的互動元件、手勢和工具庫Interaction SDK建構,并包含一系列旨在展示裸手互動魅力的互動模型。它通過App Lab釋出,是一個開源項目,面向希望在自家遊戲和應用中輕松複制類似互動的開發者。

Meta指出,《First Hand》的靈感來自于Touch控制器示範内容《Oculus First Contact》,而《Oculus First Contact》不僅是一種愉快的體驗,而且重新定義了與六自由度控制器的互動類型。是以對于《First Hand》,“我們希望同樣以類似的方式來激勵開發者建構突破性的内容。”

《First Hand》展示了Meta認為最神奇、最強大、最容易學習、但又适用于衆多類别内容的手部互動。團隊表示,通過Interaction SDK提供的先進直接觸摸啟發法(如觸摸限制,防止手指意外穿過按鈕),與虛拟現實中的2D UI和按鈕進行互動感覺非常自然。

這個工具同時展示了SDK提供的多種抓取技術。用手直接與虛拟世界互動有其内在的意義,但團隊發現相關互動需要仔細調整才能真正發揮效用。在應用程式中,你可以通過與各種對象互動來進行實驗,甚至可以通過用力擠壓岩石來真正壓碎岩石。

進入《First Hand》後,你将會看到一張桌子擺放着可以與之互動的各種物品。你可以看到映射着真實手部動作的虛拟雙手。你會注意到你左邊的一個燈在閃爍,這表明你可以與它互動。它告訴你一個快遞包裹正在等待你簽收。然後,你可以按下簽收按鈕。這主要示範了HandGrab和Poke互動。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

包裹簽收後,系統會提示你拉動搖桿。拉動搖桿會打開包裹。這示範了HandGrab互動和one-handed rotate transform單手旋轉變換。接下來,你需要輸入寫在數字鍵盤的代碼以解鎖包裹。這使用了Poke互動。

接下來,一個轉輪出現在你面前,你可以用手抓握并轉動它。這将打開對話框,并出現一個可互動的UI。你可以通過所述UI建立自己的機器人手套。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

你可以用手導航UI,并點選選擇要首先建立的手套哪個部分。這示範了Poke互動。選擇第一個部分,它将在你面前顯示手套的部分。你會看到三種顔色選項。滑動以選擇你喜歡的顔色。這示範了滑動手勢檢測功能。你可以拿起它,縮放它,旋轉它,或者移動它。這個互動使用Touch Grab互動和Two Grab Free Transformer。一旦你選擇了一種顔色,你就可以按下按鈕進行實際建構。然後,你可以轉到下一節,并以類似的方式建立手套的其餘部分。

一旦你的手套準備完畢,系統會給你三塊石頭,你可以在它們之間進行選擇并添加到你的手套中。你可以通過抓住一塊石頭進行裝備,然後你可以通過用力擠壓石頭,壓碎它,令它露出水晶。這是一種Use Grab互動。一旦水晶準備完畢,你就可以把它放在手套進行激活。現在,你擁有了超能力手套。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

接下來,一個物體開始圍繞你飛行,并嘗試用雷射攻擊你。你可以使用你的超能力向目标射擊,并同時躲避對方的攻擊。射擊時,你可以張開手掌瞄準。如果要建立一個盾牌,請雙手合十。這顯示了如何将姿勢檢測用于雙手姿勢。基于正确的姿勢,它執行适當的動作。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

最後,你會看到手套有一個藍色按鈕,并允許你通過戳壓來選擇。它可以将你傳送到一個可以遠遠看到鐘樓和其他可互動對象的世界,進而令玩家暢想互動可以解鎖的能力。

建立裸手互動體驗需要跨多個限制進行優化:技術(如追蹤能力)、生理(如舒适度和疲勞度)和感覺(如手-虛拟對象互動表示)。

《First Hand》展示了Meta認為最神奇、最強大、最容易學習、但又适用于衆多類别内容的手部互動。團隊表示,通過Interaction SDK提供的先進直接觸摸啟發法(如觸摸限制,防止手指意外穿過按鈕),與虛拟現實中的2D UI和按鈕進行互動感覺非常自然。

為了幫助你更輕松地使用所述互動,Meta建立了一個開源項目,示範了如何使用Interaction SDK建立《First Hand 》應用地各種互動。在下一節中,團隊将向你介紹Unity中的Interaction SDK軟體包以及如何設定《First Hand》示例的本地副本。

6. 設定《First Hand》示例的本地副本

6.1 設定

要獲得示例的本地副本,你需要在PC或Mac安裝Unity并安裝Oculus Integration軟體包。本次示範使用了Unity 2021.3.6f1進行設定,但你可以使用任何支援的Unity版本。更多有關先決條件、支援裝置、Unity版本和依賴關系的更多資訊請檢視這一頁面。Oculus Integration SDK可以從Unity Asset Store或Oculus開發者中心下載下傳。

你哦同時應確定頭顯端已打開“開發者模式”。你可以通過頭顯或Meta Quest app完成這一操作。對于頭顯端,請依次轉到設定→ 系統→ 開發者,然後打開USB連接配接對話框選項。對于Meta Quest app,你可以進入菜單→ 裝置→ 從清單中選擇頭顯,然後打開“開發者模式”選項。

安裝Unity後,打開一個新的3D場景。要安裝Interaction SDK,請轉到視窗→ Asset Store,并查找Oculus內建包,然後單擊“添加到我的Asset”。要安裝Oculus Integration軟體包,請打開軟體包管理器,單擊“導入”,然後将檔案導入到項目中。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

如果系統檢測到OVRPlugin存在新版可用,建議使用最新版本。繼續并啟用它。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

如果要求将OpenXR用于OVRPlugin,請單擊“使用OpenXR”。隻有OpenXR後端才支援Passthrough API等新功能。你可以随時通過Oculus→ Tools→ OVR Utilities Plugin切換legacy和OpenXR後端。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

它将确認選擇,提供一個選項來更新Interaction SDK并執行清理以删除過時和棄用的asset。請允許它這樣做。另外,你可以随時通過Oculus→ Interaction → Remove Deprecated Assets來執行這一操作。

安裝後,你可以在Oculus下的Interaction檔案夾中找到Interaction SDK元件。

由于你是為為Meta Quest建構内容,請確定平台更新為Android。為此,請轉到檔案→ 生成設定→ 選擇Android并選擇“Switch Platform”

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

6.2 Interaction SDK軟體包有什麼?

Interaction SDK元件在Oculus下的Interaction檔案夾。SDK包含三個檔案夾:Editor、Runtime和Samples。Editor包含SDK的所有編輯器代碼,Runtime包含Interaction SDK的核心運作時元件,Samples包含前面讨論的Interaction SDK示例示範所使用的場景和asset。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

在Samples下,單擊“Scenes”。在這裡,你可以找到示例場景、功能場景和工具。Example Scenes目錄包含你之前在Interaction SDK示例應用程式中看到的所有場景。Feature Scene目錄包含專用于任何單個功能基礎的場景,Tools目錄包含Hand Pose Authoring Tool等助手。我們打開其中一個示例HandGrabExamples,看看場景設定、腳本和其他元件,以及如何使用它們來建構你在示例中看到的互動。

打開任何示例場景時,系統可能會要求你導入TMP essentials。然後你的場景就會打開。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

下面我們看看部分遊戲對象和腳本,了解它們的工作原理:

  • OVRCameraRig:這個預制件提供了表示Oculus追蹤空間的變換對象。它包含一個TrackingSpace遊戲對象及其下的OVRInteraction遊戲對象。
  • TrackingSpace:這個預制件允許使用者微調頭部追蹤參考幀和世界之間的關系。在Tracking Space下面,你會找到一個center eye anchor,這是主要的Unity camera,每隻眼睛有兩anchor game object,控制器則是左右手anchor。
  • OVRInteraction:它包含OVRControllerHands和OVRHands。
Quest Interaction SDK分享:幫助開發者實作高品質控制互動

關于OOVRIntegration預制件的更多資訊以及它如何與OVRHands一起工作,請檢視這個Input文檔。

OVRCameraRig預制件附帶兩個主要腳本:OVRManager和OVRCamera Rig。

OVRManager是VR硬體的主要接口,并向Unity引擎expose相關的Oculus SDK。它包含目标裝置、性能、追蹤和色域的設定。除了所述設定,OVRManager同時包含Meta Quest特定的設定:

  • 手部追蹤支援:這允許你為應用程式選擇所需的輸入啟示類型。你可以選擇“僅控制器”;“控制器”和“手”并在兩者之間切換;或僅“手”。
  • 手部追蹤頻率:你i可以從清單中選擇手部追蹤頻率。更高的頻率可帶來更好的手勢檢測和更低的延遲,但會占用更多的性能。
  • 手部追蹤版本清單:這個設定允許你選擇要使用的手部追蹤版本。選擇v2以使用最新版本的手部追蹤。最新的版本允許你更接近在VR中建構沉浸和自然的裸手互動。

如前所述,每個互動都由一對Interactor和Intractable組成。Intractable是手或控制器将與之互動的剛體對象,它們應始終具有Rrabbable元件。更多有關Grabbables的資訊請檢視這個頁面。

這個示例示範了HandGrabInteractor和HandGrabInteractable對。HandGrabInteractor腳本位于OVRInteraction → OVRHands → Choose LeftHand or RightHand→ HandInteractorsLeft/Right → HandGrabInteractor。

剛體對象的對應位于Interactables → Choose one of the SimpleGrabs → HandGrabInteractable。它包含HandGrabInteractable腳本,而HandGrabInteractable用于訓示對象可以使用手或控制器并通過Hand-Grab進行互動。它們需要一個用于Interactable 的剛體元件和一個用于3D操縱的Grabbable元件。

現在,你已經基本了解如何使用OVRCameraRig、OVRManager、OVRInteraction設定場景,以及如何添加 Interactor-Interactable對。下面我們來看看如何設定《First Hand》示例的本地副本。

6.3 從GitHub克隆并在Unity中建立《First Hand》示例

GitHub repo包含Unity項目,其示範了《First Hand》應用程式中呈現的互動。它設計用于手部追蹤。在本地設定示例的第一步是克隆repo。

首先,你應該通過運作以下指令來確定安裝了Git LFS:

git lfs install

           

接下來,通過運作以下指令從GitHub克隆repo:

git clone https://github.com/oculus-samples/Unity-FirstHand.git

           

項目成功克隆後,在Unity中打開它。如果使用不同版本的Unity,你可能會收到警告。接受警告後,它将解析軟體包并使用你的Unity版本打開項目。這可能會觸發另一個警告:Unity需要更新URP材質以便啟動項目。接受它,項目将加載。

主要場景稱為 Clocktower鐘樓場景。所有實際項目檔案都位于“Assets/Project”中。這個檔案夾含有運作示例的所有腳本和asset,不包括Interaction SDK的一部分。這個項目已經含有Oculus SDK的v41,包括Interaction SDK。你可以在Assets/Project/Scenes/Clocktower下面找到主場景。就像以前一樣,如果你沒有TMP essentials,請導入它,場景将成功加載。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

在建構場景之前,請確定将“Hand Tracking Support”設定為“Controllers and Hands”。要執行這個操作,請轉到Player → OVRCameraRig → OVRManager。

在Hand Tracking Support下面,選擇“Hands and Controllers or Hands only”。将Hand Track Version設定為“v2”以使用最新版本,将Tracking Origin Type設定為“Floor Level”。確定你正在建構的平台是Android。要生成,請轉到 File → Build Settings設定并單擊“Build”。

你可以選擇單擊“Build and Run”直接在頭顯加載并運作它,或者從Meta Quest Developer Hub(MQDH)安裝并運作它。

如果選擇使用MQDH,可以将apk拖到應用程式之中,然後單擊安裝以在頭顯安裝并運作。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

當加載示例時,你将看到《First Hand》中的可互動對象。你同時會看到一個啟用爆炸和盾牌手勢的選項,以及啟用遠距離抓取的選項。你将能夠使用Poke互動與前面的UI互動。你同時可以像在《First Hand》中那樣用手套與物品進行互動。請注意,這個示例僅展示了《First Hand》的互動,它不是完整的遊戲。

下面列出了本示例中可以與之互動的對象及其示範的互動類型:

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

以上示範了《First Hand》用Interaction SDK建立的各種互動。下面我們來看看相關的資源和最佳實踐。

7. 最佳實踐

為了令手部追蹤成為VR中有效的互動手段,它需要感覺直覺、自然、輕松。然而,手不像其他輸入方式那樣帶有按鈕或開關。這意味着沒有關于如何與系統互動的暗示,同時沒有觸覺回報來确認使用者的動作。

為了解決這個問題,Meta建議通過清晰的能指和對所有互動的持續回報來傳達可供性。你可以用兩種方式來考慮這一點:能指,傳達使用者可以對給定對象做什麼;回報,它在整個互動過程中确認使用者的狀态。

例如,在《First Hand》中,視覺和聽覺回報在提示使用者與對象互動方面起着重要作用;裝置會發出嘟嘟聲并發出紅光,進而告知玩家應該按下按鈕,發光的物體有助于玩家識别何時可以從遠處抓取物體,UI按鈕的顔色變化會在選中時确認使用者的選擇。另外,建立提示以引導玩家非常有效。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

手的移動方式和姿勢幾乎無窮無盡。這帶來了一個充滿機會的世界,但同時會造成混亂。通過限制系統可以解釋哪些手部動作,我們可以實作更精确的互動。例如在《First Hand》示例中,玩家可以抓取某些對象,但不能抓取所有對象。他們可以抓取、移動和縮放一些對象,但不是所有對象。另外,為了防止對象變形,不允許他們僅在一個方向進行縮放。

Snap Interactors是放置區域互動和固定項目的絕佳選擇。你會看到《First Hand》中有廣泛使用,尤其是手套建構場景之中。

Interaction SDK的Touch Hand Grab互動可用于小型對象,尤其是沒有自然方向或抓取點的對象,你無需使用預先編寫的姿勢限制玩家。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

對于使用者無法觸及的對象,光線投射在選擇對象時非常友善。Distance Grab同時是另一種選擇,可以幫助使用者輕松地與對象進行互動,無需使用者走向對象或伸手接觸對象。這可以令你的體驗更直覺。

Distance Grab易于配置。通過重複使用為正常抓取設定的相同手部姿勢,你可以在設定Distance Grab項目時節省時間。在《First Hand》示例中,你可以看到如何使用Distance Grab從遠處抓取對象,以及來自手的視覺光線如何确認将抓取哪個對象。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

在設計你的裸手互動體驗時,追蹤和人體工程學發揮着巨大的作用。頭顯的傳感器能看到的手部範圍越多,追蹤就越穩定。隻有在頭顯視場内的對象才能被檢測到,是以,你應該避免強迫使用者接觸追蹤區域之外的對象。

確定使用者盡可能保持持平的身體姿勢十分重要。這允許更舒适的人體工程學體驗,同時将手保持在追蹤傳感器的理想位置。例如在《First Hand》示例中,整個遊戲可以坐着或站着體驗,而手幾乎總是放在頭顯前面。這使得手部追蹤更加可靠。

Quest Interaction SDK分享:幫助開發者實作高品質控制互動

以上是你在設計裸手互動時的最佳實踐建議。未來可繼續關注Meta分享的更多開發實踐。

繼續閱讀