1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity6でAdaptive Probe Volumesを使ってみる

Last updated at Posted at 2024-11-26

Unity6で使用できる新しいライトプローブ関連機能である「Adaptive Probe Volumes」を使ってみたので、導入とちょっとしたメモなどを軽くまとめてみました!
※ライティング初心者なので、間違っていたことを書いていたらご一報ください...!

image.png

挙動を確認した環境
Unity 6000.0.26f1

Adaptive Probe Volumesとは?

そもそもライトプローブって?
空間上の光の情報を一定間隔の情報にして、あらかじめ保持(ベイク)しておく機能です。
この情報を使って、わざわざランタイムで複雑な光を計算しなくても綺麗な環境光が再現できます。

公式:https://docs.unity3d.com/ja/2023.2/Manual/LightProbes.html
(こちらは旧ライトプローブの解説ですが、参考になります)

Adaptive Probe Volumesは従来のライトプローブを扱いやすく、さらに高機能にしたライティング関連機能です。

今までのライトプローブは手動で配置するのが煩雑だったり、精度を高く間接光を取得できないなどの問題がありました。

これを手軽に、精度高く実現できる機能です!
公式の解説なども参考にしてみてください。

(youtube)Unityの新しいライティング機能 Adaptive Probe Volumes

Adaptive Probe Volumesを導入してみる

その前に、自分が試した環境と状況を書いておきます。
よりAdaptive Probe Volumesの効果がわかるように、リアルタイムライトなし(Directional LightのModeをBaked)、影はライトマップに焼き込みます。

  • Unity 6000.0.26.f1
  • Render Pipeline: URP
  • Platform: Android
  • Directional Light
    • Mode: Baked
  • Lighting Settings
    • Lighting Mode: Subtractive
  • 環境オブジェクトはライトマップを適用

Adaptive Probe Volumesの有効化

Adaptive Probe Volumesを有効にするには、Universal Render Pipeline Asset(URPの設定)を編集する必要があります。

Lighting -> 「Light Probe System」をAdaptive Probe Volumesに切り替えましょう。

image.png

オブジェクトの配置

次に、オブジェクトを配置しましょう。
これはお好みで...

今回はライトマップも焼こうと思うので、オブジェクトはstaticにしてMesh RenderのReceive Global IlluminationLightmapsに設定しました。

ライトプローブの影響を受けるオブジェクトとして、Capsuleを追加しました。
このオブジェクトはデフォルトのLitシェーダがMesh Rendererに指定されています。

スクリーンショット 2024-11-25 21.16.52.png

最後に重要なAdaptive Probe Volumeコンポーネントを持つGameObjectを追加します。

ヒエラルキーでCreate -> Light -> Adaptive Probe Volume で追加できます。

image.png

ModeをSceneにしましょう。
Sceneにするとそのシーンに配置されているMeshの範囲に応じて有効範囲を定めてくれます。
範囲を手動で絞りたい場合はLocalで編集すると良さそうです。

この時点でAdaptive Probe Volumeに警告が出ているかもしれませんが、次の工程を踏めば消えるはず...です。

Probe Volumesのベイク

次に、Window -> Renderering -> Lighting でライティング設定を表示しましょう。
今回は以下の設定のようにして...Generate Lightingボタンを押しましょう!

(補足1:Lighting Modeは目的に応じて設定してください。今回はSubtractiveにしてあります。)
(補足2:上記以外はデフォルトのままになっています。)

image.png

少し待つとベイクが完了します。
ウィンドウの右下あたりに進捗が出ていますね(macで確認)。

ベイクできてるかどうか確認

ベイクが終わると、今回はライトマップも焼いているので見た目が綺麗になります。
...が、コレだけだと本当にライトプローブもベイクされているのかわからないので、便利なデバッグ機能を使いましょう。

Window -> Analysis -> Rendering Debugger からツールを開きます。

そして、Probe VolumesタブのDisplay Probesをチェックして有効化しましょう。

スクリーンショット 2024-11-25 21.23.28.png

そうすると玉がたくさん表示されるはずです。
このような表示になれば、ライトプローブは正しくベイクできております。

スクリーンショット 2024-11-25 21.24.48.png

ライトプローブの挙動確認

動的オブジェクトのCapsuleくんを動かして、挙動を確認してみましょう。

apv_preview-ezgif.com-video-to-gif-converter.gif

ちょっとわかりづらいですが...影の中に入ると色が変わっていますね!

Android環境での注意事項

実際に自身の既存プロジェクトで遭遇したのですが、ライトプローブをベイクしようとすると下記のエラーが発生しました。

スクリーンショット 2024-11-25 18.50.10.png

こちらは、Player SettingsのGraphics APIにVulkanを追加すれば解消されました!

スクリーンショット 2024-11-25 18.52.41.png

おまけ

自身の既存プロジェクトではUnity Toon Shader(現時点の最新版は0.10.2)で使用しようとしたのですが、うまくいきませんでした...

微細な影響はみられたのですが、実用の範囲内ではなく...

正し、従来のライトプローブなら問題なく動作していたので、対応待ち...ということになりそうです。

まとめ

準備が整えば、あとはコンポーネントからのベイクからも行けそうです。
ベイク時間もそんなにかからず、神機能ですね!

略してAPV...この機能が発表された時から心待ちにしていた機能なんですが、なるほどシェーダー側での対応も必要っぽいですね...
Unity Toon Shaderの対応を心待ちにしております... :wink:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?