【UE4 .26】警告アラート的なHUD風パーティクルをNiagaraで作る
リクエストくれた人がいたので、緊急アラートっぽいパーティクルを #Niagara を使って作りました!
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
某ロボットアニメっぽくなってて好きです!!#gamefx #realtimevfx #3dcg #cyberpunk https://t.co/40ub35TUrJ pic.twitter.com/6Etz4MwPI9
コレを作ります。
まず、このパーティクルを作る上で要素を分けます(作成する過程が一緒で少し中の数値をいじったものをまとめます)。
ブログ用です pic.twitter.com/1uMaiiMSlF
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
パーティクルを単純に回転させているものです(使っているマテリアル等に関しては後述します)。
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
丸い円が広がりながら上昇してフェードアウトしていくものです。
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
「緊急」の文字のついたパーティクルがランダムにスポーンされアニメーションするものです。
ひとつめから説明していきます。
パーティクルを単純に回転させているもの
やっている事は、真四角の平面メッシュに表示させたいマテリアルを張りつけて回転させているだけです。
基本はEmptyからエミッタを作成してMeshパーティクルを設定し、設定を少しいじっているだけなので特別なことはしていません。最低限、必要なモジュールを説明すると
PositionMode内のPositionOffsetのZ軸を変更させ、高さを変えています。
また、MeshAttributesのMeshScaleModeをUniformに設定して数値を1.2にしてサイズを変更しています。
SpawnCountに1を設定することで、パーティクル生成時にひとつだけスポーンされます。(このモジュールと設定は今後説明するエミッタ達でも基本共通して追加してあります)
色の設定をしています。今回作るパーティクルでは、共通する色を持ったエミッタが複数存在しているので ひとつの場所から一括で変更できるようにした方が、調整が楽です。ユーザー属性の場所に色の情報の値を保持させてそれぞれのエミッタに設定しています。(システム属性で良いとも思いましたが、後々ゲーム内などで扱う際に外部から変更できた方が使い勝手が良さそうだなと思ったので...)
ユーザー属性にパラメータを追加する方法を書きます。
「パラメータ」ウインドウから「公開されたユーザー」の横の+ボタンをクリックしてcolorと入力し、「Liner Color」を選択します。設定した値をエミッタに適用させたい場合は、追加した値をエミッタ内のモジュールにドラッグアンドドロップすればOKです。
各エミッタで共通する色の情報等の変数を持たせておくと、一括で変更できるので 調整、後々の変更などがしやすくて便利です。
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 26, 2021
一定時間でエミッタが消えてしまわないように設定しました。
「パーティクル更新」に追加します。メッシュパーティクルにZ軸を基とした回転を加えています。
数値を正の値にしたり負の値にすることで回転の方向を変更できます。
メッシュとマテリアルの設定の概要です。使うマテリアルは好きな物を使うといいと思います。
ten0313.hateblo.jp今回使ったマテリアルはこの記事内で作ったものを流用しています。
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
輪状のパーティクルがサイズを変えながら上に上がっていくエミッターです。
かいつまんで解説していきます。
SpawnRateを3に設定して、たえまなく連続的にスポーンしつづけるようにします。
Z軸に正の値を入れて重力を上向きにかけました。コレで上昇するようになると思います。
パーティクルの更新にScaleColorを追加しました。透明度を表わすalphaにカーブで数値を入力して色がフェードイン・フェードアウトするようにしました。
パーティクルのサイズをカーブで更新するようにしています。写真ではスポーンしてから徐々に大きくなるようにしています。
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
「緊急」の文字がポップアップするものです。
内容は画像作成ソフトで作ったものをTextureSampleとか使って動かしたりしています。
どんな形でも大丈夫です。好みのを作ってください(なんならtextureSampleとParticleColorで繋げるだけでもそれらしくなるとは思います)
内容を説明していきます。NiagaraEmitterのFountainを基に作成します。
スポーンさせる量をこれで設定します。数値を調整することで、スポーンされる量等を変更できたりします。
円柱状の場所を指定してパーティクルをスポーンさせるものです。
CylinderHeightとCylinderRadiusで平たい円柱(高さ10、直径100の円柱)を作って、その中にスポーンさせるようにしました。
OffsetでZ軸の数値を変更して、少し高い位置にパーティクル群が出るようにしました。
Y軸方向の大きさをCurveで指定して、スポーンしてからキルされるまでに パーティクルがピコンと動くようにしました。キー補完を「ユーザー」にして
出現した時と消える際に少し大きくなるようにすることでちょっとかっこよくしました。
パーティクル上部にこのエミッタが多数出現するので、下にあるパーティクル達は重なって見えにくくなってしまいそうです。対策として、Alphaを少し小さくすることで半透明にしました。このエミッタ同士が重なった時にも効果を発揮するはずです。
最後に表示方法の選択です。AlighnmentとFacingModeを設定することで、プレイヤーのカメラの位置に依存することなく、一定の方向を向き続けてくれるようになります。
リクエストくれた人がいたので、緊急アラートっぽいパーティクルを #Niagara を使って作りました!
— 東京高速戦術@VR音ゲー制作中 (@kousoku_tactics) June 25, 2021
某ロボットアニメっぽくなってて好きです!!#gamefx #realtimevfx #3dcg #cyberpunk https://t.co/40ub35TUrJ pic.twitter.com/6Etz4MwPI9
これで完成です。
なにかわかりにくい事があったり、間違いがあればTwitterのDMとかにおねがいします。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してあります、リンク先のツイッターアカウントに教えてくださると嬉しいです:) ]