versionPor 手部關(guān)節(jié) 相關(guān)

handTrackingProvider

HandTrackingProvider 是一個(gè)用于處理手部跟蹤的類,繼承自 DataProvider。它提供了一系列方法和屬性來獲取和管理手部錨點(diǎn)(anchors)和跟蹤狀態(tài)朦蕴。
屬性詳解
屬性與方法
latestAnchors: (leftHand: HandAnchor?, rightHand: HandAnchor?)
描述:這是一個(gè)只讀屬性,返回一個(gè)元組款咖,包含最新的左手和右手錨點(diǎn)交掏。如果手部跟蹤提供者未在運(yùn)行,返回的錨點(diǎn)將為 nil。在應(yīng)用程序編譯為 visionOS 1.0 SDK 時(shí)谍夭,如果自上次訪問該屬性以來手錨點(diǎn)未更新,返回的錨點(diǎn)也將為 nil鲸鹦。

state: DataProviderState
描述:這是一個(gè)只讀屬性慧库,表示手部跟蹤提供者的當(dāng)前狀態(tài)跷跪。狀態(tài)可以用來判斷手部跟蹤的健康狀況馋嗜,例如是否正在跟蹤,是否有錯(cuò)誤等吵瞻。

init()
描述:這是類的初始化方法葛菇,用于創(chuàng)建 HandTrackingProvider 的實(shí)例。

isSupported: Bool
描述:這是一個(gè)靜態(tài)屬性橡羞,返回一個(gè)布爾值眯停,指示當(dāng)前設(shè)備是否支持手部跟蹤提供者。這可以在應(yīng)用程序啟動時(shí)進(jìn)行檢查卿泽,以決定是否啟用手部跟蹤功能莺债。

requiredAuthorizations: [ARKitSession.AuthorizationType]
描述:這是一個(gè)靜態(tài)屬性,返回一個(gè)數(shù)組签夭,表示手部跟蹤提供者所需的授權(quán)類型齐邦。例如,可能需要攝像頭訪問權(quán)限等第租。

anchorUpdates: AnchorUpdateSequence<HandAnchor>
描述:這是一個(gè)只讀屬性措拇,返回一個(gè)異步序列,包含所有錨點(diǎn)的更新慎宾。這允許開發(fā)者以響應(yīng)的方式處理手部跟蹤錨點(diǎn)的變化丐吓。

handAnchors(at timestamp: TimeInterval) -> (leftHand: HandAnchor?, rightHand: HandAnchor?)
描述:這是一個(gè)方法,用于根據(jù)給定的時(shí)間戳查詢手錨點(diǎn)趟据。此方法并不是線程安全的券犁,因此在多線程調(diào)用時(shí),開發(fā)者必須自行提供同步機(jī)制汹碱。參數(shù) timestamp 是目標(biāo)時(shí)間戳族操,類型為秒。返回值為一個(gè)包含左手和右手錨點(diǎn)的元組,如果手部跟蹤提供者未運(yùn)行色难,錨點(diǎn)將為 nil泼舱。此方法在 visionOS 2.0 中可用。

description: String
描述:這是一個(gè)只讀屬性枷莉,提供了 HandTrackingProvider 的文本表示娇昙,通常用于調(diào)試或日志記錄,以便開發(fā)者能夠理解手部跟蹤提供者的狀態(tài)笤妙。

手部數(shù)據(jù)更新

 func handTracking() {
        if HandTrackingProvider.isSupported {
            Task {
                do {
                    try await session.run([handTrackingProvider])
                    for await update in handTrackingProvider.anchorUpdates {
                        DispatchQueue.main.async { // Ensure updates are on the main thread
                            switch update.event {
                            case .updated://有更新
                                let anchor = update.anchor//從更新中獲取anchor
                                if !anchor.isTracked {//沒有追蹤數(shù)據(jù)返回
                                    return // Use 'return' instead of 'continue' outside loops
                                }
                                if anchor.chirality == .left {//判斷左右手
                                    self.latestHandTracking.left = anchor
                                } else if anchor.chirality == .right {
                                    self.latestHandTracking.right = anchor
                                }
                            default:
                                break
                            }
                        }
                    }
                } catch {
                    print("Error starting hand tracking: \(error)")
                }
            }
        }
    }

