ガーディアンシステム
ガーディアン境界は、定義されたプレイエリアの境界にユーザーが接近すると、アプリ内に壁と床のマーカーを表示します。ユーザーが境界に接近しすぎると、半透明なメッシュグリッドが、ゲームまたはゲーム体験上にレイヤーとして重なって表示されます。
次の画像はガーディアン境界が有効になった状態を示しています。この例では、ユーザーの(Rift Touchコントローラーを持った)両手がガーディアンからはみ出ています。

境界を設定すると、ユーザーが境界に接近しすぎた場合に、アプリケーションのレイヤーに境界が表示されます。
注: ユーザーは壁と床、または床のみに境界を設定できます。または、完全に無効にすることもできます。
境界線をセットアップするには、次のようにします。
- Oculusアプリを開きます。
- [Settings (設定)] > [Devices (デバイス)] > [Run Full Setup (フルセットアップを実行)]を選択します。
- [Rift]と[Touch]を選択します。
- スクリーン上の指示に従ってセンサートラッキングを承認します。
- [Mark Your Boundaries(境界をマーク)]ページが表示されるまで進みます。
- スクリーン上の指示に従い、インデックストリガーボタンを使ってプレイエリアの外側の境界を描きます。現時点では、幅と深さの最小値に関する制限はありません。
完了したら[Next(次へ)]を押します。境界が保存されます。
初期化中、アプリはAPIリクエストを行い、アウターバウンダリーとプレイエリアを取得することができます。アウターバウンダリーとは、ユーザーが設定の際に定義したスペースのことです。プレイエリアとは、アウターバウンダリー内にある四角形のスペースのことです。この情報により、アプリは現実の世界と一致する「境界」を持ったバーチャル世界をセットアップできます。例えば、ユーザーが定義したプレイエリアを基に、コックピットのサイズを調整できます。
次の関数は、アウターバウンダリーとプレイエリアに関する情報を返します。
| 関数 | 説明 |
|---|
ovr_GetBoundaryDimensions
| プレイエリアまたはアウターバウンダリーの幅、高さ、深さをメートルで返します。 |
ovr_GetBoundaryGeometry
| プレイエリアまたはアウターバウンダリーを定義するポイントを返します。プレイエリアについては、四角形のエリアを定義している4つのポイントを返します。アウターバウンダリーについては、アウターバウンダリーを定義するすべてのポイントを返します。 |
実行中、アプリはovr_GetBoundaryVisibleを使って、境界が可視化されているかどうかに関する情報を取得できます。可視化されている場合、アプリでどのように反応するか選択できます。例えば、アプリを一時停止する、アプリを遅くする、または単にメッセージを表示する、などが選べます。
境界ステータスの情報は、次を含む構造体で返されます。
| メンバー | 型 | 説明 |
|---|
IsTriggering
| ovrBool
| 境界が可視化されているかどうかを返します。 |
ClosestDistance
| float
| 最も近いプレイエリアまたはアウターバウンダリー面までの距離です。 |
ClosestPoint
| ovrVector3f
| 最も近い境界面上のポイントです。 |
ClosestPointNormal
| ovrVector3f
| 最も近い境界面の単位法線です。 |
さらに、ovr_RequestBoundaryVisible()をovrTrueに設定することで、境界を可視化させてユーザーを誘導したり、スペースをどのように使用するか説明したりすることができます。完了したら、ovrFalseを渡してください。
注: 境界がユーザーによりトリガーされて表示された場合は、境界を強制的にオフにすることはできません。
デフォルトの境界の色はシアンです。色を変更するには、ovr_SetBoundaryLookAndFeel()を使用してください。
最初の足がかりとして、Samples/GuardianSystemDemoに次のAPIの使用法を示したコードサンプルを用意しています。
ovr_TestBoundaryovr_TestBoundaryPointovr_RequestBoundaryVisible
テストAPIを使用して、境界データを持つボックス同士を衝突させます。境界の可視状態と色は毎秒変化し、さらにHMDまたはTouchコントローラーが境界に近づきすぎると、シミュレーションは速度を落とします(その後、停止します)。