実世界でのオクルージョンの設定方法
Lightshipオクルージョンは、ARアプリケーションに奥行きを作り出し、ゲームオブジェクトを現実世界 のオブジェクトの前や後ろにレンダリングします。 ARDK 3.0では、LightshipはAR Foundation Occlusion Managerとシームレスに統合され、ARKitやARCoreでは利用できないオクルージョンオプションが可能になりました。
前提条件
ARDK がインストールされたUnityプロジェクトと、セットアップされた基本的な AR シーンが必要です。 詳細については、 ARDK 3のインストール および ARシーンの設定を参照してください。
オクルージョンを設定する
ライトシップのオクルージョンを設定する:
AROcclusionManager
を メインカメラに追加します。GameObject
:- Hierarchyで、
XROrigin
と Camera Offsetを展開し、 Main Camera オブジェクトを選択します。 次に、 インスペクタで、 コンポーネントの追加 をクリックし、AROcclusionManager
を追加します。
- Hierarchyで、
- 立方体をCameraの子として追加し、位置、回転、スケールを設定します:
- Hierarchyで、 Main Cameraを右クリックし、 3D Object にマウスオーバーして、 Cubeを選択します。
- Inspectorで、 Transform の見出しの下で、立方体の位置を (0, 0, 2) に、回転を (0, 45, 45) に、スケールを (0.2, 0.2, 0.2) に設定します。
- デバイスを構築したり、再生を使用したりすると、あなたのキューブは、あなたの携帯電話から2メートル以内にある物理的なオブジェクトによってオクルードされます。
Lightship オクルージョンエクステンションによるオクルージョンの品質向上
Lightship Occlusion Extension を追加することで、標準の AROcclusionManager
に機能を追加し、オクルージョンのビジュアルクオリティを向上させることができます。
拡張機能を追加し、その機能の1つをテストする:
-
LightshipOcclusionExtension
をメインカメラGameObject
に追加します。- Hierarchy で、
XROrigin
を展開し、 Main Camera を選択します。 次に、 インスペクタ で、 コンポーネントの追加 をクリックし、ライトシップオクルージョンエクステンション
を追加します。
- Hierarchy で、
-
Universal Render Pipelineを使用している場合は、
Lightship Occlusion Extension Feature
をURPレンダラーに追加します:- Projectウィンドウで、Assetsディレクトリの下に、使用しているURPレンダラーを見つけます。
- Inspectorで、 Add Renderer Feature ボタンをクリックし、
Lightship Occlusion Extension Feature
を選択します。AR Background Renderer Featureの
後にあることを確認してください。
-
拡張オプションメニューで、 Optimal Occlusion Distance Mode を Specified Game Object に設定します。
-
Principal Occludee として、先に作成した Cube を設定する。
-
デバイスにビルドしたり、再生で実行すると、画像内のオブジェクトのエッジが、キューブのオクルージョン境界線により正確に並ぶようになりました。
Lightship Occlusion Extensionとその機能の詳細については、Occlusion Featureページをご覧ください。
オクルージョン抑制の設定
オクルージョン抑制は、指定された意味情報を含むピクセルがARアセットをオクルージョンするのを防ぎます。 深度ベースのオクルージョンはノイズが多く、特定のセマンティック・チャンネルとの不整合を引き起こす可能性がある。 オクルージョン抑制を有効にすると、オクルージョンのビジュアルクオリティを向上させることができ、特にARキャラクタが床に切り取られたり、空に消えたりするように見えます。
-
Lightship Occlusion Extensionでオクルージョンの質を向上させるの手順に従ってください。
-
ARSemanticSegmentationManager
を Main Camera に追加するGameObject
。- Hierarchyで、「XROrigin」を展開し、 Main Cameraを選択する。 そして、 Inspectorで、 Add Component をクリックし、
AR Semantic Segmentation Manager
を追加します。
- Hierarchyで、「XROrigin」を展開し、 Main Cameraを選択する。 そして、 Inspectorで、 Add Component をクリックし、
-
Inspectorで、 Lightship Occlusion Extension オプションメニューを開き、 Enable Occlusion Suppressionというラベルの付いたボックスをチェックします。 これで新しいオプションが表示される。
-
Main Camera
GameObject
を Hierarchy から Semantic Segmentation Manager Inspectorの フィールドにドラッグします。 -
Suppression Channels "のリストに、"Element 0 "には "
sky
"を、"Element 1 "には "ground
"を追加する。 -
これで完了です。 アプリケーションをテストするとき、地面や空に対応するピクセルが立方体を覆い隠さないようにします。 Semantics ページから他のセマンティック・チャンネルを使ってみて、何が起こるか見てみよう!
オクルージョン・スタビライゼーション(Occlusion Stabilization)の設定
オクルージョン安定化 瞬間深度バッファからの情報とワールドメッシュからレンダリングされた深度フィールドを組み合わせて、フレーム間のオクルージョンを安定させる。 これにより、シーンの静的な部分において、より高品質で一貫性のあるオクルージョンが得られる。
-
Lightship Occlusion Extensionでオクルージョンの質を向上させるの手順に従ってください。
-
シーンにメッシングを設定します:
-
Hierarchyで、
XROrigin
を選択し、空のGameObject
を 追加します。 名前は Meshing。 -
Meshingを選択し、 Inspectorで、 Add Component をクリックし、 ARMeshManager Component を追加します。
-
ARMeshManagerコンポーネントで、MeshPrefabを FusedMeshに設定します(
Packages/NianticLightshipARPlugin/Assets/Prefabsに
あります)。- このプレハブはレイヤーが "Mesh "に設定されている。 次のプロジェクトで、ここに別のプレハブを追加する場合は、新しいレイヤーにあることを確認してください。 新しいレイヤーを作成するには、インスペクタで **「レイヤー」**ドロップダウンを選択し、レイヤーを作成して固有の名前を付けます。 (すでに使用されていない名前であれば何でもよい)。
-
[Optional] メッシングの詳細設定を行うには、 LightshipMeshingExtension Component を Meshing
GameObject
に追加します。 -
[URP のみ】ユニバーサルレンダーパイプラインを使用する場合、 FusedMesh Material のシェーダーを
Lightship/FusedDepthChunkURP
に変更します。
-
-
オクルージョン安定化を有効にする:
-
Inspectorで、 Lighthsip Occlusion Extension オプションメニューを開き、 Enable Occlusion Stabilization というラベルの付いたボックスをチェックします。 これで新しいオプションが表示される。
-
Meshing
GameObject
を Hierarchy から Meshing Manager Inspector のフィールドにドラッグします。
-
詳細情報
詳しくは、オクルージョン機能のページをご覧ください。