XRInputSource

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

XRInputSource 介面是 WebXR 裝置 API 的一部分,它描述了使用者 WebXR 相容的虛擬或增強現實系統中一個獨立的控制輸入源。該裝置特定於所使用的平臺,但它提供了一個指向的方向,並且如果使用者透過該裝置執行操作,它還可以選擇性地生成事件。

例項屬性

gamepad 只讀

如果 XR 輸入源是遊戲手柄或類似裝置,則返回一個描述其按鈕和軸狀態的 Gamepad 物件。如果裝置不是類似遊戲手柄的裝置,則此屬性的值為 null

gripSpace 只讀

一個 XRSpace 物件,其原點追蹤用於渲染物件應該出現在使用者所指示的(由 handedness 指定的)手中所持有的姿勢。此空間的方位指示了手握持物件的角度。有關如何使用此空間的更多詳細資訊,請閱讀關於 gripSpace 的主要文章。

hand 只讀

一個 XRHand 物件,提供對底層手部追蹤裝置的訪問。

handedness 只讀

一個字串,指示此 XRInputSource 代表的裝置正在用於哪隻手(如果有)。該值將是 leftrightnone

profiles 只讀

一個字串陣列,每個字串指定一個輸入配置檔案的名稱,該配置檔案描述了此輸入源的首選視覺表示和行為。

targetRayMode 只讀

一個字串,指示用於生成目標射線的技術:gaze(注視)、tracked-pointer(追蹤指標)或 screen(螢幕)。

targetRaySpace 只讀

一個 XRSpace 物件,定義了目標射線的原點以及其延伸的方向。此空間是使用 targetRayMode 定義的方法建立的。

例項方法

XRInputSource 介面不定義任何方法。

用法說明

操作和目標射線

如果裝置提供了其指向的方向指示,則透過 **目標射線** 來實現。這是一條從裝置位置向外延伸,指向裝置所指向方向的射線。

從手持控制器發出的目標射線。

A screenshot showing a target ray being emitted by a hand controller

如果裝置包含觸發器或其他可擠壓的輸入,例如能夠識別使用者握拳的手部追蹤裝置,則該操作稱為 **主要擠壓操作**。主要擠壓操作應對應於現實中的抓握行為,例如抓住一個物體或按下工具或武器上的扳機。當擠壓操作開始時(例如,使用者按下扳機或收緊握持),一個 squeezestart 事件會被髮送到 XRSession。一旦操作完成,使用者釋放了扳機或握持,就會發送一個 squeeze 事件。最後,會發送一個 squeezeend 事件,如果操作被中止而不是完成,也會發送此事件。

如果裝置有一個按鈕或其他可按下的輸入控制元件,它就是一個 **主要輸入源**,該按鈕就是一個 **主要操作**。當用戶按下按鈕、點選觸控板或搖桿頂部按鈕,或者使用呼叫按鈕類似操作的手勢或語音命令時,可能會發生主要操作。當主要操作開始時,一個 selectstart 事件會被髮送到 XRSession。當操作完成時(例如,使用者釋放按鈕時),會發送一個 select 事件。最後,一旦完成——或者使用者中止了該操作——一個 selectend 事件會被髮送到會話物件。

操作可能由於使用者以某種特定於裝置的方式進行操作而中止,或者在操作完成之前輸入裝置斷開連線而中止。

本地座標系

每個輸入源都有自己的本地座標系,由 gripSpace 屬性描述,它是一個 XRSpace 物件,用於將輸入的座標系對映到世界座標系。然後可以使用 grip 空間的座標系來渲染物件,使其看起來像是被使用者的手所握持。

A diagram showing the coordinate system defined by the gripSpace property

有關輸入源座標系統的更多詳細資訊,請參閱詳細介紹 gripSpace 屬性的文章。

規範

規範
WebXR Device API
# xrinputsource-interface

瀏覽器相容性

另見