docs.unity3d.com
    目次を表示する/隠す

    AR Plane Manager コンポーネント

    Plane Manager は、トラッカブルマネージャー の一種です。

    AR Plane Manager コンポーネント
    AR Plane Manager コンポーネント

    Plane Manager は、環境内で検出された平面ごとにゲームオブジェクトを作成します。平面とは、ポーズ、次元、境界点で表される平らなサーフェスです。この場合の境界点は凸状です。

    平面として検出できる環境内の特徴の例としては、水平のテーブル、フロア、カウンター、垂直の壁などがあります。

    Detection Mode には水平、垂直、またはその両方を指定できます。プラットフォームによっては、垂直平面検出を実行するために追加の作業が必要な場合があるので、水平平面しか必要ない場合は、垂直平面検出を無効にしてください。

    AR Plane Manager コンポーネントの Detection Mode ドロップダウンには、Nothing (なし)、Everything (すべて)、Horizontal (水平)、Vertical (垂直) という 4 つのオプションが表示されます
    AR Plane Manager Detection Mode ドロップダウン

    平面のライフサイクル

    平面は追加、更新、削除できます。AR Plane Manager は 1 フレームに 1 回 planesChanged イベントを呼び出すことができます。このイベントには、前回のフレーム以降に追加、更新、削除された平面の List が 3 つ含まれます。

    平面が最初に検出されると、Plane Manager はそれを "追加された" 平面としてレポートします。その後の平面に対する更新は、この最初の平面検出に対する微調整となります。平面は通常、環境内のスキャン対象が増えるにつれ拡大していきます。

    平面が更新されるときは、多くの場合その境界頂点も変化しています。このイベントに対応するには、平面の ARPlane.boundaryChanged イベントをサブスクライブします。このイベントは、少なくとも 1 つの境界頂点が Vertex Changed Threshold 以上変化するか、頂点の総数が変化した場合にのみ発動します。

    平面が削除されるときは、通常はサーフェスが削除されるのではなく、その平面が無効化される形で環境についてのサブシステムの認識が向上または変化します。

    一部のプラットフォームは、平面マージという概念に対応しています。ある平面が別の平面にマージされると、ARPlane.subsumedBy には最初の平面を組み込んだ平面が含まれることになります。これに対応していないプラットフォームでは、一方の平面が削除され、もう一方の平面がそれを含むサイズに拡大される場合もあります。

    平面の可視化

    平面を可視化するには、プレハブやゲームオブジェクトを作成して、ARPlane の boundaryChanged イベントをサブスクライブするコンポーネントを含める必要があります。AR Foundation には、ARPlaneMeshVisualizer が用意されています。このコンポーネントは、境界頂点から Mesh を生成し、それを MeshCollider、MeshFilter、LineRenderer (存在する場合) に割り当てます。

    プレハブの作成に使用できる新しいゲームオブジェクトを作成するには、シーンビューで右クリックし、表示されたコンテキストメニューから GameObject > XR > AR Default Plane の順に選択します。

    新しい AR Default Plane ゲームオブジェクトの作成

    ゲームオブジェクトを作成したら、それを ARPlaneManager の Plane Prefab フィールドに割り当てます。直接使用することも、ゲームオブジェクトを Assets フォルダーにドラッグしてプレハブを作成することもできます。Default Plane は、以下のようになっています。

    AR Default Plane

    まず AR Default Plane をプレハブとして保存し、AR Default Plane ゲームオブジェクトを削除してから、それを Prefab フィールドで使用することをお勧めします。平面をシーン内に残すと、そのシーン内にゼロスケールの平面アーティファクトが残ることになるからです。

    AR Default Plane のプレハブ

    AR Foundation パッケージには、これらの使いやすいコンポーネントが含まれていますが、必要に応じて独自のビジュアライザー (またはその他のロジック) を作成することもできます。

    平面の無効化

    AR Plane Manager が有効になっている限り、平面の作成、更新、削除は継続されます。既存の平面のレンダリングを停止するには、以下のようにそのゲームオブジェクトを非アクティブ化します。

    foreach (var plane in planeManager.trackables)
    {
        plane.gameObject.SetActive(false);
    }
    

    Plane Manager がまだ管理している ARPlane に対して Destroy を実行しないでください。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)