深度ブレンディング (Depth Blending)
注釈
この機能は、実験的な機能であり、変更される可能性があります。また、サポート対象外のため、本番環境には使用しないでください。これらの実験的な機能は、今後のリリースで提供される可能性のあるプレビュー版として提供されています。実験的機能に関するフィードバックは、Lightshipの開発者コミュニティ に投稿してください。
深度ブレンディングは、ARDKの深度ベースのオクルージョンを改善する実験的な機能です。通常、深度ベースのオクルージョンを使用する場合は、深度バッファのオクルージョンか、スクリーン空間のメッシュベースのオクルージョンのいずれかを使用することができます。深度バッファのオクルージョンは、動的に動作するオブジェクトには効果的ですが、オクルージョン結果が不安定になったり、ちらついたりすることがあります。スクリーン空間のメッシュベースのオクルージョンの方が安定性は高いものの、動的なオブジェクトに適応するのに時間がかかることがあります。深度ブレンディングでは、深度バッファのオクルージョンとメッシュベースのオクルージョンの両方を使用して、動的オブジェクトと静的オブジェクトのどちらも安定して動作するオクルージョンを生成することができます。
注釈
深度ブレンディングを使用する場合は、AR Sessionでメッシングを有効にする必要があります。メッシングを有効にする方法については、 はじめに: メッシング - シーンにARMeshを追加する をご参照ください。さらに、プロジェクトにARDK_FusedDepthレイヤーがあることを確認し、必要に応じて、 レイヤーを追加 します。 ARMeshManager
で Mesh Prefab(メッシュプレハブ) として設定したプレハブで、ARDK_FusedDepthレイヤーが使用されていることを確認します。
ARDepthManager.StabilizeOcclusions をtrueに設定して、深度ブレンディングを有効にします。
ARDepthManager.OcclusionTechnique (Unityインスペクターの Occlusion Mode(オクルージョンモード) )を Depth Buffer
に設定します。詳細については、 深度ベースのオクルージョン を参照してください。これで、ARDKで深度ブレンディングを使用してオクルージョンが行うことができるようになります。
深度ブレンディングを有効にすると、わずかにパフォーマンスヒットが生じる可能性があるため、深度マネージャーの KeyFrameFrequency を小さくして補正することをお勧めします。
既知の問題として現在、深度ブレンディングで使用される深度ストリームが最初の数フレームで初期化されず、エラーが発生する場合があります。この問題は、今後のリリースで修正される予定です。
その他の使用例
深度ブレンディングの使用例については、 ARDK使用例 の ContextAwareness/Meshing
フォルダの OcclusionStabilizationExample
シーンを参照してください。 MeshDepthChunk
プレハブがARDK_FusedDepthレイヤーに設定されていることを確認してください(必要に応じてレイヤーを追加)。