夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UntiyURPの新機能Decalで水面コースティクスShaderを作る。 その② HoloLensのSpatialMeshで水中表現

本日はShader調査枠です。

昨日コースティックス(屈折)シェーダーを作成しました。

今回は実際にアプリケーション内で使用していきます。

〇HoloLensのSpatialMeshにコースティクスシェーダーを使用する

 今回はHoloLensのSpatialMeshにコースティクスシェーダーを使用していきます。

 SpatialMeshはHoloLensの空間認識(SpatialAwareness)機能によって認識された周囲の環境に合わせて作成されるメッシュを指します。

 この際に作成されるメッシュは特に意図がない限り体験の質に影響がないように透明なシェーダーが使用されます。

 今回は自分の周囲にコースティックス表現を行ってみます。

〇環境

・Unity2021.3.5f1(LTS)

・URP10.5.1

・MRTKv2.8

〇アプリ作成

Shader自体の中身は前回の記事を参考にしてください。

redhologerbera.hatenablog.com

①MRTKのシーン構成を行います。

MRTKの構成は過去の記事を参照ください。

redhologerbera.hatenablog.com

②URPの設定を開きRendererを開きます。

RendererDecalを追加します。

これはURPの機能Decalを使用するための設定です。

④hierarchyウィンドウにRendering→URP Decal Projectorを追加します。

⑤次にURP Decal ProjectorMaterialを先日作成したコースティクスシェーダーを指定します。

 これによってシーンに表示されているデカールの領域にオブジェクトがあるとコースティックスの表現が行われるようになります。

⑥からのゲームオブジェクトを作成し、Decal Projectorを子オブジェクトにします。

⑦作成した親のオブジェクトにMRTKで提供されるFollowコンポーネントをアタッチし、Face User Defined Target Transformにチェックを入れ有効化します。

またMin DistanceおよびMax Distanceを0に指定します。

これによって頭に対して常に追従し、かつ回転がかからないようになります。

Decal ProjectorのY座標方面の領域を下に広げます。

⑨SpatialMeshのマテリアルをURP/Unlitのマテリアルへ差し替えます。

DecalはAlpha値を持つマテリアルには使用することができません

このためHoloLensの実機上では真っ黒が描画されないという特性を使用して今回は真っ黒のマテリアルを用意しました。(キャプチャ時は描画されてしまいます。)

最後にビルドして実機で確認します。

youtu.be

実機でも動作を確認できました。Decalの範囲を申し越し広くしておけばよかったですが無事に動きました。