本日はHoloLensの表現枠です。
UnityではShaderの機能が対応している場合[Emittion]を使用することができます。
この場合オブジェクト自身から発光するためライトの影響を受けなくなります。
しかし実際の発光現象では発光体だけではなく周囲の空気に反射し、柔らかく光を放ちます。この効果は[グロー効果]と呼ばれ、光の表現の中で重要な効果を持ちます。
グローに関しては以下の記事がわかりやすかったです。
今回はこの発光効果をHoloLensのオブジェクトで再現していきます。
〇環境
・Windows 11 PC(Windows10でも同様の手順ですが、画像などスクリーンショットがWindows11になっています。)
・HoloLens 2
・Unity2021.1.10f1
・UnivarsalRenderPipeline(以下URP)
・MixedRealityToolkit v2.7(以下MRTK)
〇HoloLensで発光オブジェクトを見る。
UnityでEmission(発光)を行うためには使用しているマテリアルのShaderが対応している必要があります。
新規でHoloLens用のシーンを作成し、Cubeを配置しました。
新規でマテリアルを作成します。URPを使用しているプロジェクトでは[Universal RenderPipeline /Lit]が適応されます。 今回はこのShaderを使用します。
[Cube]にマテリアルをアタッチします。 インスペクターウィンドウから[Emission]にチェックを入れ色を指定することで発光が実装されます。
ですが、冒頭で述べた通りグロー効果が反映されていないため光っているようには見えないです。
〇ポストプロセッシングを使う
ポストプロセッシングとはレンダリング後に行われる追加の描画処理です。一般的に負荷が大きいためスタンドアロンxRではパフォーマンスと引き換えになる場合があります。
空のゲームオブジェクトを作成し、[Postprocess]と名付けました。 インスペクターウィンドウから[Volume]コンポーネントを追加します。
[Volume]コンポーネントの[Profile]から[New]をクリックし、新規のポストプロセスプロファイルを作成し、[Bloom]を追加します。
[Bloom]の[Threshold]および[Intensity]にチェックを入れ有効化します。
これによってグロー効果が表れるようになります。
しかしこれはシーンウィンドウでのみで、実際にUnityエディタのゲームウィンドウではグロー効果が見られません。
これはポストプロセッシングを行うためにはカメラなどの設定も必要であるためです。
[MixedRealityPlayspace]の子オブジェクトにある[MainCamera]を選択し、インスペクターウィンドウから[Post Processing]にチェックを入れ有効化します。
これによってゲームウィンドウでもグロー効果が反映されます。
このグロー効果を見るためには[URP]のプロファイルから[HDR]のチェックを入れて有効化している必要があります。
実機で確認します。
実機でもグロー効果を確認できました。