XRInputSource: gripSpace プロパティ

Limited availability

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

XRInputSourcegripSpace 読み取り専用プロパティは、ネイティブの原点がユーザーの手に保持している(またはユーザーの手の一部の)ように見える仮想オブジェクトのレンダリングに使用するポーズを追跡する XRSpace を返します。 例えば、ユーザーが仮想の真っ直ぐな棒を持っている場合、この XRSpace のネイティブの原点は、ユーザーの拳のおおよその重心にあります。

仮想空間での入力機器の位置と向きを表す XRSpace オブジェクトです。 機器の画像をシーンにレンダリングするのに適しています。 入力ソースが本質的に追跡できない場合、gripSpacenull です。 例えば、targetRayModetracked-pointer である入力のみが gripSpace を提供します。

コントローラーがまっすぐな棒のような形をしていて、ユーザーの拳で握られていると想像してみてください。 グリップ空間の本来の原点は、ユーザーの拳の重心にあり、ユーザーの手の位置を追跡します。

左手のグリップ空間の座標系。

グリップ空間が、世界に対するプレーヤーの手のローカル座標系をどのように示しているかを示す図。

右手のグリップ空間の座標系。

グリップ空間が、世界に対するプレーヤーの手のローカル座標系をどのように示しているかを示す図。

上の図に示すように、座標系は次のように方向付けられています。

  • x 軸は、ユーザーの手のひらに垂直であり、手の甲から外側に伸びる方向は、コントローラーがユーザーの右手にある場合は +X 、コントローラーが左手にある場合は -X です。
  • z 軸は、棒の長さに沿い、ユーザーの手のひらに平行で、グリップの長さに沿います。 -Z はユーザーの親指の方向であり、+Z は反対方向です。
  • y 軸は、他の 2 つの軸間の関係によって示されます。 いつものように、それは他の 2 つの軸の外積です(X 軸と Z 軸の両方から 90° 離れています)。

この例では、フレームレンダリングコールバックから取得した gripSpace を使用して、仮想環境でのコントローラーの位置と向きを表すメッシュをレンダリングします。

js
for (const source in xrSession.inputSources) {
  if (source.gripSpace) {
    const gripPose = frame.getPose(source.gripSpace, xrRefSpace);

    if (gripPose) {
      myDrawMeshUsingTransform(controllerMesh, gripPose.transform.matrix);
    }
  }
}

このループは、gripSpace の値を持つ各入力ソースについて、gripSpace によって記述される位置と向きを表す XRPose を取得します。 有効なポーズが返された場合、メソッド myDrawMeshUsingTransform() を呼び出して、グリップポーズの変換行列を使用して変換されたコントローラーのメッシュを描画します。

仕様書

Specification
WebXR Device API
# dom-xrinputsource-gripspace

ブラウザーの互換性

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
gripSpace

Legend

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

Full support
Full support
No support
No support