XRInputSource: handedness プロパティ

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

XRInputSourcehandedness は読み取り専用プロパティで、WebXR 入力ソースがユーザーのどの手に関連付けられているか、またはまったく関連付けられていないかを示します。

文字列で、入力コントローラーがユーザーの手に握られているかどうか、もしそうならばどちらの手なのかを表します。値は次のうちの一つです。

none

入力コントローラーは、ユーザーのいずれの手にも関連付けられていません。

left

入力コントローラーは、ユーザーの左手に握られているか、着用されているか、取り付けられています。

入力コントローラーは、ユーザーの右手に握られているか、着用されているか、取り付けられています。

使用上の注意

入力ソースがユーザーの手に関連付けられた機器でない場合(握られているか、取り付けられているか、着用されているかに関係なく)、handedness の値は none です。 これは、例えば、ヘッドセットに組み込まれたコントロールや、頭や体に取り付けられた入力機器など、手で持つものではない入力ソースを示している場合があります。

handedness の重要な使用方法の 1 つは、コントローラーがどちらの手にあるかを判別して、仮想空間でその手(またはその手が制御している機器)の表現を描画できるようにすることです。

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);
      }
    }
  }
}

この関数は、すべてのアニメーションフレームで(または必要な滑らかさの程度とパフォーマンスの制約に応じて定期的に)呼び出され、入力ソースのリストをスキャンして、 gripSpacenull ではないものを探します。 gripSpace が存在する場合、それは入力ソースが何らかのハンドヘルド機器であることを意味するため、可能であれば視覚的にレンダリングする必要があります。

gripSpacenull 以外の場合、この関数は、現在の参照空間に変換された gripSpace のポーズを取得します。 それが有効であると仮定すると、myRenderHandObject() と呼ばれる関数が、グリップのポーズと handedness の値を使用して呼び出されます。そして、正しい手に配置され形成された適切なモデルを描画します。

仕様書

Specification
WebXR Device API
# dom-xrinputsource-handedness

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
handedness

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

関連情報