見出し画像

【3DCG】UEで背景の環境エフェクトを作ってみよう!【Tips】

お久しぶりです。背景セクションです。
今回は背景と言いつつエフェクトを作っていこうと思います。

エフェクトといってもカッコいい魔法でもなくド派手なものでもありません。
背景にちょいとスパイス的なパーティクルエフェクトをUnreal EngineのNiagaraで (なるべく複雑なことをせずシンプルに)作っていきます!


はじめに

UEのバージョンは5.6.1を使用していきます。
手順は比較的シンプルですので、Niagara初心者の方でも試していただける内容になっています。

新規でNiagaraシステムを作成でエミッターテンプレート「HangingParticulates」を選択して作成します。

基本この「HangingParticulates」を改造して
光る虫、落ちる葉っぱ、雪、火の粉、雨の5つを作っていきたいと思います。

中身を見てみると何やらエラーが出ているので
モジュールの詳細から「問題を修正」ボタンをおして修正します。

ちなみにこの「HangingParticulates」は埃や塵のエフェクトに使えますね。

①光る虫(蛍)

まず初めに鉄板の「浮遊する光る虫」を作っていきます。
「HangingParticulates」の不要なモジュールを無効にします。
(使わない場合は削除するのがよいですが、後で使うのでとっておきます)

以下のモージュールをいじってパーティクルを調整します。
現状結構多くの粒が生成されてるのでSpawn Rateを10くらいにします。
Initialize ParticleののUniform Sprite Size MinとMaxでパーティクルの最小の大きさと最大の大きさの設定します。
Shape Locationは「Sphere」(球の形)にしてSphere Radiusu(球の半径)は100くらいにします。

Spawn Rate パーティクルの生成数
Initialize Particle パーティクルの初期設定
Shape Location パーティクルを生成する範囲の形

球状に球が生成されるようになりました。

この玉にランダムな動きを付けていきます。
パーティクル更新にモージュールを追加します。
+ボタンを押してCurl Noise Forceを検索して選択します。

Curl Noise Force パーティクルの動きにノイズを与える
 このForceとつくものはパーティクルを動かすモジュールになります。
 他にもあるのであるので色々試してみるのも楽しいですよ。

ランダムな動きになりました。

これでもそれっぽい感じに見えますがもう少し動きを追加してみます。

Curl Noise ForceのNoise Strengthを100にしてランダムノイズを強くします。
Vortex Forceのモジュールを追加します。
Vortex Axisは渦の方向を指定します。
Minimum -1 Maximum 1 にして全方向に渦巻かせます。
パーティクルがどんどん外に行ってしまうのでDragモジュールを追加して動きに抵抗を与えます。

Vortex Force パーティクルに渦の動きを与える
Drag パーティクルの速度、回転に抵抗を与える

いい感じの動きになりました!

あとは色を付けて完成です。
Initialize ParticleのColorで色を設定します。
明度に1以上入れると発光します。

\\光る虫の完成!//

幻想的な森に配置してみると合いそうですね。


ちなみに今回いじってない以下のモージュールを軽く説明しておきます。

Scale Sprite Sizeでパーティクルが生成されてから消えるまでの大きさの変化のグラフが設定されています。
生成時は大きさ0で大きくなって最後には小さくなる感じです。
Scale Colorで透明度が設定されています。
生成時は透明で不透明になってまた透明になるようになっています。

Scale Sprite Size パーティクルのサイズの変化
Scale Color パーティクルのカラーの変化

②落ちる葉っぱ

先ほどの光る虫を改造して「落ちる葉っぱ」を作っていきます。
パーティクルのカラーを白に戻しておきます。
Shape Locationも「Box/Plane」のBoxに戻します。

最初に無効にしたWind Force、Aerodynamic Drag、Align Sprite to Mesh Orientationを有効にします。
Vortex Forceは消して、Curl Noise Forceは無効にしておきましょう。
(これも後ほどまた使います)
基本的にSpriteパーティクルは常にカメラのほうに面が向いていますが
Align Sprite to Mesh Orientationで向きを変えることができます。

Wind Force 風の動きを与える
Aerodynamic Drag 空気抵抗を与える
Align Sprite to Mesh Orientation パーティクルの面の向きを設定

Gravity Forceモジュールを追加してパーティクルに重力を与えます。
数値はそのままで大丈夫です。

Gravity Force パーティクルに重力の動きを与える

Spawn Rate、Sprite Size、Dragの値を少し調整します。

ひらひらした丸ができました。

あとは葉っぱのテクスチャのマテリアルを適用するだけです。

\\落ちる葉っぱができました!//

Aerodynamic DragのRotation Strengthの値を上げると回転する力が増えてよりひらひらします。

③雪

今度は「雪」を作っていきます。
同じく葉っぱから改造してきましょう。

先ほど葉っぱのマテリアルに変えてしまったので
デフォルトのDefault Sprite Materialに戻します。

不要なモジュールを削除します。
(AereDynamic Drag、Scale Sprite Size、Align Sprite to Mesh Orientation)
Curl Noise Forceは有効にします。

WindとCurl Noiseのパラメータを調整します。
Wind Speed Scale(風の強さ)を強くします。
実はWind Forceの中にTurblenceというCurl Noise Forceのようなノイズの動きを与えるパラメータがあるのですが
今回はCurl Noise Forceで設定していきたいのでTurblenceのところは初期値に戻しておきます。
Curl Noise Forceも強くします。

