平面検出
はじめに
このサンプルでは、現実世界の平面を検出して可視化する方法を紹介します。
平面の検出と追跡に関する基本的な情報と、AR FoundationのAR Plane Managerのコンポーネントが何をするかについては、Unityのドキュメントを参照してください。
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でPlane Detectionにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)

サンプルのインポート
まだサンプルをインポートしていない場合は、以下の手順 でインポートすることができます。
サンプルシーンは以下の場所に存在します。
Assets/Samples/Snapdragon Spaces/0.XX.0/Core Samples/Scenes/Plane Detection Sample/Plane Detection Sample.unity
サンプルの仕組み
平面を可視化するには、シーンに2つのコンポーネントが必要です。
ARSessionのゲームオブジェクトにARPlaneManagerを追加すると、Snapdragon Spacesのパッケージに含まれるPlane Subsystemが有効になります。
このコンポーネントには、プレーン作成時にスポーンするプレハブを定義するフィールドがあります。このプレハブには、Mesh RendererとLine Rendererの隣に、AR PlaneとAR Plane Mesh Visualizerがアタッチされています。
メッシュとラインはAR Plane Mesh Visualizerによって定期的に調整され、その結果、マテリアルとレンダラーのプロパティを変更することで調整可能なフィルとボーダーを持つ平面が描画されます。
さらに、MeshColiderコンポーネントをプレハブに追加して、レイキャストのヒットを受け取ることができます。

機能の設定
この機能の設定は、OpenXRのプロジェクト設定のPlane Detection機能の横にある歯車のアイコンをクリックすると表示されます。

Scene Understanding Plane Detectionについて- この設定を有効にするか無効にするかで、検出される平面の形状と数が異なります。
- この設定を有効にすると、
Scene Understandingを使用して平面を検出できるようになります。これは、空間メッシュの機能と同じ技術を利用しています。 Use Scene Understanding Plane Detectionが有効になっている間、サンプルを実行中、ユーザーはオプションをUse Convex Hullに切り替えることができます。Use Scene Understanding Plane Detectionが無効の場合、Use Convex Hullはデフォルトで有効になり、サンプル実行中にユーザーがチェックを外すことはできません。Use Convex Hullを有効にすると、検出された平面の凸包を使用して、より複雑な形状を生成します。無効にすると、代わりに検出された平面の大きさに基づいて平面を生成します。Scene Understandingが何らかの理由でロードできない場合、この機能はUse Scene Understanding Plane Detectionが無効であるかのように動作します。
DefaultとScene Understandingの平面検出の違い
| Metric | Default | Scene Understanding |
|---|---|---|
| 検出速度と初回検出 | 普通 | 速い |
| 誤検出 | 少ない | 多い |
| 平面の精度 | 高い | 高い |
| 平面の数 | 少ない | 多い |
| 平面の更新 | 更新頻度は低いが安定している | 更新頻度は多く、より動的に変化する |
| 平面方向のフィルター | 水平と垂直 | 無し |
| ヒットテスト | 平面に対して機能する | メッシュに対して機能する |