広告 エフェクト関連テク

雨を降らせる【簡易版】

Unreal Engine(UE)で雨を降らせてみよう!

「リアリティのある雨を降らせたいな!」
「既存の天気系アセットだと水滴の色などの独自カスタマイズが難しいな…」
と思ったことはありませんか?

今回はナイアガラエフェクトを使って雨を自作する方法を伝授します。

注意

こちらは描画負荷が低い簡易版で、ロークオリティのゲーム・ムービー向けです。
もう少しリアリティの高い(代わりにより設定が複雑で描画負荷も高い)版を今後掲載予定です。

降雨モデル
完成イメージ

動作環境

当記事の動作環境は以下の通りです。
バージョンや環境によっては、正常に動作しない可能性があります。

ポイント

OS:Windows11 (Ver 22H2)

GPU:NVIDIA GeForce RTX 3060 Ti (Ver 3.28.0.412)

UE:UnrealEngine5 (Ver 5.4.1)

また、プロジェクトはサードパーソンプロジェクトの使用を前提とします。

注意点

この先、環境によっては以下のような問題エラーメッセージや警告メッセージが表示されることがあります。
基本的に、すべて「問題を修正する」を選択してOKです。

エラーメッセージ

Niagaraエフェクトの作成

対応方針としてNiagara(以下、ナイアガラ)を使用して雨を表現するので、まずはナイアガラを作成します。

コンテンツブラウザにて、何もない部分を右クリックして、「Niagara システム」をクリックします。
「空のシステムを作成」を選択し、「Empty」を選択して作成します。

ポイント

今回は個々人で独自にカスタマイズできるように、意図的に空(Empty)の状態から作り始めます。
作成効率は悪いですが、どのようにエフェクトが変わっていくかを見ながら作れるので、後々どこをカスタマイズすれば良いか思いつきやすくしてあります。

ナイアガラエフェクトのEmpty

ナイアガラを追加後、その作成したナイアガラをダブルクリックで開きます。

ここからエフェクトを編集していきます。
ナイアガラは細かい設定が多いので、漏らさず確実に対応してください!

空のエミッタを追加

グラフには「Empty」という名前でデフォルトの設定が入っています。
これは今回不要(というよりは念のため各条件が揃うように全て1から作って説明しておきたい)なので、削除します。

エミッタのデフォルト設定

そのあとにグラフを右クリックして、空のエミッタを追加します。
追加後、「Rain」など分かりやすい名前に変更しておくと良いでしょう。

空のエミッタの追加ダイアログ
追加された空のエミッタ

光が下に落ちる(降る)様子を作る

まずは光の粒が下に落ちる様子を作り、その後に光の粒を雨粒に替えていきます。
ということで、光の粒が落ちる部分を作っていきましょう!

【エミッタの更新】SpawnRateの追加

「エミッタの更新」の+ボタンを押下して、「Spawn Rate」を追加します。
「Spawn Rate」の詳細欄で、SpawnRateの値をとりあえず25程度に設定しましょう。

SpawnRate

1秒間に放出させるパーティクル数です。
ここでは暫定で25個/秒で発生するようにしていますが、好みに応じて後々変更してください。

SpawnRateの追加
SpawnRateの追加後

この時点ではプレビュー表示は何も変化が無いはずですが、問題ありません。

【レンダリング】Sprite Rendererの追加

「レンダリング」の+ボタンを押下して、「Sprite Renderer」を追加します。
これでプレビュー表示に光のような何かが表示されるはずです。

SpriteRendererの追加

【パーティクル更新】Particle Stateの追加

「パーティクル更新」の+ボタンを押下して、「Particle State」を追加します。
またプレビュー表示が消えると思いますが、一時的なものなので気にしなくて良いです。

ParticleStateの追加

【パーティクルのスポーン】Initialize Particleの追加

「パーティクルのスポーン」の+ボタンを押下して、「Initialize Particle」を追加します。
「Initialize Particle」の詳細欄で、Lifetime Modeの値をRandomに設定しましょう。

InitializeParticleの追加
LifeTimeのランダム設定

【パーティクル更新】GravityForceの追加

「パーティクル更新」の+ボタンを押下して、「Gravity Force」を追加します。

GravityForceの追加

【パーティクル更新】Collisionの追加

「パーティクル更新」の+ボタンを押下して、「Collision」を追加します。

Collisionの追加

コリジョンの追加によって、地面や屋根に雨が当たった時に跳ね返るようになります。
逆に、意図的に室内にも雨を降らせたい場合や、地面で水が跳ねるところを見せたくない場合などは不要な設定ということになります。

