メインコンテンツまでスキップ
バージョン: 1.0.1

空間メッシュ

このサンプルでは、現実世界の環境に近似した空間メッシュを生成して可視化する方法を紹介します。

空間メッシュと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
alt text

サンプルのインポート

まだサンプルをインポートしていない場合は、以下の手順でインポートすることができます。

  1. 基本パッケージのインポート
  2. 基本サンプルのインポート

サンプルシーンは以下の場所に存在します。
Assets/Samples/Snapdragon Spaces/1.X.X/Core Samples/Scenes/Spatial Meshing Sample/Spatial Meshing Sample.unity

サンプルの仕組み

ARMeshManagerコンポーネントをXR Originゲームオブジェクトの子に付けると、メッシュ生成のサブシステムが有効になります。起動すると、サブシステムは現実世界のオブジェクトに近いメッシュを生成します。 alt text
サンプルシーンの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は完全に不透明です。