【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

千葉Christa發表於2023-02-14

前言

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

當前適用版本:

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

文章最近更新日期:2023.02.14


在之前的文章裡,我們都是直接使用 OculusInteractionSampleRig 來進行操作的,它會直接識別我們是在使用手柄還是單純的手,從而顯示對應的控制器模型或手的模型

如果我希望使用控制器時在遊戲中也顯示手的模型,這該怎麼辦呢?

彆著急,這就是本篇文章要解決的問題!

 

建立新的控制器

首先,我們需要禁用原本的控制器

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

複製一個 Hands,重新命名為 Controller Hands

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

移除 Controller Hands 的 Hand Skeleton OVR 元件

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

找到 HandDataSource,刪除它所有的元件(注:從此處開始,後續步驟左右手類似,文章只展示左手的設定過程)

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

為 HandDataSource 新增 From OVR Controller Hand Data Source 元件

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

Camera Rig Ref 和 Tracking To World Transformer 引用 InputOVR,Hmd Data 引用 Hmd,Update After 引用 LeftHand,Handedness 選擇 Left

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

找到 LeftHand,在 Hand 元件的 Update After 和 I Modify Data From Source Mono 處引用 HandDataSource

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

在 Project 視窗搜尋 OculusHand,找到 OculusHand_L / OculusHand_R 使其成為對應的 HandDataSource 的子物體

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

找到 OculusHand_L > l_handMeshNode,禁用 Skinned Mesh Renderer 元件

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

回到 OculusHand_L,在 Animator 元件的 Controller 處引用 HandController_l_ 作為動畫控制器

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

給 OuclusHand_L 新增 Animated Hand OVR 元件,Controller 選擇 L Touch,Animator 引用自身的 Animator 元件

Animator 元件的 Culling Mode 選擇 Always Animate

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

接下來這一步很關鍵!!

鎖定 HandDataSource 的 Inspector 皮膚,按住 Alt 鍵後點選 b_l_wrist 展開所有子物體,然後把手指的骨骼對應拖動到 Bones 列表(順序如下)

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

這樣手就出現了

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

目前來看我們的手與控制器的位置與旋轉方向都產生了一定的偏差,下一步就來解決這個問題

 

設定手的位置和方向

在 OculusInteractionSampleRig 的子物體中找到  OVRControllerPrefab,關閉控制器模型的顯示

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

然後回到手的 HandDataSource,在 From OVR Controller Hand Data Source 中調整手的偏移量(此處左右手資料一致)

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

我們來看看效果(為了演示效果,左手的控制器模型沒有禁用)

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 

最後,找到 HandInteractorsLeft 的子物體 HandGrabAPI,新增 Finger Raw Pinch Injector 元件,並引用自身的 Hand Grab API 元件(右手也一樣)

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型  

 

大功告成!!!

【Oculus Interaction SDK】(九)使用控制器時顯示手的模型

 


參考資料

https://www.youtube.com/watch?v=GF2BswT7EcM

相關文章