これはUnity アセット真夏のアドベントカレンダー 2019 Summer!の22日目の記事です。
今回はアセットの紹介をしていきます。
紹介するのはWeather Maker - Unity Weather System, Sky, Water, Volumetric Clouds and Light*1です。
天気など自然環境を構築できるアセットです。
こちらは去年の8月にありました、「アセットストアの購入金額に応じてアセットが無料でもらえるイベント」でいただいたものです。今まで積んでいた。
アセットストアで50ドル以上のお買い物をすると本アセットが無料で入手できました。
☀☂☁⚡☃⛅⛈☀☂☁⚡☃⛅⛈☀☂☁⚡☃⛅⛈
WeatherMakerはとても機能が多いため、今回は天気の操作をメインで取り上げます。
☀☂☁⚡☃⛅⛈☀☂☁⚡☃⛅⛈☀☂☁⚡☃⛅⛈
開発環境
Unity2018.4
Weather Maker var5.8.2
Weather Makerはアップデート頻度が非常に多いアセットです。
使用するバージョンによって、やり方やUIが異なる場合があります。
必要条件
--------------------------------------------------
-Weather MakerにはUnity 2017.4以降が必要です。
-Weather Makerにはテクスチャ配列のサポートが必要です。
-Weather Makerは、gles 2.0、WebGL、DirectX 9.0以前ではサポートされていません。Unityのバグが原因でWebGLのサポートが壊れています。私は彼らと協力して修正を支援しています。
-iOS / MACでは、OpenGLレンダリングを使用します。Metalには、3Dテクスチャルックアップなどの機能が壊れています。
.NET設定
Unity2019.1以降の場合、PlayerSettingsで.NET4.5または.NET standard 2.0を有効にします。
Rain Makerの削除
もしプロジェクト内に
Rain Maker(同パブリッシャーの類似アセット)がインポートされている場合は削除します。
ColorSpaceをLinerに
PlayerSettings->OtherSetting->ColorSpaceをLinerにします。
ガンマよりも見た目がよくなるそうです。
サンプルシーンの確認
アセットをインポートしたら、サンプルシーンを見てみましょう。豊富にそろえてあります。
UIがものすごくちっちゃいことに気をつけましょう。
画面サイズによっては潰れてしまってしまうこともあります。
こちらでは、実際に天気を変化させたり、昼夜を切り替えることができます。
初期セットアップ
まずは初期設定から、簡単に紹介します。
詳しくは付属のReadme.txtを見てください。
シーンの作成
デモシーンをそのままいじってもいいですが、今回は新しくシーンを作ります。
この時、他に何もオブジェクトがない状態だと少し寂しいので環境を整えましょう。
Assets/WeatherMaker/Demo/DemoResourcesにあるSimpleTerrainをシーン内に加えます。
これはWeatherMakerのデモ用として用意されたTerrainです。
もちろん自分で用意した環境や、アセットを使っても問題ありません。
シーンにプレハブを配置(重要)
UnityEditorのWindow->Weather Maker -> Add Weather Maker to SceneでWeatherMakerPrefabを配置します。
ちなみに、MainCameraのProjectionがOrthographic(2D)になってる場合は
自動的に2D用のWeatherMakerPrefabが配置されます。
手動で配置したい場合は、Assets/WeatherMaker/Prefab/WeatherMakerPrefabを配置します。
2Dの場合はWeatherMakerPrefab2Dを。
このWeatherMakerPrefabこそ、このアセットをコアであり簡単に空や天気をコントロールできるプレハブです。
パーティクルやサウンドなど必要なものはすでにセットアップされています。
後はこいつを使うだけです。
また。各種天気の状態やデータはProfile(ScriptableObjectみたいなやつ)で管理されています。(後述)
このプレハブは、それらProfileを参照したりパラメータを変更する機能がありますが、
このProfileは直接編集もできまし、自分好みのProfileを新しく作成することもできます。
右クリックからCreate/WeatherMakerで作成できます。
今すぐ使うわけではありませんが、Profileがあることを知っておきましょう。
DirectionalLightの削除
シーンに最初から含まれているライトは削除しておきましょう。
太陽にすでにライトがあります。
LightingSettings
Window/Rendering/LightSetting/EnvironmentのSkybox MaterialとSun Sourceを変更します。
SkyboxにはWeatherMakerに含まれているSkybox用のマテリアルWeatherMakerSkyBoxMaterialを、
SunSourceにはシーン内に配置したWeatherMakerPrefab内にあるSunを追加する。
Environment LightingをGradientかColorに変更
Environment ReflectionsをCustomに変更
MainCameraの編集
Cameraパラメータの設定
Clear FlagをSolidColor
Backgroundを全て0(真っ黒)
Far Planesを2000以上
Rendering PathをDeferred
Allow MSAAを無効化
Rendering PathはDeferredにした方がよりよく見えるようになるそうです。
Tagの設定
シーン内のMainCameraのTagがMainCameraになっていることを確認しましょう。
通常はデフォルトで大丈夫のはず。
PostProcessingの設定
必須ではありませんが、見栄えがよくなるため設定しておきます。
PackageManagerからインストールしておきましょう。
実はWeather MakerにはPostProcessingを簡単に自動設定する機能が用意されています。
Window/Weather Maker/Setup Post Processingで、シーン内にあるカメラにPost Processing Stackが自動で設定されます。
ProfileはWeatherMaker側でいい感じに作成してくれたものです。
ワンクリックですべて設定してくれるのはとても便利。
実際に動かしてみよう
WeatherMakerPrefabの中にはいろいろ入っています
この中の内、
・WeatherMakerPrefab
・AudioManager
・DayNightCycle
・LightManager
の4つは必ず有効化していなければいけません。
他のPrefabで、使わないものであれば無効化することができますが、Prefabの削除はしないようにしましょう。
一日のサイクルを作る
日が沈んでまた昇る、そんなサイクルを作ることができます。
DayNightCycleにアタッチされているWeatherMakerDayNightCycleManagerのプロファイルを見てみましょう。
Time Of Dayがシーン内での時間になります。
ここの値を変えることで昼夜の変えることができます。
月は必要でないのなら無効化することができますが、太陽を無効化してはいけません。
サイクルを停止したい場合はSpeedを0に設定すれば時間が経過しなくなります。
ちなみに光に指向性を持たせたり、緯度・経度・惑星軸まで調節できます。
夕日の色を変えたりなど、こだわりたい方はとことんこだわれる。
雲を作る
雲を作ってみましょう。
雲の状態はいくつかプリセットがあります。これを選ぶだけで簡単に状態をセットできます。
雲はもちろんリアルタイムで変化します。
天気の操作
それでは実際に雨を降らせたり晴れさせたりしていきましょう。
WeatherMakerPrefabにあるPrecipitationが雨や雪を管理するオブジェクトです。
インスペクターを見てみましょう。
Precipitationが天気を設定する項目です。
Rain(雨)、Snow(雪)、Sleet(みぞれ)、Hail(雹)、Customと別れています。
Noneにすると晴れます。
Precipitation Intensityが天気の強度です。0~1まで設定でき、1が一番強い状態です。
Precipitation Change Durationは天気の推移を行う時間です。
Precipitation Change Delayは天気が変わる際に遅延させる時間です。
Precipitation Change Threadは天気が変わるしきい値です。
雨を降らす
WeatherMakerPrecipitationManagerのPrecipitationでRainを設定します。
この時、Precipitation Intensityが0だと天気が発生しないことに注意しましょう。
最大の強さで発生させたいのなら1にすべきです。
以下が雨を降らせている場面です。
非常にわかりづらいですがポツポツ降っているのが見えると思います。
デモでは以下のように確認できます
デモと比べると実際に降らせた時は雨が非常に弱く見えます。
ここを少し変えてみましょう。
雨をカスタマイズする
雨はパーティクルシステムでできています。
これはPrecipitation/Rainの子オブジェクトに配置されています。
パーティクルを直接編集してもいいですが、
親であるRainに便利なコンポーネントがアタッチされているのでそちらを使います。
画面に収まらないくらいのパラメータ数!実際は下にさらに続きます。
それぞれツールチップでパラメータの役割が表示されています。
雨を強くしたいので、適当に以下の値を最大値まで上げてみます。
先ほどと比べるとだいぶ雨っぽくなりました。ミストもいい味出しています。
できればもっと土砂降り感も出してみたいところ。
雪を降らせる
雪を降らせるのは雨同様とても簡単です。
PrecipitationをSnowに設定するだけ。
雨同様、カスタマイズも可能です。
晴れさせる
雨が降ったので次は晴れにしてみます。今から晴れるよ。
Precipitation Intensityを0、またはPrecipitationをNoneにします。
雲がある場合は、上記の通りNoneに設定すると完全に晴れます。
まだまだ紹介しきれない機能
ウェザーゾーンなどもまとめようと思ったのですが、かなり大変そうだったので概要だけ紹介します。
ウェザーゾーン
特定の範囲内に入った時あらかじめ設定しておいた天気にランダムで変化させるシステムです。
ヌルゾーン
雨や霧などをレンダリングしたくない時に使う領域です。
これにより、洞窟や屋内では天気の影響を受けません。
ボリューメトリッククラウド&フォグ&ライト
立体感のある雲や霧、光を出すことができます。
オーロラ/ライトニング
オーロラや稲妻を出すことができます
水
海を作り出すことはもちろん、水中に入った時の表現もできます。
Weather APIとの連携
現実世界の天気と連動させることができます。
まとめ
Weather Makerを使えば簡単に天気や空を作成することができます。
プレハブを配置して、パラメータを変えるだけ!
また冒頭の通り、このアセットは非常に多くの機能を持っています。
ほとんどの自然環境を再現できる上にかなり細かいカスタマイズができます。
更新頻度も短く、頻繁にバージョンアップもされています。
今回で全て解説するのは困難でしたので、HUD Navigation Systemと同様複数回に分けて解説記事を投稿する予定です。
雪のオーバーレイに関する記事を追加しました。
参考文献
https://demo.digitalruby.com/WeatherMaker/Readme.txt
チュートリアルビデオ -------------------------------------------------- 最新のWeather Makerビデオ... -Open Weather Map API:https://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
類似アセット
アセットストアには天気にまつわるアセットがたくさんあります。
Enviroは頻繁にセールも行われているアセットですし、UniStormはかなり昔からある人気アセットです。
是非お気に入りの天気アセットを見つけてみてください。
余談
ウェザーには「天気」「天候」「気象」などいろいろ意味がありますがこれらは何が違うのでしょうか?
実は以下のように分けられます。
・気象
大気の状態・変化を物理現象として捉えた言葉
・天気
数時間から数日間の気象状態
・天候
1週間から1ヶ月程度の気象状態
・気候
1ヶ月以上の長期的な気象状態
天気、天候、気象は表す期間によって名前が異なります。
天気や天候など短期間の状態をひっくるめて気象というそうです。
他間違っている箇所がありましたらコメントにお願いします。
*1:名前が長いので記事内では「Weather Maker」と表記します