總結(jié)
HandTrackingProvider 類是手部跟蹤的核心組件冒掌,提供了多種方法和屬性來管理手的狀態(tài)、獲取錨點(diǎn)以及處理更新蹲盘。它的設(shè)計(jì)使得開發(fā)者能夠輕松地在增強(qiáng)現(xiàn)實(shí)應(yīng)用中實(shí)現(xiàn)手部交互和手勢識別股毫。通過這個(gè)類,開發(fā)者可以實(shí)時(shí)獲取手的跟蹤信息召衔,并在需要時(shí)處理和更新這些信息铃诬,從而增強(qiáng)用戶體驗(yàn)。

HandAnchor

屬性詳解
id: UUID
類型:UUID
描述:這是 HandAnchor 的唯一標(biāo)識符苍凛。每個(gè) HandAnchor 實(shí)例都有一個(gè)獨(dú)特的 ID趣席,用于區(qū)分不同的手部錨點(diǎn)。這在需要跟蹤多個(gè)錨點(diǎn)時(shí)特別重要醇蝴。

originFromAnchorTransform: simd_float4x4
類型:simd_float4x4
描述:該屬性表示從手腕到原點(diǎn)坐標(biāo)系的變換矩陣宣肚。它提供了手的位置和方向信息,可以用來將手部位置轉(zhuǎn)換到應(yīng)用的世界坐標(biāo)系中悠栓。

handSkeleton: HandSkeleton?
類型:HandSkeleton?
描述:這是一個(gè)可選屬性霉涨,表示手的骨骼結(jié)構(gòu)。HandSkeleton 通常包含手指惭适、掌心等的骨骼信息笙瑟,幫助進(jìn)行更精細(xì)的手勢識別和動畫。若當(dāng)前未追蹤到手部腥沽,可能返回 nil逮走。

chirality: HandAnchor.Chirality
類型:HandAnchor.Chirality
描述:該屬性表示手的側(cè)別(左手或右手)。它是 HandAnchor 內(nèi)部定義的一個(gè)枚舉今阳,包含 left 和 right师溅,幫助區(qū)分左手和右手的錨點(diǎn)。

isTracked: Bool
類型:Bool
描述:此屬性指示該手部錨點(diǎn)是否正在被追蹤盾舌。如果為 true墓臭,表示系統(tǒng)當(dāng)前能夠有效地追蹤到該手部錨點(diǎn);如果為 false妖谴,則可能由于遮擋窿锉、光照不足等原因酌摇,錨點(diǎn)未能被有效追蹤。

description: String
類型:String
描述:該屬性提供了該錨點(diǎn)的文本描述嗡载,通常用于調(diào)試或日志輸出窑多。可以方便開發(fā)者了解當(dāng)前錨點(diǎn)的狀態(tài)和信息洼滚。

枚舉類型: Chirality
HandAnchor.Chirality 是一個(gè)枚舉類型埂息,用于區(qū)分左手和右手,其內(nèi)容包括:
case right: 表示右手遥巴。
case left: 表示左手千康。

description:提供對該枚舉的文本描述。

HandSkeleton

neutralPose: HandSkeleton
描述:這是一個(gè)靜態(tài)屬性铲掐,返回一個(gè)處于中立姿勢(neutral pose)的手部骨骼拾弃。中立姿勢通常指手部自然放松的狀態(tài),沒有施加任何外力或手勢摆霉。這種姿勢用于初始化或比較其他手勢豪椿。

joint(_ named: HandSkeleton.JointName) -> HandSkeleton.Joint
描述:這是一個(gè)實(shí)例方法,用于獲取指定名稱的關(guān)節(jié)斯入。參數(shù) named 是一個(gè) JointName 枚舉值砂碉,表示要查詢的關(guān)節(jié)名稱(例如蛀蜜,wrist刻两、thumbKnuckle 等)。該方法返回相應(yīng)的 HandSkeleton.Joint 對象滴某,表示該關(guān)節(jié)的具體信息磅摹。

description: String
描述:這個(gè)屬性提供了 HandSkeleton 的文本表示,通常用于調(diào)試或日志記錄霎奢,以便開發(fā)者能夠理解手部骨骼的狀態(tài)户誓。

allJoints: [HandSkeleton.Joint]
描述:這個(gè)屬性返回一個(gè)包含所有關(guān)節(jié)的數(shù)組,類型為 [HandSkeleton.Joint]幕侠。它允許開發(fā)者遍歷手部的所有關(guān)節(jié)帝美,便于進(jìn)行操作和處理。

以下為拓展extension HandSkeleton

