現実世界のオクルージョンを設定する
Lightshipオクルージョンは、ARアプリケーションに奥行きを作り出し、ゲームオブジェクトを現実世界のオブジェクトの前や後ろにレンダリングします。 ARDK 3.0では、LightshipはAR Foundation Occlusion Managerとシームレスに統合され、ARKitやARCoreでは利用できないオクルージョンオプションが可能になりました。
前提条件
ARDKがインストールされたUnityプロジェクトと、セットアップされた基本的なARシーンが必要です。 詳細については、ARDK 3のインストールと 基本的なARシーンの設定を参照してください。
オクルージョンを設定する
Lightshipのオクルージョンを設定するには、以下の手順を行います。
AROcclusionManager
を メインカメラに追加します。GameObject
:- Hierarchyで、
XROrigin
と Camera Offsetを展開し、 Main Camera オブジェクトを選択します。 次に、 Inspectorで、 Add Component をクリックし、AROcclusionManager
を追加します。
- Hierarchyで、
- カメラの子オブジェクトとしてキューブを追加し、その位置や回転、スケールを設定します。
- 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
に機能を追加し、オクルージョンのビジュアルクオリティを向上させることができます。
拡張機能を追加してその機能をテストするには、以下の手順を行います。
-
LightshipOcclusionExtension
をメインカメラGameObject
に追加します。- Hierarchy で、
XROrigin
を展開し、 Main Camera を選択します。 次に、 インスペクタ で、 コンポーネントの追加 をクリックし、ライトシップオクルージョンエクステンション
を追加します。
- Hierarchy で、
-
URP(ユニバーサルレンダーパイプライン)を使用している場合は、URPレンダラーに
Lightship Occlusion Extension Feature
を追加します。- まず、 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と、その機能の詳細については、 オクルージョン機能のページ をご覧ください。
オクルージョン抑制の設定
オクルージョン抑制は、指定された意味情報を含むピクセルが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 コンポーネントを追加します。
-
ARMeshManager コンポーネントで、 MeshPrefab を FusedMesh(
Packages/NianticLightshipARPlugin/Assets/Prefabs
にあります)に設定します。- このプレハブには「Mesh」というレイヤーが設定されています。 次のプロジェクトで別のプレハブをここで追加する場合は、そのプレハブが新しいレイヤーに設定されていることを確認してください。 新しいレイヤーを作成するには、 Inspector で Layer ドロップダウンを選択し、レイヤーを作成して、固有の名前を付けます。 (名前は、既存のものと重複しない限り、何でもかまいません。)
- [URP のみ] ユニバーサルレンダーパイプラインを使用している場合、ARMeshManager に割り当てる前にプレハブを直接 Unity プロジェクトに追加する必要があります。 Projectウィンドウで、Packagesまでスクロールダウンし、Niantic Lightship AR Pluginを開きます。 AssetsサブフォルダでPrefabs を選択し、FusedMeshプレハブをプロジェクトのAssetsフォルダにドラッグ&ドロップします。 そうしたら、MeshPrefabを FusedMeshに設定します。
-
[Optional] メッシングの詳細設定を行うには、 LightshipMeshingExtension Component を Meshing
GameObject
に追加します。
FusedMeshマテリアルのシェーダーを
Lightship/FusedDepthChunkURP
に変更します。 -
-
オクルージョン安定化を有効にする:
-
Inspector(インスペクタ)」で**「Lightship Occlusion Extension(ライトシップオクルージョン拡張)」**オプション メニューを開き、「Enable Occlusion Stabilization(オクルージョン安定化を有効にする)」と書かれたボックスをチェックします。 これで新しいオプションが表示される。
-
Meshing
GameObject
を Hierarchy から Meshing Manager Inspector のフィールドにドラッグします。
-
詳細情報
詳しくは、 オクルージョン機能に関するページ をご覧ください。