メインコンテンツまでスキップ
バージョン: 0.23.2

平面検出

はじめに

このサンプルでは、現実世界の平面を検出して可視化する方法を紹介します。

平面の検出と追跡に関する基本的な情報と、AR FoundationのAR Plane Managerのコンポーネントが何をするかについては、Unityのドキュメントを参照してください。

機能の有効化

この機能を使用するには、以下のOpenXRのプロジェクト設定でPlane Detectionにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ) alt text

サンプルのインポート

まだサンプルをインポートしていない場合は、以下の手順でインポートすることができます。

  1. 基本パッケージのインポート
  2. 基本サンプルのインポート

サンプルシーンは以下の場所に存在します。
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 RendererLine Rendererの隣に、AR PlaneAR Plane Mesh Visualizerがアタッチされています。

メッシュとラインはAR Plane Mesh Visualizerによって定期的に調整され、その結果、マテリアルとレンダラーのプロパティを変更することで調整可能なフィルとボーダーを持つ平面が描画されます。
さらに、MeshColiderコンポーネントをプレハブに追加して、レイキャストのヒットを受け取ることができます。 alt text

機能の設定

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

  • 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が無効であるかのように動作します。

DefaultScene Understandingの平面検出の違い

MetricDefaultScene Understanding
検出速度と初回検出普通速い
誤検出少ない多い
平面の精度高い高い
平面の数少ない多い
平面の更新更新頻度は低いが安定している更新頻度は多く、より動的に変化する
平面方向のフィルター水平と垂直無し
ヒットテスト平面に対して機能するメッシュに対して機能する