Volumetric Cloudsを使ってみる

Volumetric Cloudsを使ってみる

公式マニュアル

https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@14.0/manual/Override-Volumetric-Clouds.html

Volumetric Cloudsとは

Volumetric CloudsはHDRPで使用できるVolume Component Overridesの一種。インタラクティブな雲を作成することができる。

Volume Scripting APIというruntimeから動かせるAPIもあるが、今回はUnity Editor上で操作していく。

HDRPがVolumetric Cloudsの生成、レンダリングで使用するもの

公式マニュアルのVolumetric Cloudsより抜粋

  • A cloud lookup table
    • 高度、密度、ライティングなどのプロパティの定義
  • A cloud volume
    • HDRPが雲を生成する領域
  • A cloud map
    • シーンを上から眺めた用にふるまう
    • クラウドボリュームのどの領域が雲を持っているか、どんな種類の雲を持っているか

HDRPの雲生成の2step

  1. Shaping
  • 大きなスケールのノイズを使用して一般的な雲の形を作る
  1. Erosion
  • 1のShaping ステージで作成した雲にディテールを加える。この際にHDRPは小さなスケールのノイズを使用する。

追加方法

  1. Volume Componentをアッタチしてあるゲームオブジェクトを選択
  2. InspectorからAdd Override > Sky > Volumetric Cloudsを選択
  3. 追加されたVolumetric Cloudsを開きState > Enableに変更すると有効化される.

img

プロパティ

State

Volumetric Cloudsをレンダリングするかどうか

  • Enabled - レンダリングを行う
  • Disabled - レンダリングを行わない

Local Clouds

  • Enabled - シーン上に雲が配置される。雲に触れることができる
  • Disabled - Skyboxの一部として雲が描かれる

参考画像

Enabled Disabled
enabled disabled

Cloud Control

Volumetric Cloudsのプロパティを操作するためのモードを設定する

  • Simple
  • Advanced
  • Manual

Shape Offset

large noise生成の際のオフセット (おそらくShaping時のことを指す?) 入力の定義域は定まっているため、例えば0, -1, 1のときは同じ結果になる

Earth Curvature

地平線と雲が交差する距離を定義する曲率

1にすると地平線と雲が交差しているのが分かる。またLocalCloudsがEnabledになっていると、地平線と雲が交差する点もinteractiveになってしまうので利用シーンに応じてLocal CloudsをDisabledにするなどしたほうが良さそう。

参考画像

0 1
enabled enabled

Local CloudsとEarth Curvatureを併用すると雲と地平線が交差してしまう enabled

Wind

風の速さを設定する。 公式マニュアルには幾つか記載されているが、Unity Editor上で操作できるのは以下の二つだけ。

  • Global Horizontal Wind Speed
  • Orientation

Global Horizontal Wind Speed

このパラメータは数値とモードを選択することができる。 モードは以下の4つ

  • Custom - Volumetric Cloudsにのみ適用されるwind speedを設定する
  • Global - Visual Environmentで定義されるWindのGlobal Speedを使用する
  • Additive - Visual Environmentで定義されるWindに値を加えて設定する
  • Multiple - Visual Environmentで定義されるWindに値を掛けて設定する

ここのVisual EnvironmentはVolumetric Cloudsと同じくVolume ComponentにアタッチできるVolume Overridesの一つ。

Orientation

風の流れる向きを指定する。度数法を使用する。 こちらもWind Speedと同じくVisual Environmentsの値を使用して設定することができる。

Ambient Light Probe Dimmer

cloud volumeのライトプローブの調節をする。 値を小さくすると、雲全体が暗くなる。

gif

Sun Light Dimmer

cloud volume上の太陽光の調節をする。 値を小さくすると太陽光を抑えるため、全体的に暗くなる。

gif

Scattering Tint

雲の色を調節する。

gif

Shadows

雲の影をレンダリングするかどうか

Shadow Resolution

Volumetic Cloudsのシャドーマップの解像度を設定する

Shadow Plane Height Offset

地面の高さを設定する。雲の影をレンダリングする際に使用する。出来るだけ物理的に正確な影の落とし方を再現するならシーンジオメトリの地面の高さの平均を設定する。

Temporal Accumulation Factor

雲のノイズを減らす設定。遠くの雲だと小さなノイズが集まるため、ノイズのように見えてしまう。そこでノイズを一時的に累積することでノイズっぽさをなくすという機能。(だと思われる)

Local Cloudsを切って遠くまで見える状態で値を動かすと地平線の雲のノイズの変化が分かりやすい。ただし値をあげすぎるとghostingという現象が起きるらしい。これに関しては良く分からない。恐らく雲の後ろにゲームオブジェクトを置いた場合、ノイズ除去によって不自然に見えるということではないかと推測している。

Ghosting Reduction

Ghostingを除去する。ただチラつきが起きる可能性があるので、起きた場合はTemporal Accumulation Factorの値を小さくすると良いらしい。

Perceptual Blending

不明。マニュアルにも記載されていない。名前から推測するに雲と別のオブジェクトの色が混じるときの設定だと思われる。

Num Primary Steps

雲の透過を計算する回数。恐らく多いほど綺麗に透過した雲を表現できる。

Num Light Steps

雲のライティングを計算する回数。回数が多いほど指数関数的に光源からの明かりを受ける。