Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Weather Maker で雪を積もらせる【Unity】

これはUnityアセット冬のアドベントカレンダー 2019 Winter!7日目の記事です。

f:id:Raspberly:20191203175459p:plain

昨日は和辛子びびびさんの「【Unityアセット】GameCreatorで4足歩行の動物を動かしたい」でした。

 

 

 

今回はアセットの紹介をしていきます。
紹介するのはWeather Maker - Unity Weather System, Sky, Water, Volumetric Clouds and Light*1です。
天気など自然環境を構築できるアセットです。

f:id:Raspberly:20191206113459p:plain

 

 

 

 

 

前回から

前回のUnity アセット真夏のアドベントカレンダー 2019 Summer!の記事では、
基本的な概要とセットアップ、天気のコントロールをメインでやりました。
↓初めてWeather Makerを触る方はこちらからどうぞ。

raspberly.hateblo.jp

 

今回は冬ということで、地面や建築物に雪を積もらせるスノーオーバーレイをやってみます。

f:id:Raspberly:20191206031404g:plain

 

 

 

 

 

 

 

 

0.開発環境 

Unity2019.3.0f

Weather Maker var5.9.4

Weather Makerはアップデート頻度が非常に多いアセットです。
使用するバージョンによって、やり方やUIが異なる場合があります。

 

 

 

 

 

1.初期セットアップ

基本的な初期セットアップは前回の記事を見てください。

シーンの用意

新しくシーンを作ります。
今回はせっかくなので、こちらのアセットを導入します。

非常に高品質な寺院の無料アセットです。その分描画負荷が高いですが。

www.asset-sale.net

f:id:Raspberly:20191203232508p:plain

こちらにあるDemoSceneを使います。
Sun_Temple\Scenes\DemoScene.unityを開きます。

 

 

シーンにWeather Makerプレハブを配置

UnityEditorのWindow/Weather Maker/Add Weather Maker to SceneWeatherMakerPrefabを配置します。

f:id:Raspberly:20191206235550p:plain

 

 

DirectionalLightの削除

シーンに最初から含まれているライトは削除しておきましょう。
太陽にすでにライトがあります。

 

LightingSettings

Window/Rendering/LightSetting/EnvironmentのSkybox MaterialとSun Sourceを変更します。

SkyboxにはWeatherMakerに含まれているSkybox用のマテリアルWeatherMakerSkyBoxMaterialを、
SunSourceにはシーン内に配置したWeatherMakerPrefab内にあるSunを追加する。

 

Environment LightingをGradientColorに変更
Environment ReflectionsをCustomに変更

f:id:Raspberly:20191207000407p:plain

 

 

MainCameraの編集

Cameraパラメータの設定

・Clear FlagをSolidColor
・Backgroundを全て0(真っ黒)
・Far Planesを2000以上
・Rendering PathをDeferred
・Allow MSAAを無効化

f:id:Raspberly:20191207000231p:plain

Rendering PathはDeferredにした方がよりよく見えるようになるそうです。

Tagの設定

シーン内のMainCameraのTagがMainCameraになっていることを確認しましょう。
通常はデフォルトで大丈夫のはず。

f:id:Raspberly:20190802151515p:plain

 

PostProcessingの設定

必須ではありませんが、見栄えがよくなるため設定しておきます。
PackageManagerからインストールしておきましょう。

Window/Weather Maker/Setup Post Processingで、シーン内にあるカメラにPost Processing Stackが自動で設定されます。

f:id:Raspberly:20191206235846p:plain



 

 

 

 

 

2.実際にオーバーレイしてみる

それでは雪を積もらせてみます。

設定するのはこちら、WeatherMakerPrefab/FullScreenEffects/Snowです。

f:id:Raspberly:20191204191505p:plain

Watherの時と同じように、実際に触るのはプロファイルとなります。

f:id:Raspberly:20191204191839p:plain

 

 

プロファイルのインスペクター

f:id:Raspberly:20191204193348p:plain

 

 

 

 

雪をオーバーレイ

雪を地表のテクスチャの上にオーバーレイ(上書き)します。


パラメータはOverlay Intensityです。これはオーバーレイの強度を表します。
値が高ければ高いほど雪が積もるイメージです。

f:id:Raspberly:20191204232709g:plain

最大値の1まで上げると真っ白ですが、0.5くらいだと良い感じになります。

 

 

 

雪がオーバーレイされる範囲を調整する

パラメータはOverlay Normal Reducerです。これは雪の粘着性です。

y法線が1から遠ざかるときのオーバーレイオーバーレイの強度。値が小さいと、y値が小さい法線でオーバーレイがより多く表示されます

つまり負の値になるほど、斜面に関係なく雪がつくようになります。

f:id:Raspberly:20191205021130g:plain

この値を調整することで、屋根や地面など水平な箇所には雪が積もり、
壁など斜面がある箇所は積もらないといったことができます。

f:id:Raspberly:20191204221444p:plain

 

 

 

天気が雪の時に自動でオーバーレイする

