本日はHoloLensの表現実験枠です。
今回はHoloLens2でRayTracedReflectionを試していきます。
〇RayTracedReflectionとは?
RayTracedReflectionはレイトレーシングを使用した反射を指します。
Unityでは様々な反射表現を行うことはできますが簡単にまとめると次のようになります。
リフレクションプローブ | スクリーンスペースリフレクション | レイトレースドリフレクション | |
---|---|---|---|
負荷 | 低い | 中 | 高い |
リアルさ | それっぽくリアル | かなりリアル | かなりリアル |
説明 | あらかじめある座標における周辺光をキャプチャして周辺の反射マップとして使用する | カメラに映るオブジェクトによるリアルタイムな反射を行う | ひかりの筋を計算して精巧なリフレクションを実現する |
メリット | 軽量でスタンダード、URP、ビルドインすべてのUnityで使用可能 | リアルタイムな反射が可能 | リアルタイムで精巧な反射が可能 |
デメリット | 正確な反射とは言えず張りぼての反射感がある | カメラに写っていないオブジェクトの反射は考慮されない=オブジェクトに近づくほど映り込みが消える | ハイスペックPC必須 |
レイトレーシングは現在UnityHDRPかつDirect12のレイトレーシングに対応したPCでのみ実行可能です。
HoloLensでは当然ですがレイトレーシングのような高度なグラフィック処理は実行不可能です。
そこで今回はHolographicRemotingを使用して処理をPCに行わせることでレイトレーシングを行った描画結果のみを出力します。
〇UnityHDRPでのHolographicRemoting
UnityHDRPでHolographicRemotingを行う場合は以下の記事を参考にしてください
なおHDPRではMultiPassの設定を行っていない場合描画が行われないことがあります。
〇レイトレーシングの設定
レイトレーシングの設定およびRayTracedReflectionを使用するためには過去の記事を参考にしてください。
〇HoloLensでRayTracedReflectionを使用する
今回はHDRP環境下でSpatialMeshが機能するのかということとRayTracedReflectionが機能するかを検証するために行います。
MRTK3でのSpatiamMeshの設定はこちらをご覧ください
次のようなシーンを作成しました。 映り込み用のいくつかのキューブとリフレクションの結果を見るための反射球があります。
またVolumetricCloudで空を作成しています。
実行するとHDRP環境下でも正常にSpatialMeshを使用することを確認できました。
しかしながらSpatialMeshが張られてしまうとSkyBoxがオクルージョンされてしまうことが発生しいったんこちらは非表示にしています。
HoloLensでもRayTracedReflectionの動作が確認できました。
現状xRデバイスは多くありますが、ビデオシースルーではなく光学シースルーデバイスでPCMRを実現できるのはHoloLensくらいなのでHoloLensでレイトレーシングが使用できるとより表現の幅が広がりそうです。