オクルージョンスタートガイド 更新日時: 2025/02/18
以下のセクションでは、Depth APIの実装方法を順を追って説明し、オクルージョンの使用を開始するのに役立つ情報を紹介します。
このガイドを読み終えると、以下のことができるようになります
Depth APIが利用できるようにUnityプロジェクトを設定する アプリケーションに奥行テクスチャーを取り込む シーン内の仮想オブジェクトが現実世界のオブジェクトによってオクルージョンされるようにする 次の表は、オクルージョン機能と互換性のあるソフトウェアを示しています。
エディターバージョン XRプロバイダープラグインのバージョン Meta XR SDKバージョンの互換性 Unity 2022.3.15f1以降
Oculus XRプラグイン4.2.0以降
v67以上、v74未満
Unity 2023.2以降
Oculus XRプラグイン4.2.0以降
v67以上、v74未満
Unity 6以降
Unity OpenXR Metaプラグイン(com.unity.xr.meta-openxr@2.1.0以降)
v74以降
Depth API compatibility
Depth APIはSDKの以前のバージョンでもサポートされていますが、最高の品質とパフォーマンスを発揮するためには最新バージョンにアップグレードしてください。以前のバージョンのサポートについては、Unity-DepthAPIリポジトリ にあるドキュメントをご覧ください。 このチュートリアルを始める前に、
パススルースタートガイド で案内されている手順を完了し、必要な依存関係を含むプロジェクトを作成してください。このチュートリアルはそのようなプロジェクトに基づき構成されています。
シーンにオクルージョンを追加するには、まずシーン内の任意の場所にEnvironmentDepthManager.csコンポーネントを追加します。このスクリプトはMeta XR Core SDKのScripts/EnvironmentDepthの下にあり、システムから奥行テクスチャーを取得して、シェーダーに渡します。
Depth APIを機能させるには、予め次の要件を満たしておく必要があります。
グラフィックAPIをVulkanに設定する。 ステレオレンダリングモードをマルチビューに設定する。 パススルー機能を有効にして、Depth APIを使う予定のすべてのシーンに統合しておく。 OVRManagerコンポーネントでシーンサポートを必須に設定する。 このプロセスについてサポートが必要な場合は、プロジェクト設定ツール(PST)をご利用ください。このツールは問題を検知し、修正方法を提案します。一般的な推奨事項も提供されます。このツールには、次の2とおりの方法でアクセスできます。
エディターの左上隅にある小さな[Meta XR Tools (Meta XRツール)]ドロップダウン。クリックすると起動するメニューからPSTにアクセスできます。このメニューには、問題が検出されると修正が必要であることを知らせる通知バッジも備わっています。
Unityのトップメニューで[Meta] > [Tools (ツール)] > [Project Setup Tool (プロジェクト設定ツール)]を選択して、PSTにアクセスすることもできます。PSTが開くと、すべての問題と解決のための推奨事項がメニューに表示されます。未解決の問題をすべて修正しないと、Depth APIが機能しません。推奨事項も適用してください。
Depth APIを利用するアプリは、アプリの実行中に空間データへのアクセス許可をリクエストする必要があります。アプリからユーザーに対して、USE_SCENE アクセス許可を受け入れるように促す必要があります。ユーザーにアクセス許可リクエストウィンドウを表示したいときは、以下のコード行を呼び出します。
または、OVRManager 内の起動時のアクセス許可リクエスト で、[Scene (シーン)] ボックスにチェックを入れてください。そうすると、アプリ起動時にシーンのアクセス許可を付与するよう、ユーザーに求めることができます。
オブジェクトには、オクルージョンの遮蔽をサポートするシェーダー付きマテリアルが必要です。
Depth APIには、オクルージョンサポートによってシェーダーとシェーダーグラフを強化するための、シェーダーライブラリとシェーダーグラフのサブグラフが備わっています。また、初心者に便利な基本シェーダーも含まれています。
このガイドでは、Depth APIに付属しているOcclusionLitというシェーダーを使用します。このシェーダーは、URPでもBiRPでも機能します。
「OccludedMaterial」のような名前で新しいマテリアルを作成します。
そのシェーダーを
EnvironmentDepth/OcclusionLitに変更します。
このマテリアルをオクルージョンされるオブジェクトに適用します。
ビルディングブロックを使えば、オクルージョン追加プロセスを効率化できます。シーンにオクルージョンブロックを追加すると、オクルージョンを機能させるのに必要なすべての依存関係が自動的に追加されます。これはオクルージョン初心者におすすめの方法です。
「オクルージョン」ビルディングブロックをシーン内にドラッグアンドドロップすると、必要なすべての依存関係が自動的に追加されます。
前のステップで追加したEnvironmentDepthManager.csコンポーネントを使って、プロジェクトでオクルージョンのタイプを設定できます。
コードからオクルージョンの動作を変更するには、以下のコードスニペットを参照してAPIの使い方を学んでください。
// Add a reference to your EnvironmentDepthManager
[SerializeField] private EnvironmentDepthManager _environmentDepthManager;
//enables the feature and makes depth textures available
_environmentDepthManager.enabled = true;
//sets occlusion mode to "SoftOcclusion" -- this is the default value
_environmentDepthManager.OcclusionShadersMode = OcclusionShadersMode.SoftOcclusion;
//sets occlusion mode to "HardOcclusion"
_environmentDepthManager.OcclusionShadersMode = OcclusionShadersMode.HardOcclusion;
//sets occlusion mode to "None" -- it's a good idea to disable environmentDepthManager to save resources in this case
_environmentDepthManager.OcclusionShadersMode = OcclusionShadersMode.None;
//disables the feature. Frees up resources by not requesting depth textures from the system
_environmentDepthManager.enabled = false;
この機能の使用を開始する方法について理解できたら、次のガイドに進みましょう。
使用事例やシェーダーのサポートパッケージを入手するには、
サンプル ページをご覧ください。