Joint 結(jié)構(gòu)體
Joint 結(jié)構(gòu)體表示手部骨骼中的一個(gè)關(guān)節(jié)晤硕,它包含多個(gè)屬性來描述該關(guān)節(jié)的特征和狀態(tài)悼潭。具體屬性如下:

parentJoint: HandSkeleton.Joint?

描述:表示該關(guān)節(jié)的父關(guān)節(jié)。如果當(dāng)前關(guān)節(jié)是根關(guān)節(jié)舞箍,則它沒有父關(guān)節(jié)舰褪,返回 nil。這使得關(guān)節(jié)可以形成樹形結(jié)構(gòu)疏橄,從根關(guān)節(jié)逐級向下連接占拍。
name: HandSkeleton.JointName

描述:關(guān)節(jié)的名稱,使用 JointName 枚舉來表示,如 wrist晃酒、thumbKnuckle 等表牢。這種命名方式使得對手部結(jié)構(gòu)的表示更加清晰。
parentFromJointTransform: simd_float4x4

描述:表示從該關(guān)節(jié)到其父關(guān)節(jié)的變換矩陣贝次。對于根關(guān)節(jié)初茶,其變換矩陣是一個(gè)單位矩陣,表明它的位置是參考原點(diǎn)的浊闪。
anchorFromJointTransform: simd_float4x4

描述:表示從該關(guān)節(jié)到手部錨點(diǎn)的變換矩陣恼布。這有助于將關(guān)節(jié)的位置轉(zhuǎn)換到手部的世界坐標(biāo)系中,以便進(jìn)行進(jìn)一步的計(jì)算或渲染搁宾。
isTracked: Bool

描述:指示該關(guān)節(jié)是否正在被追蹤折汞。如果為 true,表示該關(guān)節(jié)的狀態(tài)在當(dāng)前被成功跟蹤盖腿;如果為 false爽待,可能由于遮擋或其他原因?qū)е聼o法跟蹤。
description: String

描述:提供該關(guān)節(jié)的文本描述翩腐,通常用于調(diào)試或日志輸出鸟款,以便開發(fā)者理解當(dāng)前關(guān)節(jié)的狀態(tài)。
JointName 枚舉
JointName 枚舉列出了手部骨骼中所有的關(guān)節(jié)名稱茂卦,包括但不限于手腕何什、手指等。這些名稱對于識別手部的不同關(guān)節(jié)非常重要等龙。其具體內(nèi)容包括:

wrist: 手腕關(guān)節(jié)处渣。
thumbKnuckle: 大拇指的指關(guān)節(jié)。
indexFingerKnuckle: 食指的指關(guān)節(jié)蛛砰。
middleFingerKnuckle: 中指的指關(guān)節(jié)罐栈。
ringFingerKnuckle: 無名指的指關(guān)節(jié)。
littleFingerKnuckle: 小指的指關(guān)節(jié)泥畅。
forearmWrist: 前臂的手腕關(guān)節(jié)荠诬。
forearmArm: 前臂的關(guān)節(jié)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末位仁,一起剝皮案震驚了整個(gè)濱河市柑贞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌障癌,老刑警劉巖凌外,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涛浙,居然都是意外死亡康辑,警方通過查閱死者的電腦和手機(jī)摄欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疮薇,“玉大人胸墙,你說我怎么就攤上這事“粗洌” “怎么了迟隅?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長励七。 經(jīng)常有香客問我智袭,道長,這世上最難降的妖魔是什么掠抬? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任吼野,我火速辦了婚禮,結(jié)果婚禮上两波,老公的妹妹穿的比我還像新娘瞳步。我一直安慰自己,他們只是感情好腰奋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布单起。 她就那樣靜靜地躺著,像睡著了一般劣坊。 火紅的嫁衣襯著肌膚如雪嘀倒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天讼稚,我揣著相機(jī)與錄音括儒,去河邊找鬼绕沈。 笑死锐想,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乍狐。 我是一名探鬼主播赠摇,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浅蚪!你這毒婦竟也來了藕帜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惜傲,失蹤者是張志新(化名)和其女友劉穎洽故,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盗誊,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡时甚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年隘弊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荒适。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梨熙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刀诬,到底是詐尸還是另有隱情咽扇,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布陕壹,位于F島的核電站质欲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏糠馆。R本人自食惡果不足惜把敞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榨惠。 院中可真熱鬧奋早,春花似錦、人聲如沸赠橙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽期揪。三九已至掉奄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凤薛,已是汗流浹背姓建。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缤苫,地道東北人速兔。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像活玲,于是被迫代替她去往敵國和親涣狗。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容