aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/xrreferencespace
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/api/xrreferencespace
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/web/api/xrreferencespace')
-rw-r--r--files/ja/web/api/xrreferencespace/getoffsetreferencespace/index.html150
-rw-r--r--files/ja/web/api/xrreferencespace/index.html120
-rw-r--r--files/ja/web/api/xrreferencespace/reset_event/index.html122
3 files changed, 392 insertions, 0 deletions
diff --git a/files/ja/web/api/xrreferencespace/getoffsetreferencespace/index.html b/files/ja/web/api/xrreferencespace/getoffsetreferencespace/index.html
new file mode 100644
index 0000000000..e5344a79db
--- /dev/null
+++ b/files/ja/web/api/xrreferencespace/getoffsetreferencespace/index.html
@@ -0,0 +1,150 @@
+---
+title: XRReferenceSpace.getOffsetReferenceSpace()
+slug: Web/API/XRReferenceSpace/getOffsetReferenceSpace
+tags:
+ - API
+ - AR
+ - Mixed
+ - Orientation
+ - Position
+ - Reality
+ - Reference
+ - Rotate
+ - VR
+ - Virtual
+ - WebXR
+ - WebXR API
+ - WebXR Device API
+ - XR
+ - XRReferenceSpace
+ - augmented
+ - getOffsetReferenceSpace
+ - move
+ - movement
+translation_of: Web/API/XRReferenceSpace/getOffsetReferenceSpace
+---
+<p>{{APIRef("WebXR Device API")}}{{secureContext_header}}</p>
+
+<p><span class="seoSummary">{{domxref("XRReferenceSpace")}} インターフェイスの <strong><code>getOffsetReferenceSpace()</code></strong> メソッドは、メソッドが呼び出されたオブジェクトと 3D 空間内の特定の点との間の位置の相対的な違いを表す新しい参照空間オブジェクトを返します。</span> <code>getOffsetReferenceSpace()</code> によって返されるオブジェクトは、{{domxref("XRReferenceSpace")}} で呼び出された場合は <code>XRReferenceSpace</code> であり、{{domxref("XRBoundedReferenceSpace")}} で呼び出された場合は <code>XRBoundedReferenceSpace</code> です。</p>
+
+<p>つまり、3D 空間にオブジェクトがあり、それに対して別のオブジェクトを相対的に配置する必要がある場合は、<code>getOffsetReferenceSpace()</code> を呼び出して、<em><code>getOffsetReferenceSpace()</code> を呼び出すオブジェクトの位置と向きを基準</em>にして、2番目のオブジェクトに持たせる位置と向きを渡します。</p>
+
+<p>次に、シーンを描画するときに、オフセット参照空間を使用して、オブジェクトを相互に相対的に配置するだけでなく、必要な変換を適用して、ビューアーの位置に基づいてオブジェクトを適切にレンダリングできます。 これは、{{anch("Implementing rotation based on non-XR inputs", "非 XR 入力に基づく回転の実装")}}の例で示されています。 この例では、この方法を使用して、ユーザーがマウスを使用して視野角をピッチおよびヨーできるようにする方法を示しています。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><em>offsetReferenceSpace</em> = <em>xrReferenceSpace</em>.getOffsetReferenceSpace(<em>originOffset</em>);</pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt><code>originOffset</code></dt>
+ <dd>新しい参照空間の原点へのオフセットを指定する {{domxref("XRRigidTransform")}}。 これらの値は、現在の参照空間の位置と向きに追加され、その結果は、新しく作成された {{domxref("XRReferenceSpace")}} の位置と向きとして使用されます。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返り値</h3>
+
+<p>メソッドが呼び出された参照空間と同じネイティブの原点を持つが、オブジェクトから <code>originOffset</code> で指定された点までの隔たりを示す原点オフセットを持つ参照空間を記述する新しい {{domxref("XRReferenceSpace")}} オブジェクト。</p>
+
+<p>このメソッドを呼び出すオブジェクトが {{domxref("XRBoundedReferenceSpace")}} の場合、返されるオブジェクトも <code>XRBoundedReferenceSpace</code> です。 新しい参照空間の {{domxref("XRBoundedReferenceSpace.boundsGeometry", "boundsGeometry")}} には、元のオブジェクトの <code>boundsGeometry</code> が設定され、それぞれの点に <code>originOffset</code> の逆行列(inverse)が乗算されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>以下は、<code>getOffsetReferenceSpace()</code> の使用方法を示すいくつかの例です。</p>
+
+<h3 id="Teleporting_or_setting_the_position_of_the_viewer" name="Teleporting_or_setting_the_position_of_the_viewer">ビューアーのテレポートまたは位置の設定</h3>
+
+<p>シーンを最初に作成するときに、3D 世界内でのユーザーの位置を設定する必要がある場合があります。 <code>getOffsetReferenceSpace()</code> を使用してこれを行うことができます。</p>
+
+<pre class="brush: js notranslate">xrSession.requestReferenceSpace("local")
+.then((refSpace) =&gt; {
+ xrReferenceSpace = refSpace;
+ xrReferenceSpace = xrReferenceSpace.getOffsetReferenceSpace(
+ new XRRigidTransform(startPosition, {x:0, y:0, z:1.0, w: 1.0}));
+ xrSession.requestAnimationFrame(drawFrame);
+});</pre>
+
+<p>このコードでは、ローカル参照空間を取得し、<code>getOffsetReferenceSpace()</code> を使用して、原点を <code>startPosition</code> で指定された位置に調整し、向きが Z 軸に直に沿った新しい空間を作成します。 次に、{{domxref("XRSession")}} の {{domxref("XRSession.requestAnimationFrame", "requestAnimationFrame()")}} を使用して最初のアニメーションフレームを要求します。</p>
+
+<h3 id="Implementing_rotation_based_on_non-XR_inputs" name="Implementing_rotation_based_on_non-XR_inputs">非 XR 入力に基づく回転の実装</h3>
+
+<p>WebXR が直接サポートしている入力コントロールは、すべて専用の VR または AR の入力デバイスです。 マウス、キーボード、またはその他の入力デバイスを使用して 3D 空間内のオブジェクトを移動または変換したり、ユーザーが空間内を移動できるようにするには、入力を読み取って移動するためのコードを記述する必要があります。</p>
+
+<p>これは、<code>getOffsetReferenceSpace()</code> のもう1つの良いユースケースです。 この例では、ユーザーがマウスを右クリックしながら動かすことで、視野角の変更により周囲を見回せるコードを示します。</p>
+
+<p>まず、{{domxref("Element.mousemove_event", "mousemove")}} イベントのイベントハンドラーを追加します。 これは、マウスの右ボタンが押されている場合に回転を実行するコードを呼び出します。 {{domxref("Element.oncontextmenu", "oncontextmenu")}} イベントで {{domxref("Event.preventDefault", "preventDefault()")}} を呼び出すことにより、このイベントが無視されるように設定していることにも注意してください。 これにより、右クリックによってコンテキストメニューがブラウザーに表示されなくなります。</p>
+
+<pre class="brush: js notranslate">canvas.oncontextmenu = (event) =&gt; { event.preventDefault(); };
+canvas.addEventListener("mousemove", (event) =&gt; {
+  if (event.buttons &amp; 2) {
+  rotateViewBy(event.movementX, event.movementY);
+  }
+});
+</pre>
+
+<p>次に、<code>rotateViewBy()</code> 関数は、<code>mousemove</code> イベントからのマウスデルタ値に基づいて、マウスルック(mouse look)方向のヨーとピッチを更新します。 ピッチを制限しているため、真上と真下を超えて見ることはできません。 これが呼び出されるたびに、新しいオフセットを使用して、<code>mousePitch</code> と <code>mouseYaw</code> の現在の値が更新されます。</p>
+
+<pre class="brush: js notranslate">let mouseYaw = 0.0;
+let mousePitch = 0.0;
+const inverseOrientation = quat.create();
+const MOUSE_SPEED = 0.003;
+
+function rotateViewBy(dx, dy) {
+ mouseYaw += dx * MOUSE_SPEED;
+ mousePitch += dy * MOUSE_SPEED;
+
+ if (mousePitch &lt; -Math.PI * 0.5) {
+ mousePitch = -Math.PI * 0.5;
+ } else if (mousePitch &gt; Math.PI * 0.5) {
+ mousePitch = Math.PI * 0.5;
+ }
+}</pre>
+
+<p>最後に、計算したヨーとピッチをビューアーの向きに実際に適用するコードが必要です。 この関数 <code>applyMouseMovement()</code> は、次のことを処理します。</p>
+
+<pre class="brush: js notranslate">function applyMouseMovement(refSpace) {
+ if (!mouseYaw &amp;&amp; !mousePitch) {
+ return refSpace;
+ }
+
+ quat.identity(inverseOrientation);
+ quat.rotateX(inverseOrientation, inverseOrientation, -mousePitch);
+ quat.rotateY(inverseOrientation, inverseOrientation, -mouseYaw);
+
+ let newTransform = new XRRigidTransform({x: 0, y: 0, z: 0},
+ {x: inverseOrientation[0], y: inverseOrientation[1],
+ z: inverseOrientation[2], w: inverseOrientation[3]});
+
+ return refSpace.getOffsetReferenceSpace(newTransform);
+}</pre>
+
+<p>この関数は、現在のピッチ値とヨー値からビューアーの向きを決めるために使用する逆向き行列を作成し、{{domxref("XRRigidTransform.XRRigidTransform", "new XRRigidTransform()")}} を呼び出すときにその行列を向きのソースとして使用します。 次に、新しい {{domxref("XRRigidTransform")}} の参照空間がフェッチされ、呼び出し元に返されます。</p>
+
+<p>この新しい参照空間は、ビューアーの位置は変更しませんが、蓄積されたマウス入力から生成されたピッチとヨーの値に基づいて向きを変更します。 <code>applyMouseMovement()</code> は、フレームを描画するときに、{{domxref("XRFrame.getViewerPose", "getViewerPose()")}} を使用してビューアーのポーズをフェッチする直前に呼び出す必要があり、レンダリングはこの参照空間で実行する必要があります。</p>
+
+<p>これに似たコードが、<a href="/ja/docs/Web/API/WebXR_Device_API/Movement_and_motion">移動、向き、モーション</a>という WebXR チュートリアルの幅広い記事で使用されているのを見ることができます。 特に、<a href="/ja/docs/Web/API/WebXR_Device_API/Movement_and_motion#Starting_up_the_WebXR_session">WebXR セッションの開始</a>というセクションを確認してください。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('WebXR','#dom-xrreferencespace-getoffsetreferencespace','getOffsetReferenceSpace()')}}</td>
+ <td>{{Spec2('WebXR')}}</td>
+ <td>初期定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">
+<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+</div>
+
+<p>{{Compat("api.XRReferenceSpace.getOffsetReferenceSpace")}}</p>
diff --git a/files/ja/web/api/xrreferencespace/index.html b/files/ja/web/api/xrreferencespace/index.html
new file mode 100644
index 0000000000..12222a3ab7
--- /dev/null
+++ b/files/ja/web/api/xrreferencespace/index.html
@@ -0,0 +1,120 @@
+---
+title: XRReferenceSpace
+slug: Web/API/XRReferenceSpace
+tags:
+ - API
+ - AR
+ - Augmented Reality
+ - Distances
+ - Interface
+ - Mixed Reality
+ - Offsets
+ - Reference
+ - Spaces
+ - VR
+ - Virtual Reality
+ - WebXR
+ - WebXR API
+ - WebXR Device API
+ - XR
+ - XRReferenceSpace
+ - matrix
+ - transform
+translation_of: Web/API/XRReferenceSpace
+---
+<p>{{APIRef("WebXR Device API")}}{{secureContext_header}}</p>
+
+<p><span class="seoSummary">WebXR Device API の <strong><code>XRReferenceSpace</code></strong> インターフェイスは、指定された追跡の振る舞いを使用して、仮想世界内の特定の追跡対象のエンティティまたはオブジェクトの座標系を記述します。</span> 追跡の振る舞いは、選択した<a href="/ja/docs/Web/API/XRReferenceSpace#Reference_space_types">参照空間タイプ</a>によって定義されます。 いくつかの異なる追跡の振る舞いのサポートを追加し、追跡対象オブジェクトと世界の別の場所との間のオフセット変換を記述する新しい参照空間を要求することにより、基本クラス {{domxref("XRSpace")}} を拡張します。</p>
+
+<p>すべての参照空間(制限付き参照空間を除く)は、<code>XRReferenceSpace</code> タイプを使用して記述されます。 制限付き空間は、{{domxref("XRBoundedReferenceSpace")}} オブジェクトとして実装されます。 これは、ビューアーが移動するのに「安全」な境界を確立できる特別な空間です。 実世界のカメラで移動を追跡するシステムなど、ユーザーが物理的に動き回ることができる XR システムの場合、この境界は、物理的な障害によるものか、XR ハードウェアの制限によるものかにかかわらず、ユーザーが動き回ることができる領域の縁を確立します。 ユーザーが物理的および仮想的な障害物と衝突しないようにするための境界の使用の詳細については、<a href="/ja/docs/Web/API/WebXR_Device_API/Bounded_reference_spaces">制限付き参照空間を使用したビューアーの保護</a>の記事を参照してください。</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<p><em>{{domxref("XRSpace")}} から継承されたプロパティ(現時点では、ない)に加えて、<code>XRReferenceSpace</code> は {{domxref("EventTarget")}} のプロパティも継承します。 <code>XRReferenceSpace</code> は、追加のプロパティを定義しません。</em></p>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<p><em>親インターフェイスである {{domxref("XRSpace")}} から継承されたメソッド(現時点では、ない)に加えて、<code>XRReferenceSpace</code> は {{domxref("EventTarget")}} からメソッドを継承します。 <code>XRReferenceSpace</code> は、次のメソッドも提供します。</em></p>
+
+<dl>
+ <dt>{{domxref("XRReferenceSpace.getOffsetReferenceSpace", "getOffsetReferenceSpace()")}}<span style="display: none;"> </span></dt>
+ <dd>メソッドを呼び出したものと同じ型(つまり、<code>XRReferenceSpace</code> または {{domxref("XRBoundedReferenceSpace")}})の新しい参照空間オブジェクトを作成して返します。 新しい参照空間を使用して、メソッドが呼び出されたオブジェクトの参照空間から別の座標空間に座標を変換できます。 これは、レンダリング中にオブジェクトを配置したり、3D 空間でビューアーの位置や向きを変更するときに必要な変換を実行したりするのに役立ちます。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<p><em>{{domxref("XRSpace")}} または {{domxref("EventTarget")}} オブジェクトに送信される可能性のある他のイベントに加えて、以下も <code>XRReferenceSpace</code> オブジェクトに適用されます。</em></p>
+
+<dl>
+ <dt>{{domxref("XRReferenceSpace.reset_event", "reset")}}</dt>
+ <dd>
+ <p><code>reset</code> イベントは、ユーザーの環境または場所を基準にして追跡対象オブジェクトの原点で不連続性が発生したことをブラウザーが検出すると、{{domxref("XRReferenceSpace")}} オブジェクトに送信されます。 これは、例えば、ユーザーが XR デバイスを再調整した後や、追跡を失って回復した後にデバイスが原点を自動的に調整した場合に発生する可能性があります。</p>
+
+ <p>{{domxref("EventTarget.addEventListener", "addEventListener()")}} の使用に加えて、{{domxref("XRReferenceSpace.onreset", "onreset")}} イベントハンドラープロパティを設定することにより、<code>reset</code> イベントハンドラーを確立できます。</p>
+ </dd>
+</dl>
+
+<h2 id="Reference_space_types" name="Reference_space_types">参照空間タイプ</h2>
+
+<p>{{page("/ja/docs/Web/API/XRReferenceSpaceType", "Values")}}</p>
+
+<h2 id="Usage_notes" name="Usage_notes">使用上の注意</h2>
+
+<h3 id="Creating_an_XRReferenceSpace" name="Creating_an_XRReferenceSpace">XRReferenceSpace の作成</h3>
+
+<p><code>XRReferenceSpace</code> を取得する必要がある状況は2つあります。 1つ目は、シーンを設定し、{{domxref("XRSession")}} の期間中、世界に対するユーザーの視点を表す参照空間を取得する必要がある場合です。 これを行うには、{{domxref("XRSession")}} のメソッド {{domxref("XRSession.requestReferenceSpace", "requestReferenceSpace()")}} を呼び出して、取得する<a href="/ja/docs/Web/API/XRReferenceSpaceType">参照空間タイプ</a>を指定します。</p>
+
+<pre class="notranslate">xrSession.requestReferenceSpace("local").then((refSpace) =&gt; {
+  xrReferenceSpace = refSpace;
+ /* ... */
+});</pre>
+
+<p>新しい参照空間を取得する必要があるもう1つの状況は、原点を新しい位置に移動する必要がある場合です。 これは通常、例えば、あなたのプロジェクトで、ユーザーが XR デバイスを介して接続されていないキーボード、マウス、タッチパッド、ゲームコントローラーなどの入力デバイスを使用して環境内を移動できる場合に行われます。 原点は通常、空間内のユーザーの位置であるため、原点を変更して、ユーザーの移動と方向の変更を反映する必要があります。</p>
+
+<p>ユーザーの世界のビューを移動または回転するには、その視点を表すために使用される <code>XRReferenceSpace</code> を変更する必要があります。 ただし、<code>XRReferenceSpace</code> は不変であるため、代わりに、変更された視点を表す新しい参照空間を作成する必要があります。 これは、{{domxref("XRReferenceSpace.getOffsetReferenceSpace", "getOffsetReferenceSpace()")}} メソッドを使用して簡単に実行できます。</p>
+
+<pre class="notranslate">let offsetTransform = new XRRigidTransform({x: 2, y: 0, z: 1},
+  {x: 0, y: 1, z: 0, w: 1});
+xrReferenceSpace = xrReferenceSpace.getOffsetReferenceSpace(offsetTransform);</pre>
+
+<p>これにより、<code>XRReferenceSpace</code> を新しいものに置き換えます。 その原点と向きは、新しい原点を現在の原点に対して (2, 0, 1) に配置するように調整し、前の世界の向きに対してビューアーを真上に向けるように空間を向ける単位{{Glossary("quaternion","クォータニオン")}}を指定して回転します。</p>
+
+<h3 id="Geometry" name="Geometry">ジオメトリー</h3>
+
+<p><code>XRReferenceSpace</code> のネイティブ原点は、+X が右側、+Y が上向き、+Z が「後方」またはユーザーに向かっていると見なされるように常に構成されています。</p>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('WebXR','#xrreferencespace-interface','XRReferenceSpace')}}</td>
+ <td>{{Spec2('WebXR')}}</td>
+ <td>初期定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">
+<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+</div>
+
+<p>{{Compat("api.XRReferenceSpace")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/WebXR_Device_API/Fundamentals">WebXR の基本</a></li>
+ <li><a href="/ja/docs/Web/API/WebXR_Device_API/Geometry">WebXR の幾何学と参照空間</a></li>
+ <li><a href="/ja/docs/Web/API/WebXR_Device_API/Cameras">視点とビューアー: WebXR でのカメラのシミュレーション</a></li>
+ <li><a href="/ja/docs/Web/API/WebGL_API/Matrix_math_for_the_web">ウェブの行列計算</a></li>
+ <li><a href="/ja/docs/Web/API/WebXR_Device_API/Movement_and_motion">移動、向き、モーション</a></li>
+ <li><a href="/ja/docs/Web/API/WebXR_Device_API/Bounded_reference_spaces">制限付き参照空間を使用したユーザーの保護</a></li>
+</ul>
diff --git a/files/ja/web/api/xrreferencespace/reset_event/index.html b/files/ja/web/api/xrreferencespace/reset_event/index.html
new file mode 100644
index 0000000000..e50f8ee75f
--- /dev/null
+++ b/files/ja/web/api/xrreferencespace/reset_event/index.html
@@ -0,0 +1,122 @@
+---
+title: 'XRReferenceSpace: reset イベント'
+slug: Web/API/XRReferenceSpace/reset_event
+tags:
+ - API
+ - AR
+ - Event
+ - Graphics
+ - Reality
+ - Reference
+ - VR
+ - Virtual
+ - WebXR
+ - WebXR API
+ - WebXR Device API
+ - XR
+ - XRReferenceSpace
+ - augmented
+ - reset
+translation_of: Web/API/XRReferenceSpace/reset_event
+---
+<p>{{APIRef("WebXR Device API")}}{{secureContext_header}}</p>
+
+<p><span class="seoSummary">ネイティブの原点または実際の原点のいずれかで不連続が検出されると、<strong><code>reset</code></strong> イベントが {{domxref("XRReferenceSpace")}} オブジェクトに送信され、参照空間を使用して方向付けられたオブジェクトの位置または方向がジャンプします。</span> これは、ユーザーが XR デバイスを較正または再較正する場合、またはデバイスがユーザーの追跡を失った後に原点を自動的に変更してから再び取得する場合によく見られます。</p>
+
+<p>{{domxref("XRBoundedReferenceSpace")}} オブジェクトの場合、{{domxref("XRBoundedReferenceSpace.boundsGeometry", "boundsGeometry")}} が変更されたときに <code>reset</code> イベントを発生させることもできます。</p>
+
+<p>いずれの場合も、イベントは、新しい原点を利用する WebXR アニメーションフレームが実行される前に送信されます。</p>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th scope="row">バブリング</th>
+ <td>あり</td>
+ </tr>
+ <tr>
+ <th scope="row">キャンセル</th>
+ <td>不可</td>
+ </tr>
+ <tr>
+ <th scope="row">インターフェイス</th>
+ <td>{{domxref("XRReferenceSpaceEvent")}}</td>
+ </tr>
+ <tr>
+ <th scope="row">イベントハンドラープロパティ</th>
+ <td>{{domxref("XRReferenceSpace/onreset", "onreset")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Usage_notes" name="Usage_notes">使用上の注意</h2>
+
+<p><code>reset</code> イベントは、参照空間の原点を変更し、イベントの {{domxref("XRReferenceSpaceEvent.transform", "transform")}} プロパティで示されるように移動および回転することにより、座標系がリセットまたは再構成されたことを示します。 イベントは、アニメーションフレームのコールバックが実行されて保留中のフレームがレンダリングされる前に送信され、これらのコールバックで更新された座標系が使用可能であることを確認します。</p>
+
+<p>リセットが発生する理由はいくつかあります。 それらの間で最も一般的なものは次のとおりです。</p>
+
+<ul>
+ <li>ユーザーが、顔の向きおよびハンドコントローラーがユーザーの実際の位置および顔の向きと同期するようにヘッドセット自体の再較正を要求するなどして、手動で座標系をリセットしました。 これは主に、<code>local</code> または <code>local-floor</code> の参照空間の問題です。</li>
+ <li><code>bounded-floor</code> 参照空間では、ユーザーが参照空間の境界を出て新しい参照空間に入る場合、座標系をリセットできます(ゲーム内のあるレベルから別のレベルに横断する場合など、各レベルは独自の座標系を持つ独自のマップです)。</li>
+ <li>追跡システムは一時的にユーザーを見失い、その後再びユーザーを取り戻しましたが、最後に知られた位置のすぐ近くを離れるのに十分な距離を移動した後になってからでした。 主に <code>unbounded</code> 参照空間の問題です。</li>
+ <li>ユーザーは、<code>unbounded</code> 参照空間にいて、開始位置(参照空間の原点)から十分に離れているため、浮動小数点またはその他の形式の誤差またはドリフトが問題になります。 このため座標系は、ユーザーの現在の位置またはその近くの新しい原点でリセットされます。</li>
+ <li>WebXR インフラストラクチャーまたはハードウェアドライバーは、デバイスが一時的に追跡を失い、ハードウェアとソフトウェアの位置と方向が同期していないことを検出しました。</li>
+</ul>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: 参照空間が以前の原点の追跡を取り戻すことができる場合、<code>reset</code> イベントは発生<em>しません</em>。 これは、原点が強制的に再配置されていないことを意味します。 このイベントは、追跡喪失から回復するために原点を再配置する必要がある場合にのみ発生します。</p>
+</div>
+
+<h3 id="Manual_resets" name="Manual_resets">手動リセット</h3>
+
+<p>VR ヘッドセットを使用したことがある人なら、起動したときに正面を向いているのに、ヘッドセットは空や床を見ていると勘違いしたり、ハンドコントローラーをまっすぐ前に向けているのに、どこか上や右に向けていると勘違いしたりしたことがあるでしょう。このような場合、通常はどこかのボタンを押し続けると、世界がデバイスの現在の向きに再同期されます。 これは、ヘッドセットの向きに基づいた1つまたは複数の参照空間に `reset` イベントを送信することで機能します。</p>
+
+<h3 id="Handling_discontinuities" name="Handling_discontinuities">不連続性の処理</h3>
+
+<p>ビューアーの位置のジャンプは、{{domxref("XRPose")}} の Boolean プロパティ {{domxref("XRPose.emulatedPosition", "emulatedPosition")}} を監視することで処理できます。 ビューアーの位置のジャンプが、<code>emulatedPosition</code> が <code>true</code> から <code>false</code> に切り替わるのと同時に起こった場合、ビューアーは追跡を回復し、新しい位置は以前にエミュレートされた値からの補正を表します。 これは、サイトまたはアプリが、(XR デバイスが移動を導入するために使用するユーザーの物理的な移動ではなく)ビューアーの位置や向きを明示的に変更することによる空間内のモーションをシミュレートしない場合に一般的に望ましい振る舞いです。</p>
+
+<p>ただし、そのような「テレポート」が使用されている場合は、追跡を回復した後に、追加の潜在的に不快なジャンプが発生する可能性があり、実際にはユーザーの位置をジャンプしないようにする必要があります。 これを許可する代わりに、{{domxref("XRReferenceSpace.getOffsetReferenceSpace", "getOffsetReferenceSpace()")}} を呼び出す前に計算されたテレポーテーションオフセットに <code>emulatedPosition</code> を統合して、更新された実際の原点が前のフレームからビューアーの位置がジャンプした隔たりによって調整された新しい参照空間を作成できます。 このようにして、ユーザーの位置を2回ではなく1回だけ変更します。</p>
+
+<h3 id="The_effect_of_discontinuity_size" name="The_effect_of_discontinuity_size">不連続の大きさの効果</h3>
+
+<p>不連続が十分に小さく、デバイスが同じ追跡領域内で追跡を取り戻せる場合、<code>reset</code> イベントは発生しません。 また、ユーザーの近くで空間の安定性を維持するために、時間の経過とともにネイティブの原点に小さな調整を加えるため、unbounded 参照空間で発生することもありません。 大きな不連続のみがリセットをトリガーします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>reset</code> イベントのハンドラーを追加するには、2つの方法のいずれかを使用できます。 まず、次のように {{domxref("EventTarget.addEventListener", "addEventListener()")}} メソッドを使用できます。</p>
+
+<pre class="brush: js notranslate">viewerRefSpace.addEventListener("reset", (event) =&gt; {
+  /* perform reset related tasks */
+});
+</pre>
+
+<p>2番目のオプションは、次のように <code>XRReferenceSpace</code> オブジェクトの {{domxref("XRReferenceSpace.onreset", "onreset")}} イベントハンドラープロパティを設定することです。</p>
+
+<pre class="brush: js notranslate">viewerRefSpace.onreset = (event) =&gt; {
+  /* perform reset related tasks */
+};
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('WebXR','#eventdef-xrreferencespace-reset','reset event')}}</td>
+ <td>{{Spec2('WebXR')}}</td>
+ <td>初期定義</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">
+<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+</div>
+
+<p>{{Compat("api.XRReferenceSpace.onreset")}}</p>