ガーディアンシステム(廃止)
更新日時: 2022/09/29
Mobile SDK Deprecation
2022年8月31日をもって、モバイルSDKおよびVrApiライブラリのサポートを終了します。新たなMetaモバイルAPIやPC APIではなく、OpenXR拡張機能やOpenXRモバイルSDKを通じて新機能をお届けします。 - 新しいアプリでは、権利放棄が提供されている場合を除いて、OpenXRの使用が必須になります。
- MetaネイティブモバイルAPIへのアクセスを提供できなくなります。ただし、既存のアプリは引き続きこのAPIを利用できます。
- 開発者ガイドで既存のアプリのOpenXRへの移行を推奨できますが、MetaネイティブAPIを使った新しいアプリの作成を支援することはできません。
- MetaネイティブモバイルのQAテストを自動化のみに絞り、主要な機能が動作することを確認します。
- MetaネイティブAPIの重大なセキュリティ、プライバシー、または安全性に関わる不具合のみを修正します。
Metaでは、ユーザーがガーディアン境界線の可視化を使ってプレイエリアを定義できるようになっています。この可視化は、ユーザーが構成したバウンディング形状からのユーザーの近さに基づいてトリガーされます。境界線の可視化はMetaソフトウェアによって処理され、ゲームまたはエクスペリエンスに重ね合わされます。開発者はさまざまな方法でガーディアン境界線に対するアクションを実行できます。例えば、ユーザーがプレイエリアから出たときにゲームを一時停止させたり、境界ポイントに基づいてワールドにジオメトリーを作成してシーン内のオブジェクトと「自然」に統合されたバリアを作成したりすることができます。ユーザーが境界線に接近すると、接近しているという視覚的キューがランタイムからユーザーへ自動的に送られます。
ルームスケールのアプリには、遮るもののない最小限の床面積が必要です。ルームスケールプレイの場合、6ft x 6ftの障害物のないプレイアブルエリア、および9ft x 9ftのスペースを用意することが推奨されています。
着席(静止)モードのアプリでは、腕を伸ばしたり胴体を傾けたりする以上の動きをさせないでください。
デフォルトのトラッキングスペースはローカルです。つまり、再センタリングが通常の動作として機能します。これは多くのアプリで適切な動作です。
一部のアプリはユーザーのガーディアン境界線に従ってレイアウトされるため、エクスペリエンスの中にいる間は同じスペースに結び付けられたままになります。例えば、ユーザーが定義したガーディアンスペース全体を利用するため家具を動的にレイアウトするアプリがあります。このようなアプリでは、ステージトラッキングスペースを使用するとよいかもしれません。ステージスペースの原点はプレイエリアの床中央にあり、前方向はバウンディングボックスのエッジの1つを指しています。これは、ユーザーが再センタリングを開始しても変わりません。ただし、ユーザーが1つのガーディアンスペースから別のガーディアンスペースに歩いて移動した場合はmid-appを変更することがあります。そのため、アプリが一時停止の状態から戻ったときに境界を再確認してください。
さらに、「ベッドモード」に対応するローカルティルトのトラッキングスペースもあります。このスペースは、ユーザーがコンテンツを傾けて表示したい場合の角度を定義します。
以下の例にあるように、ovrTrackingSpace
の値をvrapi_SetTrackingSpace
に渡して、トラッキングスペースを設定します。
vrapi_SetTrackingSpace( ovr, VRAPI_TRACKING_SPACE_LOCAL );
vrapi_SetTrackingSpace( ovr, VRAPI_TRACKING_SPACE_STAGE );
vrapi_SetTrackingSpace( ovr, VRAPI_TRACKING_SPACE_LOCAL_TILTED );
これは初期設定のエクスペリエンスで、ユーザーにガーディアンシステムを作成するよう促します。ガーディアンシステムは、ユーザー定義の境界がスペースの最小要件を満たしているか確認します。最低限必要な境界線を作成できる物理的なスペースが足りないユーザーには、着席/静止モードでプレイするオプションがあります。着席/静止モード境界線は、ユーザーのHMDを中心に円を描いて事前定義された境界です。初期設定シナリオが完了したら、ユーザーは同じスペースに新しいガーディアン境界線を作成することも、新しいスペースに作成することもできます。
ガーディアン境界線が定義された部屋でユーザーがVRエクスペリエンスを開始すると、システムは自動的にユーザーの部屋とそれに関連付けられたガーディアン境界線を識別します。保存されている境界線が認識されるには、トラッキングシステムが機能している必要があります。これにより、ユーザーはMeta Questを使用したいと思ったときに、新しい境界を作成することなく、すぐにVRエクスペリエンスを開始できます。
ヘッドまたはコントローラーがガーディアンスペースのエッジに近づくと、パススルーカメラビューがフェードインします。これによって、ガーディアンスペースの外側にあるオブジェクトを避け、プレイエリアに安全に戻ることができます。また、追加のガーディアンスペースを作成するオプションもあります。
制限されていないMeta Questにより提供されるユニークな没入感のため、ユーザーがVRエクスペリエンスを開始する前に、選択したプレイエリアにガーディアン境界線を少なくとも1つは作成しなければなりません。
次の関数は、外周境界線とプレイエリアに関する情報を返します。
機能 | 説明 |
---|
vrapi_GetBoundaryGeometry
| ガーディアンシステムの形状を、外周境界スペースを定義するポイントのリストとして取得します。points にNull値を渡す、またはpointsCountInput にサイズ0を渡すことによって、ポイントの数だけを取得することもできます。そうしない場合はpointsCountInput が使用され、ガーディアンのポイントデータから可能な限り多くのポイントを取得します。入力サイズが、現在保存されているポイントの数を超えている場合、保存されているポイントの数までコピーし、pointsCountOutput はコピーされたポイントの数を戻します。 |
vrapi_GetBoundaryOrientedBoundingBox
| ガーディアンシステムの方向付けされたバウンディングボックスのサイズを取得します。これは、ガーディアン境界線の形状内に収まる最大の矩形です。pose 値には、方向付けされたボックスの前方向と変換が含まれます。scale の戻り値では、ボックスの幅、高さ、深さのスカラー値が返されます。これらの値は、実際のサイズの半分のスカラー値(メートル単位)で表されています。 |
以下の関数を使用して、実行時に、指定されたポイント、または指定された入力デバイスのステータス情報をリクエストできます。
機能 | 説明 |
---|
vrapi_TestPointIsInBoundary
| 境界線システムに対して3Dポイントの衝突/近接をテストし、指定されたポイントがガーディアン境界の内側または外側のどちらにあるのかを戻します。より詳細な境界トリガー情報のセットをリクエストする場合、ovrBoundaryTriggerResult を渡します。ただし、ポイントが境界の内側にあるかどうかだけを戻す場合、nullを渡すこともできます。 |
vrapi_GetBoundaryTriggerState
| ガーディアン境界線に対して、位置をトラッキングするデバイス(HMDやMeta Quest Touchコントローラーなど)の衝突/近接をテストします。この関数で戻されるovrGuardianTriggerResult には、衝突/近接テストに基づく距離や最も近いポイントなどの情報が含まれます。 |
これらの関数呼び出し中にデータ入力されるovrBoundaryTriggerResult
構造体は、以下のメンバーで構成されています。
メンバー | 型 | 説明 |
---|
closestPoint
| ovrVector3f
| 最も近い境界面上のポイントです。 |
closestPointNormal
| ovrVector3f
| 最も近い境界面上のポイントの垂線です。 |
closestDistance
| float
| 最も近いガーディアン境界面までの距離です。 |
isTriggering
| bool
| 境界線システムがトリガーされている場合はTrue。フェードイン/フェードアウト効果により、これは可視性と完全に一致しない場合があります。 |
vrapi_GetBoundaryTriggerState
で境界トリガー情報を取得する場合、次のいずれかのovrTrackedDeviceTypeId
値を使用して入力デバイスを指定します。
列挙型 | 値 | 説明 |
---|
VRAPI_TRACKED_DEVICE_HMD
| 0
| ヘッドセット。 |
VRAPI_TRACKED_DEVICE_HAND_LEFT
| 1
| 左コントローラー。 |
VRAPI_TRACKED_DEVICE_HAND_RIGHT
| 2
| 右コントローラー。 |
さらに、vrapi_RequestBoundaryVisible
にtrueを指定して呼び出すことで、境界線を可視化させてユーザーを誘導したり、スペースをどのように使用するかを説明することができます。完了した後にfalseを渡せば、境界線は通常の動作になります。
機能 | 説明 |
---|
vrapi_RequestBoundaryVisible
| ガーディアンメッシュを強制的に可視化する(trueに設定する)場合に使用します。falseに戻すと、ガーディアンシステムは通常の機能に戻ります。 |
vrapi_GetBoundaryVisible
| ガーディアンが可視化されているかどうかをクエリする場合に使用します。 |