【Oculus Interaction SDK】(五)設定不同的抓握手勢

千葉Christa發表於2023-02-09

前言

這篇文章是【Oculus Interaction SDK】系列的一部分,如果發現有對不上的對方,可以回去翻看我之前釋出的文章,或在評論區留言。如果文章的內容已經不適用於新版本了,也可以直接聯絡我,我會持續更新文章內容。

當前適用版本:

  • Unity 版本:2021.3.7f1c1
  • Oculus Interaction SDK 版本:47.0

文章最近更新日期:2023.02.09

 


設定不同的抓握手勢

之前在玩 ALEX 的時候,發現從不同的方向拿起同一件物品時會有不同的抓握手勢,這種新奇的互動感受讓我的遊戲體驗大幅提升。現在,使用新版本的 SDK 也可以很方便地設定自定義的抓握手勢了

 

介於內容的特殊性,使用單純的方塊模型就沒有什麼意思了,我們找一個相對複雜一點的模型來進行演示

在 Project 視窗中搜尋 mugMesh 直接拖到場景中,再給模型更換一個辨識度高一點的材質

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

給杯子新增 Mesh Collider、Rigidbody 和 Grabbable 元件 ,其中 Mesh Collider 需要勾選 Convex 選項

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

然後到導航欄開啟 Oculus > Interaction > Hand Grab Pose Recorder,這個工具可以幫助我們在執行模式下記錄手的姿態,並儲存為資料檔案

  • 選擇需要記錄手勢的手(在這裡我選擇的是左手),沒有選擇的手的姿態不會被記錄
  • 選擇設定手勢對應的物體,我們需要他的剛體(Rigidbody)元件
  • 這個工具有一個預設的幽靈手來幫助我們視覺化已經錄製的手勢,在這裡我就不做更改了
  • 預設情況下是按下空格鍵來完成一次記錄,你也可以選擇其他按鍵,這裡也不做修改

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

點選 Play 進入執行模式,開始錄製不同的手勢

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

錄製完成之後記得儲存資料,點選 Save To Collection 生成手勢集合檔案,儲存完之後再退出執行模式

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

退出執行模式後,點選 Load From Collection 將手勢資料載入到物品上

(這裡有一個 bug,如果你發現 Load From Collection 按鈕點選之後沒有效果,把整個視窗高度縮小之後再點選就可以了)

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

對錄製的手勢進行調整

在開啟手勢的列表之後,可以看到手部關節處可以調整,可以自己對手勢進行為微調

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

甚至可以搞出很多奇怪的手型

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

也可以設定抓握時手指的自由度

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

甚至可以利用已經建立的左手的姿態來映象一個右手姿態(在 Hand Grab Interactable 元件裡)

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

調整完成後,測試下看看

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

看起來似乎是實現了使用不同的手勢抓取物體,但手的姿態卻並不像我們設計的那樣受到限制

那麼下一步就是要把手的姿態控制住!

 

限制手的姿態

回到 OculusInteractionSampleRig,找到 LeftHand 和 RightHand,把它們對應的子物體 LeftHandVisual / RightHandVisual 禁用掉

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

給左右手分別新增對應的 OVRLeftHandSynthetic / OVRRightHandSynthetic 元件(以下所有操作左右手類似,別忘記做另外一隻手 ^_^)

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

別忘記在 I Modify Data From Source Mono 處引用 LeftHand

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

還需要一個 Hand Grab State Visual 元件,Hand Grab Interactor 引用 HandGrabInteractor,Synthetic Hand 引用自己的 Synthetic Hand 元件

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

大功告成!!!

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

使用控制器時,如果模型是手,該怎麼實現姿態控制?

我們實現了在手勢追蹤模式下的手勢姿態限制,但是控制器模式下手勢姿態就沒法使用了

【Oculus Interaction SDK】(五)設定不同的抓握手勢

 

如果我需要在使用控制器的前提下使用手的模型,那麼控制器操作的手能不能實現姿態限制呢?

這個問題我會在後續的文章裡解決,敬請期待!

 


參考資料

https://www.youtube.com/watch?v=67hPv3C11Rk&t=1s

相關文章