XRInputSource:handedness 屬性

可用性有限

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

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

只讀的 XRInputSource 屬性 handedness 指示 WebXR 輸入源與使用者的哪隻手相關聯,或者是否與任何手都不相關聯。

一個字串,指示輸入控制器是握在使用者的手中,如果是,則指示是哪隻手。該值是以下之一:

none

輸入控制器未與使用者的任何一隻手相關聯。

left

輸入控制器正被使用者握在左手中、戴在左手上或附著在左手上。

輸入控制器正被使用者握在右手中、戴在右手上或附著在右手上。

用法說明

如果輸入源不是與使用者的手(無論是透過握持、附著還是佩戴)相關聯的裝置,則 handedness 的值為 none。例如,這可能表示一個非手持的輸入源,比如頭顯內建的控制元件,或者附著在頭部或身體上的輸入裝置。

示例

handedness 的一個重要使用場景是確定控制器在哪隻手中,以便您可以在虛擬空間中繪製該手(或該手正在控制的裝置)的表示。

js
function updateInputSources(session, frame, refSpace) {
  for (const source of session.inputSources) {
    if (source.gripSpace) {
      const gripPose = frame.getPose(source.gripSpace, refSpace);

      if (gripPose) {
        myRenderHandObject(gripPose, inputSource.handedness);
      }
    }
  }
}

此函式將在每個動畫幀(或可能僅定期,取決於所需的平滑度以及任何效能限制)被呼叫,它會掃描輸入源列表,查詢任何具有非 null gripSpace 的輸入源。如果存在 gripSpace,則表示該輸入源是某種手持裝置,因此應儘可能可見地進行渲染。

如果 gripSpacenull,該函式將繼續獲取 gripSpace 轉換到當前參考空間中的姿勢。假設該姿勢有效,則會呼叫一個名為 myRenderHandObject() 的函式,並傳入握持器的姿勢以及 handedness 的值。然後,它會以正確的手部姿勢和形狀繪製相應的模型。

規範

規範
WebXR Device API
# dom-xrinputsource-handedness

瀏覽器相容性

另見