Table of Contents

Unityでeasyar megaを使用したオクルージョンの実現

オクルージョン(occlusion)はARの没入感を高めるための重要な技術です。本稿ではUnityでeasyar megaを使用してオクルージョンを実現する方法を説明します。

開始前に

オクルージョンの実装方法

  • オフラインモデリング:Block座標系で現実世界の構造物(壁、柱、大型設備など)に完全一致するジオメトリを作成する。またはBlock高密度モデルをトリミング・ポリゴン削減して最適化したモデルを使用する。

  • ランタイム位置合わせ:クラウドローカライゼーションによりBlock座標系と現実空間を位置合わせし、対応するジオメトリをロードする。

  • マテリアル適用:これらのジオメトリに特殊なオクルージョンマテリアルを割り当てる。

  • 視覚効果:GPUが他の仮想オブジェクトをレンダリングする際、深度テストに失敗したピクセルは自動的に除外され、仮想オブジェクトが現実物理空間のオクルージョンロジックに従うようになる。

ジオメトリをオクルージョンとして使用する方法

以下の手順でシーンにオクルージョン用ジオメトリを追加し効果を検証できます。

オクルージョンジオメトリの配置

mega blockの高密度モデルを基に、組み込みジオメトリまたは自作ジオメトリをBlock座標系の正しい位置に配置します。 オクルージョンジオメトリの配置

[オプション]パノラマ画像に基づく位置微調整

パノラマ画像による微調整

オクルージョンマテリアルの適用

ジオメトリのマテリアルをオクルージョン用に変更します。Unity標準のSpatialMappingOcculusionが使用可能です。 オクルージョンマテリアルの適用

eifデータでのシミュレーションまたは実機実行

実行結果に基づきオクルージョンモデルの配置を微調整できます。

トリミング・ポリゴン削減した高密度モデルをオクルージョンとして使用する方法

以下の手順でエクスポートしたmega block高密度モデルをトリミング・ポリゴン削減し、オクルージョン用白モデルとしてシーンにインポートします。

mega blocksでのエクスポート

inspectorパネルのmega blocksツールでエクスポートを選択

エクスポート選択

エクスポートオプションの変更

エクスポート時にオプションを変更します。

エクスポートオプション

図中1はLODレベル。レベルが低いほどモデルは簡素化されポリゴン数が減少します。最高精度が必要な場合は2、精度低下を許容してポリゴン数を減らす場合は1または0を選択します。

図中2はテクスチャエクスポートオプション。オクルージョン用白モデルにはテクスチャが不要です。

モデルのトリミングとポリゴン削減

エクスポートしたモデルをblenderなどのデジタルコンテンツ作成ソフトでトリミング・ポリゴン削減し、glb形式で保存します。

ヒント

例ではblenderのdecimate modifierを使用しています。

トリミング前

トリミング・ポリゴン削減後:

トリミング後

オクルージョンモデルのunityへのインポートとblockノードへの配置

オクルージョンモデルのインポート

transformの変更

モデルのtransformを変更し、positionrotationをすべて0に設定します。

オクルージョン用白モデルは高密度モデルと一致するはずです。これはデジタルコンテンツ作成ソフトでの操作がblock座標系定義を変更していないためです。

モデルの一致

オクルージョンマテリアルの適用

モデルマテリアルをオクルージョン用に変更します。Unity標準のSpatialMappingOcculusionが使用可能です。

マテリアル変更

eifデータでのシミュレーションまたは実機実行

eifデータを使用したシミュレーションまたは実機実行で効果を確認します。

オクルージョンの効果予測

オクルージョンの効果は以下に影響されます:

  • ローカライゼーション自体の精度
  • モデル配置の正確さ
  • モデル自体の精度(単純なジオメトリでない場合)

ローカライゼーションのドリフト時に数センチのずれが発生するのは正常です。

オクルージョン用モデルのポリゴン数が多いとパフォーマンスに影響するため、必要な領域のみで使用し、可能な限り単純なジオメトリを使用することを推奨します。

関連トピック