\\ふわりと落ちる球ができました//

はい、雪はこれで終わりです。
雪っぽいテクスチャを付けるともっと雰囲気が出ると思います。

④火の粉

次は「火の粉」を作っていきます。
引き続き先ほどの雪を改造していきます。

まずは不要なモジュールを無効にします。

モジュールのパラメータを調整します。
Initilaize ParticleのLifetime MinとMaxはパーティクルの消えるまでの時間の最小値と最大値になります。
Min~Maxの間でランダムに設定されます。
Sprite Size Modeを「Random Non-Uniform」に設定します。
Non-Uniformはパーティクルのサイズを縦と横で設定できるので細長いパーティクルを作ることができます。

パーティクルを上に向かって回せたいのでAdd Velocityのモジュールを
「パーティクルのスポーン」のところに追加します。

Add Velocity パーティクルに速度を与える

AddVelocityのVelecityの上方向(Z)と横方向(XかY)に値を入れます。

上に舞い上がる塵ができました。

パーティクルの向きがバラバラなので進行方向に向くようにします。
Sprite RendererのAlignmentを「Velocity Aligned」にします。

いい感じになりました。

あとは色を付けたら…

\\火の粉の完成です//

アチアチの環境にあると雰囲気が出そうですね。

⑤雨

最後に、少しだけ複雑になってきますが「雨」を作っていきます。
毎度のことながら火の粉を改造していきます。

Add Velocity、Scale Color、Curl Noise Forceは使わないので削除します。
また、無効にしていたモジュールを復活させます。

Spawn Rate、Initialize Particle、Dragを調整します。
Liftimeはランダムにする必要はないので
Lifetime Modeは「Direct Set」にして固定にします。
Sprite Size Modeも「Random Uniform」にします。

Scale Sprite Size by Speedのモジュールを追加して値を調整します。
速度が上がるほど細長くなるようにしました。

Scale Sprite Size by Speed 速度に応じたパーティクルサイズの変化

雨っぽくなりました。

せっかくなのでパーティクルに当たり判定を持たせて、跳ねる水を追加していきます。

Collisionモジュールを追加します。

Collision 当たり判定を与える

コリジョンを入れたので床に当たって跳ね返るようになりました。

次にKill Particlesモジュールを追加します。
そのままだとただパーティクルを消すだけなので条件を付けます。
Kill Particlesに「Has Collided」を検索して選択します。

Kill Particles オンにするとパーティクルが消える

床に当たったら雨が消えるようになったと思います。
次に当たった場所にパーティクルを発生させます。
まずは発生させるエミッターを作成します。
空いているところを右クリックしてエミッタを追加からテンプレート「DirectionalBurst」を追加します。

当たった場所に新しく作ったDirectionalBurstが発生するようにしていきます。
パーティクル更新にGenerate Collision Eventのモジュールを追加します。
Generate Collision Eventを追加するとエラーが出ると思うので
プロパティの中にあるRequires Persistent IDsにチェックを入れます。

これでパーティクルが当たったらどうするかの準備ができました。

次は受け取る側の設定をしていきます。
+ステージからEvent Handler(イベントハンドラ)を追加します。

追加したイベントハンドラのソースに、雨のコリジョンイベントを割り当てます。
Execution Modeは「Spawnde Particles」にしてください。
Spawn Numberは生成するパーティクルの数になります。
イベントハンドラ側でパーティクルの発生数を設定するので
Spawn Brust Instantaneousは消します。

Emitter StateのLoop Behaviorが「Once」になっているので
「Infinite」に変更します。
Onceだと一回発生したらそれ以降は発生しなくなります。

イベントハンドラにRecevi Collision Eventモジュールを追加します。
これで雨が当たった場所を取得できるようになりました。

雨が床に当たって消えて、
代わりにDirectionalBurstが発生するようになりました!

あとはDirectionalBurstをは水しぶきのように調整するだけです。
Lifetimeを短くして、Sprite sizeを調整します。
Add VelocityのVelocity Modeが「In Cone」になっています。
これは円錐状に飛ばすものになります。
Cone AxisをZだけ1にします。これで上方向に飛ぶようになります。
Cone Angleで円錐の角度を広げてもう少し拡散するようにします。
Scale Sprite Size by Speedを消します。

\\床に当たると水しぶきが出る雨ができました!//

おわり

今回5つの環境エフェクトをシンプルに作ってみましたが
自分で作ってみるエフェクトの種やヒントになればうれしいです。
パラメータをランダムにしてみたり、
もう少し複雑なことをしてみたり、テクスチャを作ってみたりと
色々調整していけばもっと良いのが作れるはずです!
そして是非背景にエフェクトを入れてみてください!

盛りだくさんでおなかいっぱいですかね。
最後までお付き合いいただきありがとうございました!

▼過去の【Tips】記事もぜひご覧ください


広報からのおしらせ

ここまでご覧いただいた皆さまに、プロモーション担当からお知らせです🌼

BBDSでは3DCGデザイナーを積極募集中です!
募集要項&エントリーは↓こちら↓からご確認いただけます☺

皆様にお会いできるのを心よりお待ちしております。

==================================================

●BBDSホームページ https://www.kurohige.jp/

●BBDSのXアカウント https://twitter.com/BlackBeardDS



いいなと思ったら応援しよう!

この記事が参加している募集