Help us understand the problem. What is going on with this article?

マテリアルに一工夫して、エフェクトをちょっとリッチにするあれこれ

More than 1 year has passed since last update.

https://qiita.com/advent-calendar/2018/ue4_zwei
アドカレ7日目の記事になります。

 はじめに

 アドカレは初めてなので初投稿です、主にUE4を使用してエフェクトを作成しております、0ct0pusといいます。
 本日の記事はマテリアルに一工夫して、エフェクトをリッチにしよう!という題で記事を書かせていただきます。

1.こんな人向け

・そこまでエフェクトにコストをかけられないけど、もうちょっとリッチに見えるエフェクトを作りたい人。
・細かな調整をしなくても、それっぽく見えるようになって欲しい人

2.今回使ったもの、参考にした資料

・テクスチャはみんなだいすき、Paragonから持ってきました。Paragon Gruxに入っていたものを作例では使用しています。
https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/CurveAtlasesInMaterials
 カーブをテクスチャにするあれこれは上記ドキュメントを参考にしました。
 また、実際に作成したCurveAtlasテクスチャは64*64にしています

3.ほんへ

基本的なマテリアルの最小構成。

image.png
パーティクルシステム(以下,PS)を使用してエフェクトを作る際の非常にベーシックな構成です。
これに手を加えていきます。

特徴
 組みやすい
 シンプルなので負荷も最低限

一工夫後

image.png

色変化と、ディゾルブを入れ込みました。

特徴
 関数化してないと見づらい。

第1の肝になる、アルファ情報をもとにした、色変化機能です

image.png

UE4からカーブをテクスチャ化できるようになったので、それを利用しています。
 Curve Atlas Row Parameter というノードを使ってもいいですが、テクスチャをパラメーター化できるのと、数値(パラメーターのCurve_Index)を変化させるだけでいろいろなカーブにアクセスできたほうが取り回しやすいため、このような構成になっています。

Rチャンネルに0~1のアルファ情報を与えることで、テクスチャの横軸の色を与え
Gチャンネルを数値で制御することで、列を指定しています。

[指定したい列]=[指定したい列番号(Curve_Index)]×[1列の幅(テクスチャが64列ならぶため、1/64)]

で、使いたい列を出しています。add0.5は、テクスチャのボケている部分が出ないようにしています。

第2の肝になる、ディゾルブです。

image.png

ディゾルブ自体は様々な手法がありますが、今回は負荷が比較的軽量で、かつ0~1の数値でコントロールできる手法を取っています。
Dynamicパラメーターで0~1の値で制御します。
0~1の値を、-1~1に変換し、その値をディゾルブさせたいノイズテクスチャに加算します。この値を直接使うと-1~1の値になってしまうので、Saturateで0~1にクランプして、最後にオパシティ情報と乗算します。

更にディゾルブテクスチャがランダムになるように設定。

4.ここまでかわりました。

左が基本的なマテリアルの最小構成、 右が今回一工夫加えたものです。
HITエフェクト
https://www.youtube.com/watch?v=EFpXkq9zeqQ 

パーティクル単体
https://www.youtube.com/watch?v=_yXE-HrKWrA 

5.最後に

より詳細に調整したい場合は、ここに更に複数テクスチャを使用できるようにしたり、タイリング調整やテクスチャのスクロール機能。
テクスチャのディストーションなど様々な機能を入れ込んでいきますが、今回は
そこまでエフェクトにコストをかけられないけどもうちょっとリッチに見えるエフェクトを作りたい人。向けのため、かなり機能を絞らせていただきました。(機能が増えると触るパラメーターもカーブも増えてしまうためです。)
はじめてのアドカレということで、至らぬ点もあるとは思いますが、ここまで見てくださいましてありがとうございました。

6.蛇足

超ものぐさなあなたは
image.png
このようにParticle Rerative TimeをOneMinusして、ディゾルブとオパシティにつないでしまいましょう。
パーティクルにライフタイムさえ入っていれば勝手に消えてくれるようになります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away