手動で調整するのではなく、天気が雪の時に自動でオーバーレイされるようにします。
パラメータはAuto Intensity Multiplierです。
この値が正の値になるほど、早くオーバーレイされます。

f:id:Raspberly:20191204233102g:plain

注意点として、この値が0以外の時、Overlay Intensityを手動で設定できなくなります。

雪の降らし方は前回を見てね。

 

 

 

天気が晴れた時に自動でオーバーレイを解除する

パラメータはAuto Intensity Multiplierです。
これが負の値になるほど、早くオーバーレイが解除されます。
ちなみにこれ、どういうわけなのか雪が降っててもオーバーレイが解除されます。

f:id:Raspberly:20191204233243g:plain

 

 

 

オーバーレイが解除される時、最低値を設定する

手動にしろ自動にしろ、オーバーレイの最低値を設定します。
パラメータはOverlay Minimum Intensityです。
これはオーバーレイの最小強度で、オーバーレイは他の要因に関係なくこの値を下回ることはありません。

f:id:Raspberly:20191204233801p:plain


Overlay Intensityのパラメータは一応Overlay Minimum Intensityより小さくはなりますが、
雪が止んでも積もったままの状態にすることができます。
↓の例の場合、Overlay Intensityが0.4以下にはならない。

f:id:Raspberly:20191204233353g:plain

 

 

雪の色味や反射色を変える

Colorから色を変えることができます。
また太陽からの反射光も調整できます。

f:id:Raspberly:20191205011414g:plain

 

 

 

ノイズマスクを使いまばらにオーバーレイさせる

今までは地表全体に均等にオーバーレイしていましたが、
ノイズマスクを使うことで、まばらに雪が積もるような演出をすることができます。

f:id:Raspberly:20191205010638p:plain

ノイズ用のテクスチャは初めからいくつか用意されています。

f:id:Raspberly:20191205010743p:plain

こちらのノイズマスクはオフセットのUVスクロールやスケール変更も可能です。

 

注目すべきパラメータは複数あります。

Overlay Noise Multiplierはオーバーレイノイズの乗数を表し、
Overlay Noise Power
はノイズパワーを表します。

 

下の例を見ると、

Multiplierはノイズの強さで高ければ全体を覆うほどノイズが大きくなり、
Powerはノイズの濃さで高ければノイズとそれ以外がくっきり描画されます。

f:id:Raspberly:20191205223045g:plain



オフセットや移動させたい場合の速度も設定できます。

f:id:Raspberly:20191205223125g:plain

 

 

 

 

特定の高さ以上のみオーバーレイさせる

オーバーレイの最小の高さを設定することができます。

パラメータは複数あります。
Overlay Min Heightはオーバーレイを表示する最小の高さを設定します。

f:id:Raspberly:20191206234403g:plain

Overlay Min Height Noise Multiplierは、オーバーレイノイズ乗数。
値が高いとオーバーレイの境界がくっきりとなります。
逆に低いと境界が荒くなります。

f:id:Raspberly:20191206234448g:plain


Overlay Min Height Falloff Powerでも同じようなことができます、
どういう使い分けをすればいいのかはよくわかりませんでした。

f:id:Raspberly:20191205021207g:plain

 

 

 

 

 

 

 

まとめ

・Weather Makerのスノーオーバーレイを使えば、簡単に雪を積もらせることができる。
・積もらせ方にノイズをつけたり、一部分だけつけたりと応用ができる。

 

Weather Makerをお持ちで雪の降るステージなどを作りたい方はぜひお試しください。
今回紹介したスノーオーバーレイとは別に、地面の濡れを表すオーバーレイもあります。

 

 

 

参考文献

www.youtube.com

 

その他のチュートリアルビデオ
--------------------------------------------------
最新のWeather Makerビデオ...

-Open Weather Map APIhttps://youtu.be/7_r7oibCM68
-uMMORPG / Mirrorチュートリアルhttps://youtu.be/BIFQqmG2Gws
-体積雲:
	-美しい空のセットアップ:https://youtu.be/1Xk2z858T1U
	-完全な概要(40分以上):https://youtu.be/ZoULn0mYbt8
	-レイマーチの最適化:https://youtu.be/Dwk4vF_6ogs
	-クラウドノイズエディター:https://youtu.be/NxuJ5H2mZwY
	-オーロラ/オーロラ:https://youtu.be/J9QSebVLEO8
-時間的再投影:https://youtu.be/JCzE7JfFPU8
-パフォーマンスプロファイル:https://youtu.be/-Yoj_OjJL4g
-完全なセットアップガイド:https://youtu.be/DHNnS6f85rM
-クイックスタートガイド:https://youtu.be/5IACGZULiDw
-新しいプレハブの概要:https://youtu.be/hWJF5v0s4gc
-天気ゾーン:https://youtu.be/11QoMD_qhHw
-ヌルゾーン:https://youtu.be/ZPBum2YcgB8

 

 

 

明日のアドベントカレンダーVR発掘隊さんによる
とても簡単にUIシステムを作れるアセット Doozy UIの解説 」です。
乞うご期待。

 

 

 

 他間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

*1:名前が長いので記事内では「Weather Maker」と表記します