XRInputSource: targetRaySpace プロパティ
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
XRInputSource
の targetRaySpace` プロパティは読み取り専用で、仮想空間におけるターゲット光線の位置と方向を表す XRSpace
(通常は XRReferenceSpace
) を返します。その正の値はターゲット光線の原点の位置を示し、その方向はコントローラー機器自体の方向を示します。これらの値は、入力ソースの targetRayMode
のコンテキストで解釈され、機器を入力ソースとして完全に解釈するために使用することができます。
仮想空間における入力コントローラーの位置と方向を表す XRSpace
を取得するには、 gripSpace
プロパティを使用してください。
値
XRSpace
オブジェクト—ふつうは XRReferenceSpace
または XRBoundedReferenceSpace
で、仮想空間における入力コントローラーの対象とする光線の位置と方向を表します。
返される XRSpace
のネイティブの原点は、対象とする光線が射出される点に位置し、空間の方向は対象とする光線が向いている方向を示します。
使用上の注意
すべての入力ソースは、 targetRayMode
に関係なく、有効な targetRaySpace
を持ちます。しかし、この空間の正確な意味はモードによって異なります。
- すべての視線入力(
targetRayMode
の値がgaze
)は、視線入力が視聴者の頭から決まりますので、対象とする視線空間として同じXRSpace
オブジェクトを共有します。この共有空間はXRSession
メソッドrequestReferenceSpace()
が返す空間と同じ場所を表しますが、将来的な API の拡張を可能にするために異なるオブジェクトとして維持されます。 - トラッキングポインター入力(
targetRayMode
がtracked-pointer
であるもの)によって報告されるターゲット視線空間は、実際には入力機器の正の空間位置と方向に基づいています。
フレームのレンダリング中に対象の光線の位置と方向を決定するには、 XRFrame
の getPose()
メソッドに渡し、返す XRPose
オブジェクトの transform
を使用して、必要な空間情報を収集します。
例
このコードでは、1 フレームに 1 回呼び出される関数の一部を示しています。この関数は、null
ではない targetRaySpace
を持つ入力を見ていきます。このプロパティに値が示す入力は、ユーザーから外側に対象とする光線を表します。
このような各入力に対して、この例では targetRayMode
が tracked-pointer
である入力を見ていきます。これは、その入力が実際には注視デバイス、画面タップ、マウスクリックではなく、ターゲティングデバイスを表すことを意図していることを示しています。トラッキングポインターの場合、関数 myRenderTargetRayAsBeam()
が呼び出され、入力コントローラーの仮想位置から、ポインタが指している方向にビームをレンダリングします。
このコードは、仮想空間内でユーザーの手の位置を表すコントローラーやオブジェクトを描画したり、他にも入力関連のタスクを実行し続ける必要があります。
function updateInputSources(session, frame, refSpace) {
for (const source of session.getInputSources()) {
const targetRayPose = frame.getPose(inputSource.targetRaySpace, refSpace);
if (targetRayPose) {
if (source.targetRayMode === "tracked-pointer") {
myRenderTargetRayAsBeam(targetRayPose);
}
}
// …
}
}
仕様書
Specification |
---|
WebXR Device API # dom-xrinputsource-targetrayspace |
ブラウザーの互換性
BCD tables only load in the browser