平面検出

はじめに
このサンプルでは、現実世界の平面を検出して可視化する方法を紹介します。
平面の検出と追跡に関する基本的な情報と、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 |
---|---|---|
検出速度と初回検出 | 普通 | 速い |
誤検出 | 少ない | 多い |
平面の精度 | 高い | 高い |
平面の数 | 少ない | 多い |
平面の更新 | 更新頻度は低いが安定している | 更新頻度は多く、より動的に変化する |
平面方向のフィルター | 水平と垂直 | 無し |
ヒットテスト | 平面に対して機能する | メッシュに対して機能する |