メッシング
メッシングは、深度データとトラッキングデータを使用して、スキャンされた現実の世界の推定ジオメトリを表すメッシュを生成する機能です。
標準の ARMeshManager
(opens in new window)をシーンに配置することで、開発者は、仮想オブジェクトが現実世界の環境と相互作用することを可能にするライブメッシュにアクセスすることができます。 例えば、メッシュ化されたシーンに投げ込まれたバーチャルボールは、床や壁でリアルに跳ね返ります。
UnityでNiantic Lightship SDKが有効になっていても、メッシングはUnityのAR Foundation Meshing Subsystem(新しいウィンドウで開きます)を通じて提供され、標準の ARMeshManager
(新しいウィンドウで開きます)で有効化されます。 Lightshipでは、デフォルトの実装を上書きし、標準のインターフェイスを通じてNiantic独自のメッシング技術を提供しています。
Lightship Meshingは、LiDARの対応/非対応に関係なく、AndroidとiOSのどちらでも動作します。 LiDAR対応デバイスをサポートするには、 Lightship設定 で Prefer LiDAR if Available(利用可能な場合はLiDARを優先)
にチェックが入っており、シーンに AROcclusionManager(新しいウィンドウで開きます)が存在することを確認してください。
メッシュブロック
3D世界は固定サイズの「ブロック」に分割されており、各メッシュブロックの名前は3D世界での位置を表しています。 メッシングが実行されると、新しいメッシュブロックがシーンのHierarchy内の XROrigin
> Trackables
に作成されます。 各ブロックは、ARMeshManager
で指定されたMesh Prefabによって定義された独自のレンダラーとコライダーを持ちます。 メッシュブロックは、3D表現に新しいデータが追加されると、絶えず更新されます。
メッシング拡張機能
Lightshipのメッシングシステムは、距離、品質、クリーンアップのメッシング・ルールを微調整できる追加オプションを公開しています。
Lightship Meshing Extension スクリプトを メッシング オブジェクトに追加すると、次の設定にアクセスできるようになります。
- 目標フレームレート: 1秒あたりにメッシュ更新ルーチンを実行する回数。
- AR Fusion Parameters:
- 最大統合距離: 深度サンプルを3Dシーンに統合するための最大距離の閾値(メートル単位)。 カメラからの距離がこの値を超えると、新しいメッシュブロックは生成されません。
- ボクセルサイズ: シーン内の個々のボクセル要素のサイズ(メートル単位)。 値を大きくするとメモリは節約できますが、サーフェスの精度は落ちます。
- 距離に基づくボリューメトリッククリーンアップを有効にする: この設定を有効にすると、メモリを節約し、レイテンシーを改善するために、(新しいメッシュが生成される領域の外に移動した時点で)処理済みの要素をボリューメトリック表現からクリーンアップします。
- AR Meshing Parameters:
- メッシュブロックのサイズ: メッシュフィルターとメッシュコライダーの生成に使用されるメッシュブロックのサイズ。
- メッシュカリング距離: メッシュブロックがシーンから削除される距離。 カリングを無効にするには0を設定します。
- メッシュ・デシメーションを有効にする: この設定を有効にすると、メッシュから余分な三角形を削除してメモリを節約できます。
- メッシュ・フィルタリング:
- メッシュ・フィルタリングを有効にする: このボックスにチェックを入れると、メッシュ・フィルタリングが有効になります。
- **実験的なメッシュオプション: **
- 詳細レベル(LOD)を有効にする: このボックスにチェックを入れると、詳細レベル(LOD)の実験的なメッシング機能が有効になり、メモリを節約し、レイテンシーを短縮することができます。 詳細については、 詳細レベル(LOD)のメッシング の機能ページを参照してください。
メッシュ・フィルタリング
メッシュ・フィルタリングは、 セマンティック・セグメンテーション を使用して、メッシュの特定のセクションを 地面
や 空
などの一般的な要素として識別します。その後、その情報をもとに、ユーザー定義の許可リストとブロックリストを使用して、最終的なメッシュに含めるべき部分を決定します。 例えば、 空
を含むブロックリストを使用すると、最終メッシュから空が削除され、 地面
を含む許可リストを使用すると、地面以外のすべてが除外されます。 詳しくは、 メッシュ・フィルタリングを使ってセマンティック・チャンネルを除外する をご覧ください。
遠距離メッシング
これらの設定は、ハイエンドのデバイスにのみ推奨されます。 サポートされているデバイスについては、 Google ARCoreデバイスリスト および Apple ARKitデバイスリスト をご覧ください。
ボクセルサイズを大きくし、"Enable Distance Based Volumetric Cleanup"をオンにし、"**Maximum Integration Distance "**と "**Mesh Culling Distance "**を20~40メートルにすることで、より大きな距離のメッシュを作成することができます。 例えば、以下のように設定してください。
- Target Frame Rate: 20
- AR Fusion Parameters:
- Maximum Integration Distance (最大積分距離): 40
- Voxel Size (ボクセルサイズ): 0.05
- 距離ベースの体積クリーンアップを有効にする:真
- AR Meshing Parameters:
- Mesh Block Size: 1.4
- メッシュカリング距離: 40(最大統合距離以上が望ましい)
- Enable Mesh Decimation: True
これらの設定を使用する場合は、 ARMeshManager
コンポーネントの Concurrent Queue Size 設定でこの値を増やし、表示されるタイルの量にマネージャーが対応できるようにしてください。 これにより、CPUとGPUの使用量が増加するため、さまざまなデバイスで十分にテストすることをお勧めします。
LiDARデバイス
LiDARデバイスでは、LiDARの深度またはLightshipの深度を使用して、Lightship Meshingを利用できます。 LiDARの深度を使用するには、Niantic Lightshipの設定メニュー(Lightship トップメニュー > 設定)で、 Prefer LiDAR if Available(利用可能な場合はLiDARを優先) が有効になっており、 AROcclusionManager(新しいウィンドウで開きます)がシーン内に存在していることを確認してください。 (オクルージョンの優先モードで、No Occlusion(オクルージョンなし) が選択されていても、メッシングは引き続きサポートされます。)
LiDARの深度は、最大統合距離が約5メートルに制限されます。 ユーザーからさらに離れた場所にメッシュブロックを生成したい場合は、 Prefer LiDAR if Available(利用可能な場合はLiDARを優先) を無効にして、Lightship Depthを使用してください。