手部跟蹤

手部追蹤示例

 

圖片60.png


Spaces 手部管理(lǐ)器


圖片61.png

 

Spaces 手部管理(lǐ)器組件屬于 ARTrackableManager 類型,其編程方式類似于 AR Foundation 的(de)其他(tā)管理(lǐ)器——通(tōng)過提供回調函數來(lái)獲取添加、更新和(hé)删除的(de)項的(de)變化(huà)。


圖片62.png

 

該組件還(hái)提供了(le)一個(gè)檢查器字段,用(yòng)于定義在檢測到手部時(shí)應生成的(de)默認預制體。示例中的(de) Default Spaces Hand 預制體包含兩個(gè)額外的(de)組件,如下(xià)圖所示。這(zhè)些組件将在接下(xià)來(lái)的(de)部分(fēn)中詳細描述。

 

 圖片63.png


Spaces 手部組件

 

 圖片64.png


該組件是獲取所有手部相關數據的(de)通(tōng)用(yòng)接口。它屬于 ARTrackable 類型,因此具有類似 TrackableID、TrackingState 和(hé) Pose 等常見屬性,這(zhè)些屬性由被追蹤手部的(de)腕關節定義。

 

此外,它還(hái)提供了(le)以下(xià)三個(gè)額外屬性:

●  IsLeft: 布爾值。如果被追蹤的(de)手是左手,則返回 true;否則返回 false。

● Joints: Qualcomm.Snapdragon.Spaces.SpacesHand.Joint 類型的(de)數組,該類型具有以下(xià)屬性:

○ Pose: Unity Pose 類型,返回手部關節的(de)姿态。

○ Type: Qualcomm.Snapdragon.Spaces.SpacesHand.JointType 類型,返回枚舉值,表示手部關節的(de)類型。

●  Gesture:Qualcomm.Snapdragon.Spaces.SpacesHand.Gesture 類型,具有以下(xià)屬性:

○ Type:Qualcomm.Snapdragon.Spaces.SpacesHand.GestureType 類型,返回枚舉值,表示檢測到的(de)手勢。

○ GestureRatio: 介于 0 和(hé) 1 之間的(de)浮點值,表示手勢的(de)應用(yòng)程度。

○ FlipRatio: 介于 -1 和(hé) 1 之間的(de)浮點值,表示手勢是從手的(de)背面(-1)、正面(1)還(hái)是介于兩者之間檢測到的(de)。


有關手勢的(de)更多(duō)信息,請參見交互手勢文檔

 

 圖片65.png

圖片66.png

 

Spaces 手部關節可(kě)視化(huà)組件

 

圖片67.png

 

該組件提供了(le)一些屬性,用(yòng)于修改關節可(kě)視化(huà)的(de)外觀,例如:

 

●  JointMesh: 應用(yòng)于每個(gè)關節的(de)網格。

●  JointMaterial: 應用(yòng)于網格的(de)材質。

●  JointMeshScale: 一個(gè)介于 0.005 和(hé) 0.05 之間的(de)浮點值,定義了(le)網格的(de)縮放比例。

●  UseNormalizedColors: 布爾值。如果設置爲 true,則應用(yòng)的(de)材質的(de) _Color 屬性将由組件著(zhe)色。

 

在示例中,UnityEngine 中的(de)簡單球體網格被設置爲 JointMesh,Default-Material 被設置爲 JointMaterial。