本文へスキップ

メッシング

メッシングは、深度データとトラッキングデータを使用して、スキャンされた現実の世界の推定ジオメトリを表すメッシュを生成する機能です。

標準の ARMeshManager (opens in new window)をシーンに配置することで、開発者は、仮想オブジェクトが現実世界の環境と相互作用することを可能にするライブメッシュにアクセスすることができます。 例えば、メッシュ化されたシーンに投げ込まれたバーチャルボールは、床や壁でリアルに跳ね返ります。

Niantic Lightship SDKがUnityで有効になっている場合でも、メッシングはUnityのAR Foundation Meshing Subsystem(新しいウィンドウで開きます)を通じて提供され、標準の ARMeshManager(新しいウィンドウで開きます)を使用して有効にします。 Lightshipはデフォルトの実装をオーバーライドし、標準インターフェースを通じてNiantic独自のメッシュ生成技術を提供します。

備考

Lightship Meshingは、AndroidまたはiOSを搭載したライダーおよび非ライダーデバイスで動作します。 ライダーデバイスをサポートするには、Lightship SettingsPrefer LiDAR if Available設定がチェックされており、シーンに[AROcclusionManager](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.0/api/UnityEngine.XR.ARFoundation.AROcclusionManager.html)(新しいウィンドウで開きます)が存在することを確認してください。

ガンジー像への落下物

メッシュブロック

3D世界は一定の大きさの "ブロック "に分割され、各メッシュブロックの名前は3D世界での位置に対応している。 Meshing を実行すると、XROrigin > Trackables の下のシーン階層に新しいメッシュブロックが作成されます。 各ブロックは、ARMeshManagerで指定されたMesh Prefabによって定義された独自のレンダラーとコライダーを持ちます。 メッシュブロックは、3D表現に新しいデータが追加されると、継続的に更新されます。

メッシュ拡張

Lightshipのメッシング・システムは、距離、品質、クリーンアップのメッシング・ルールを微調整できる追加オプションを公開しています。

Lightship Meshing Extension スクリプトを Meshing オブジェクトに追加すると、これらの設定にアクセスできるようになります:

Lightship Meshing Extensionの設定
  • 目標フレームレート:メッシュ更新ルーチンを実行する1秒あたりの回数。
  • ARフュージョンのパラメータ:
    • 最大統合距離(Maximum Integration Distance):深度サンプルを3Dシーンに統合するための遠距離しきい値(メートル単位)。 カメラからこの距離以上離れると、新しいメッシュブロックは生成されない。
    • ボクセルサイズ(Voxel Size):シーン内の個々のボクセル要素のサイズ(メートル単位)。 値を大きくするとメモリは節約できますが、サーフェスの精度は落ちます。
    • 距離ベースのボリュームクリーンアップを有効にします:これを有効にすると、(新しいメッシュが生成される領域の外に移動した時点で)ボリュームメトリック表現内のすでに処理された要素をクリーンアップすることで、メモリを節約し、レイテンシを滑らかにします。
  • ARメッシュパラメータ:
    • メッシュブロックのサイズ:メッシュフィルターとメッシュコライダーの生成に使用するメッシュブロックのサイズ。
    • メッシュ除去距離(Mesh Culling Distance):メッシュブロックがシーンから削除される距離。 カリングを無効にするには0を設定します。
    • メッシュ・デシメーションを有効にする:メッシュから余分な三角形を削除してメモリを節約するために有効にします。
  • メッシュフィルタリング:
    • メッシュ・フィルタリングは有効ですか?メッシュフィルタリングを有効にするには、このボックスにチェックを入れます。
  • 実験メッシュオプション:
    • 詳細レベルを有効にする:メモリを節約し、待ち時間を短縮する実験的な詳細メッシュ生成機能を有効にするには、このボックスにチェックを入れます。 詳細については、Meshing Level of Detail機能ページを参照してください。

メッシュフィルター(Mesh Filtering)

メッシュ・フィルタリングは、セマンティック・セグメンテーションを使用して、メッシュのセクションを地面や 空などの世界の共通部分として識別し、その情報を使用して、ユーザー定義の許可リストとブロックリストを使用して、最終メッシュの一部とすべきものを決定します。 例えば、空を含むブロックリストは最終メッシュから空を削除し、地面を含む許可リストは地面以外のすべてを除外する。 詳しくは、メッシュ・フィルタリングでセマンティック・チャンネルを除外する方法をご覧ください。

セマンティックフィルタリング許可リストの使用例
メッシュフィルタリングのオンとオフの例

長距離メッシュ

注意

これらの設定は、ハイエンドのデバイスにのみ推奨されます。 対応デバイスについては、 Google ARCore デバイスリスト および Apple ARKit デバイスリストを参照してください。

Voxel Sizeを大きくし、Enable Distance Based Volumentric Cleanupをオンにし、Maximum Integration DistanceMesh Culling Distanceを20~40メートルにすることで、より大きな距離のメッシュを作成することができます。 例えば、以下の設定を試してみてください:

  • Target Frame Rate: 20
  • AR Fusion Parameters
    • Maximum Integration Distance (最大積分距離): 40
    • Voxel Size (ボクセルサイズ): 0.05
    • Enable Distance Based Volumentric Cleanup: True
  • AR Meshing Parameters
    • Mesh Block Size: 1.4
    • メッシュ除去距離:40 ( >= 最大統合距離)
    • Enable Mesh Decimation: True

これらの設定を使用する場合は、ARMeshManagerコンポーネントのConcurrent Queue Size設定を大きくして、サーフェスされるタイルの量にマネージャが対応できるようにしてください。 CPUとGPUの使用量が増えるので、さまざまなデバイスで徹底的にテストすることをお勧めします。

長距離メッシュの例長距離メッシュの例

ライダー装置

ライダー・デバイスでは、ライダー深度またはライトシップ深度のいずれかでライトシップ・メッシングを使用することができます。 ライダー深度を使用するには、Niantic Lightship Settingsメニュー(Lightshipトップメニュー > Settings)でPrefer LiDAR if Availableが有効になっており、シーンに[AROcclusionManager] (https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.0/api/UnityEngine.XR.ARFoundation.AROcclusionManager.html) (opens in new window)が存在することを確認します。 (オクルージョンのプリファレンス・モードとしてオクルージョンなし」が選択されていても、メッシュ作成はサポートされます)。

ライダーの深度は、最大積分距離が5メートル程度までしか対応できない。 ユーザーから遠く離れたメッシュブロックを生成したい場合は、Prefer LiDAR if Availableを無効にし、代わりにLightship Depthを使用してください。