空間メッシュ
このサンプルでは、現実世界の環境に近似した空間メッシュを生成して可視化する方法を紹介します。
空間メッシュとAR FoundationのAR Mesh Managerコンポーネントの機能については、Unityのドキュメントを参照してください。Snapdragon Spaces SDK機能の使用方法については、空間メッシュ機能のページを参照してください。
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でSpatial Meshingにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > Spatial Meshing
サンプルのインポート
まだサンプルをインポートしていない場合は、以下の手順でインポートすることができます。
サンプルシーンは以下の場所に存在します。
Assets/Samples/Snapdragon Spaces/1.X.X/Core Samples/Scenes/Spatial Meshing Sample/Spatial Meshing Sample.unity
サンプルの仕組み
ARMeshManager
コンポーネントをXR Origin
ゲームオブジェクトの子に付けると、メッシュ生成のサブシステムが有効になります。起動すると、サブシステムは現実世界のオブジェクトに近いメッシュを生成します。
サンプルシーンのSpatial Meshing Sample Controllerスクリプトコンポーネントは、UIへの変更を処理します。
-
CPU Normalsのチェックボックスがオンの場合
ARMeshManager.meshesChanged
イベントで提供されるMeshFilter
コンポーネントがCPUで生成された法線を持つようになります。- 生成されたメッシュは、
Assets > Samples > Snapdragon Spaces > Core Samples > Scenes > Spatial Meshing Sample > Prefabs > MeshPrefabWithCPUNormalsPrefab
にあるプレハブを使用して作成されます。 - このプレハブにはMesh Rendererがアタッチされており、Mesh With Cpu Normalsマテリアルを使用してメッシュを描画します。このマテリアルはStandardシェーダーを使用します。
-
CPU Normalsのチェックボックスがオフの場合
ARMeshManager.meshesChanged
イベントによって提供されるMeshFilter
コンポーネントは法線を持ちません。- 生成されたメッシュは、
Assets > Samples > Snapdragon Spaces > Core Samples > Scenes > Spatial Meshing Sample > Prefabs > MeshPrefab
にあるプレハブを使用して作成されます。 - このプレハブにはMesh Rendererがアタッチされており、Depth Outlineマテリアルを使用してメッシュを描画します。このマテリアルはカスタムMesh Visualizationシェーダーを使用し、ビジュアライゼーション用に法線を生成します。
-
Mesh Opacityのスライダー
- レンダリングされたメッシュの透け具合をコントロールします。
- この値はSpatial Meshing Sample Controllerコンポーネントによって0.1〜1.0の間になります。0.1は非常に透明で、1.0は完全に不透明です。