メッシュ作成
ARKit は、ARKit 3.5 で利用可能になったシーン再構成機能をサポートし、LiDAR スキャナーを搭載した新しい iPad Pro で有効になります。
ARKit のシーン再構成は、スキャンした現実世界のジオメトリに基づきメッシュを生成する、メッシュ作成機能を備えています。この機能は、Mesh Manager で有効にして設定します。
要件
この新しいメッシュ機能には Xcode 11.4 以降が必要であり、LiDAR スキャナーを搭載した iOS デバイス (新しい iPad Pro など) でのみ動作します。
この Apple ARKit パッケージには、Unity 2021.2 以降が必要です。
シーンでのメッシュ作成機能の使用
ARKit のシーン再構成では、LiDAR センサーを使用して環境をスキャンし、現実世界の環境を表すメッシュジオメトリを作成します。さらに、ARKit ではスキャンされたメッシュの各三角形を分類することもできます。三角形ごとの分類により、現実世界における三角形の位置に対応したサーフェスの種類が識別されます。
AR Foundation で ARKit メッシュ作成機能を使用するには、ARMeshManager コンポーネントをシーンに追加する必要があります。

Mesh Prefab (メッシュプレハブ)
meshPrefab を、スキャンしたメッシュごとにインスタンス化されるプレハブに設定する必要があります。meshPrefab には、少なくとも 1 つの MeshFilter コンポーネントを加えなければなりません。
スキャンしたメッシュをレンダリングする場合は、MeshRenderer コンポーネントと Material コンポーネントを meshPrefab のゲームオブジェクトに追加する必要があります。
現実世界でスキャンしたメッシュと物理的に相互作用する仮想コンテンツを設定する場合は、MeshCollider コンポーネントを meshPrefab のゲームオブジェクトに追加する必要があります。
以下の画像は、必須の MeshFilter コンポーネント、物理的な相互作用を可能にする任意の MeshCollider コンポーネント、メッシュをレンダリングする任意の MeshRenderer および Material コンポーネントが設定されたメッシュプレハブを表しています。

Normals (法線)
ARKit でメッシュジオメトリを構築するときには、メッシュの頂点法線が計算されます。メッシュの頂点法線が必要ない場合は、メモリと CPU 時間を節約するために Normals を無効にします。
Concurrent Queue Size (同時キューサイズ)
メインスレッドのブロッキングを防ぐため、ARKit メッシュを Unity メッシュに変換するタスクと、物理演算の衝突メッシュを作成するタスク (meshPrefab のゲームオブジェクトに MeshCollider コンポーネントが含まれている場合) をジョブキューに移動し、バックグラウンドスレッドで処理します。concurrentQueueSize で、同時に処理されるメッシュの数を指定します。
その他の ARMeshManager 設定
ARKit の実装では、上記の設定のみが ARKit のメッシュ生成のパフォーマンスと出力に影響します。ARKit には、ARMeshManager の以下の機能は実装されていません。
- Density (密度)
- Tangents (接線)
- Texture Coordinates (テクスチャ座標)
- Colors (色)
サンプルシーン
arfoundation-samples リポジトリには、以下の 3 つのサンプルシーンがあります。
- ClassificationMeshes シーンは、メッシュ分類機能を使用して、現実世界の上に色のついたオーバーレイを生成します。各色は、ARKit によって検出された固有のサーフェスタイプを表します。

- NormalMeshes シーンは、現実世界の上にオーバーレイをレンダリングします。メッシュの色は、メッシュジオメトリの法線に基づいて変化します。

- OcclusionMeshes シーンは一見何もしていないように見えますが、実際には、現実世界のジオメトリに基づいてシーンの上に深度テクスチャをレンダリングしています。これにより、現実世界は仮想コンテンツを覆う (オクルージョン) ようになります。このシーンには、画面をタップすると赤いボールがシーンに発射されるスクリプトが設定されています。空間にボールを発射してから、デバイスのカメラを現実世界の他のオブジェクトの背後に移動し、仮想の赤いボールが現実世界のオブジェクトによって覆われる (隠される) ことを確認することで、オクルージョンが機能していることを確認できます。

メッシュ作成機能の動作
ノート: Made With Unity のロゴが消えてから (もしくは新しい AR Session が開始されてから)、スキャンしたメッシュが表示され始めるまでに通常 4 秒程度かかります。
さらに、LiDAR スキャナーだけでは、現実世界のサーフェスに若干凹凸のあるメッシュが生成される可能性があります。シーンに ARPlaneManager を追加して有効にすると、ARKit はメッシュを構築する際にその平面情報を考慮し、そのサーフェス上の平面を検出した部分のメッシュをスムージングします。
その他の情報
ARKit 3.5 の詳細については、ARKit 6 がさらに充実 を参照してください。
シーン再構成の詳細については、Visualizing and Interacting with a Reconstructed Scene を参照してください。
* Apple および ARKit は、アメリカ合衆国およびその他の国や地域で登録されている Apple Inc. の商標です。