本日は ARFoundation の小ネタ枠です。
ARFoundation で Occlusion を利用する手順の記事を翻訳します。
前提条件
ARFoundation のインポート手順は以下の記事を詐称ください。
bluebirdofoz.hatenablog.com
ARFoundation で Occlusion を利用する
ARFoundation で Occlusion を利用する手順は以下の記事に説明があります。
docs.unity3d.com
Language を「日本語」に変えた場合一部の説明が抜けていたので今回はこちらの英語記事を日本語に訳して確認しました。
オクルージョン
利用する AR デバイスによっては、現実世界の奥行き情報を提供するものもあります。
例えば、人物オクルージョンと呼ばれる機能により、A12 Bionic チップを搭載したiOSデバイス(およびそれ以降)はARカメラフレームで検出された人物の奥行き情報を提供します。
LiDAR スキャナーを搭載した新しい Android や iOS デバイスは各ピクセルに、デバイスと周囲環境との深度推定値を含む環境深度画像を提供できます。
ARCameraBackground コンポーネントと AROcclusionManagerコンポーネントを Camera に追加すると、背景レンダリングパスが深度バッファをレンダリングする際に利用可能な深度情報を自動的に取り込むことができます。
これにより、レンダリングされるオブジェクトが実世界で検出された物体によってオクルージョンされるようになります。
例えば、人物オクルージョンをサポートするiOSデバイスの場合、検出された人物の背後に存在するオブジェクトをオクルージョンしてレンダリングします。
AR Occlusion Managerコンポーネント
AROcclusionManager コンポーネントは深度画像またはステンシル画像を表すフレームごとの画像を出力します。
レンダリングプロセスにこれらの深度画像を組み込むことと多くの場合、近くの現実世界の物体が共有AR空間内のそれらの背後に位置する仮想コンテンツをオクルージョンします。
これは AR コンテンツと現実世界の物体のリアルな合成を達成するための最良の方法です。
対応する深度画像の種類は以下の通りです。
・Environment Depth(環境深度):デバイスからカメラ視野内の現実世界の物体までの距離。
・Human Depth(人間の深度):デバイスからカメラ視野内の認識された人間の任意の部分までの距離。
・Human Stencil(人間の範囲):各ピクセルについて、そのピクセルが認識された人間を含むかどうかを指定する値。
スクリプトインターフェースにより、以下のことが可能です。
・サポートされているさまざまな深度画像の有効化、無効化、および品質を設定する。
・各タイプのデプスイメージが現在のデバイスで利用可能かを問い合わせる。
・深度画像データへアクセスする