光が落ちる様子まとめ

ここまでで一度コンパイルして、マップに配置してみましょう。
光の粒が下に落ちるように見えていれば成功です。
万一うまくいっていない場合は、手順漏れが無いか再確認してみてください。

光が落ちる様子までの状況
光が落ちる様子作成完了までの状況
雨が降る様子の途中経過。光の粒が落ちる様子の作成完了まで。
光の粒が落ちる様子の作成完了まで。

雨粒っぽくしていく

ここからは、光の粒を雨粒に見せるように変更していきます。

【パーティクルのスポーン】ShapeLocationの追加

「パーティクルのスポーン」の+ボタンを押下して、「Shape Locatione」を追加します。

ShapeLocationの追加

この設定を追加することで、1か所から落ちていた光の粒が、いろいろなところから散らばって落ちるようになります。

【パーティクル更新】Collisionの修正

CollisionのRestitutionを0.2程度(数値は各自で微調整してください)に修正します。

CollisionのRestitutionを修正

この数値は、雨粒が地面や屋根に当たって跳ね返る大きさを表します。
数値が大きいほど大きく跳ね上がり、数値が小さいと跳ね返りが小さくなります。
(例えば1に設定すると降り始めの場所くらいまで跳ね返る)

【パーティクルのスポーン】Initialize Particleの修正

「パーティクルのスポーン」のInitialize Particleの詳細欄にて、SpriteSizeModeをNonUniformに設定します。
さらに、SizeのXをMinを2、Maxを1にそれぞれ変更します。
この設定により光の粒の横幅を小さくして雨粒のように見せます。

SpriteSizeModeをNonUniformに変更

ポイント

SizeのYは雨粒を縦長にするための設定ですが、好みが分かれるので各自で調整してください。
筆者個人としてはMin15、Max25に設定すると良いかなと思っています。

【レンダリング】Sprite Rendererの変更

「レンダリング」のSprite Rendererの詳細欄にて、AlignmentをVelocity Alignedに変更します。

VelocityAlignedに変更

これは速度調整で、降り始めはゆっくり落ち、雨粒が下に行くと早く落ちるようになります。

【パーティクル更新】Colorの追加

この項目は任意です。雨粒の色を変えたい場合は変更してください。

「パーティクル更新」の+ボタンを押下して、「Color」を追加します。
さらに"Color"や"Scale Color"に好みの色を設定します。Scale Alphaは透明度の設定で、透過度を調整します。

Colorの追加
Colorの設定

【パーティクル更新】ScaleSpriteSizeの追加

「パーティクル更新」の+ボタンを押下して、「Scale Sprite Size」を追加します。
その後詳細欄にて、右肩下がりとなるようにグラフを調整します。(Smooth Ramp Downボタンの押下で十分かとは思いますが、各自で調整してください。)

ScaleSpriteSizeの追加
ScaleSpriteSizeの変更

続いてScaleSpriteSizeのキーデータを調整します。
グラフの左側の点を選択肢、キーデータの左側を0.7ほどに設定します。(すると点がグラフの右側に移動します)

ScaleSpriteSizeのキーデータを調整

【パーティクル更新】CurlNoiseForceの追加

「パーティクル更新」の+ボタンを押下して、「Curl Noise Force」を追加します。
その後詳細欄にて、Noise Strengthの値を150~160程度に変更します。(ここも数値は各自で調整してください)

CurlNoiseForceの追加
CurlNoiseForceのStrengthの修正

ポイント

Noise Strengthは強度やうねりなど動きをつけるものです。
値を変更しても、よく見ないと変化に気づけないような些細なものですが、ここをしっかり設定することでリアリティが増します。

プロパティからターゲットをGPUに変更

プロパティを選択し、詳細欄にてSim TargetをGPUCompute Simに変更します。

GPUに変更する

おそらく警告が出ているかと思いますので、これを解消します。

全体設定側のプロパティ(青の方)を選択して、詳細欄にて「Fixed Bounds」にチェックを入れます。

さらにMinのZ(一番右側)の設定を状況に応じて変更します。
雨の降り始めの位置が高い場合、-1000などマイナス側に大きくしないと地面までエフェクトがたどり着きません。
MinのZは各自のマップの状況によるので、各自で調整してください。

GPUエラーの設定を解消

完成!

ここでコンパイルして、マップに配置してみましょう。
雨が降っているように見えていれば成功です。
万一うまくいっていない場合は、手順漏れが無いか再確認してみてください。

降雨モデル

-エフェクト関連テク
-