【UE4】エフェクトにおけるマテリアル
UE4でエフェクトを作り出した時に、真っ先に思ったのが
「マテリアルって何?」という部分
この辺に付いて色々
UE4のカスケードにてエフェクトを作る時
Effekseerと違い、マテリアルによってエフェクトを作ることになります(Effekseerなどではテクスチャ)
で、マテリアルというのを知らなかった自分は色々検索したわけですよ
そうするとまず見るのが
「マテリアルは質感を設定するもの」
「UE4では主にベースカラー、ラフネス、メタリックなどを使う」
「ベースカラーが色」
「ラフネスは表面の粗さを定義する」
「メタリックは金属かどうか」...
他にもノーマルマップとか色々ありますが
エフェクト作ろうとしている時に、それを見ても「え?」となる訳で
マテリアルとしての説明はそうなのですが、エフェクトにおいては、そこまで質感として使うことはないのでは?と
当然物によっては必要だとは思いますが、背景やメッシュに使うマテリアル程、そこまで重視されることは少ないでしょう
また、そうなってくるとマテリアルでエフェクトを作る意味は?質感とかは別にそこまで必要無いのでは?との疑問が出てきたりしました。
エフェクトにおけるマテリアルは、普通のマテリアルとは違った考え方だと思うので
UE4でエフェクト作ろうとする場合、最初ここに躓く人が自分以外にも居るのでは?と
エフェクトに使う場合のマテリアル、自分の中のイメージとしては
「色々な情報を持ったテクスチャ」
こういう風に考えています(あくまで自分の個人的な考え)
どういう情報を持てるのか?というのは、そこはマテリアル勉強してくると解ってくる内容かな?とは
タイリングやUV関係、複数のテクスチャを掛け合わせるなど、UE4のマテリアル自体でかなりの動き自体をつける事が出来ます
また、UE4の場合エフェクトに使うようのノードも存在しているので
SubstanceDesignerなどで作ったマテリアルをそのまま持ってくるのとでは、また違った事もできます
最も短調と思われるエフェクト用のマテリアルの例
「particleColor」
このノードは、カスケードのRGBαの情報を持ちます
エフェクトにおいてこのノードは非常に重要で、このノードがないと、色を変えれません
Effekseerなどのツールでは、テクスチャを読み込み、RGBαを弄ると、読み込んだテクスチャの色が変わるのが普通だと思いますが
UE4の場合、このノードから色の情報を出力する結果になります
「Multply」
このノードは単純な掛け算です
0.5×2=1みたいな、ただそれだけです
シンプルなものほど、よく使うものです。
単純ですがかなり使う機会が多いかと思います、Mを押しながら左クリックでショートカットで配置できます
「TextureSample」
テクスチャを読み込むノードです
Tを押しながらクリックでショートカットですが
エディタ上に、テクスチャをドラッグ&ドロップすると、自動的に生成されます
なので、ノードを直接配置する機会は少ないかなと
簡単に言うと、この状態では、ほかのエフェクトツールなどで、テクスチャをそのまま使った状態と殆ど一緒です
以前自分がエフェクト用に作ったマテリアルがこちら
長いので流石に全部は解説はしませんが、マテリアルで何が出来るか?の説明を
このマテリアルは、回転切りのようなエフェクト用に作ったものです
まず、左の黄色で囲ってあるノードは「Dynamic Parameter」(自分は略してDPって読んでます)といい
カスケードで設定した数値を、このマテリアルに持ってくることができます
次にその右側の緑で囲ってるノード(厳密にはマテリアル関数)は、テクスチャの角度を調整したりする事の出来るノードです
一番下のピンに読み込んだ数値によって、角度を変更させます
単体では角度を変更させるだけですが、時間ごとに数値が増えると、回転するようになります(1毎に360°で1周します)
なのでDPを使い、数値を0→1にすると回転します、この動きでエフェクト自体を動きを付けています
動きを付けるだけなら、Timeなどのノードでも良いのですが、DPを使う利点は、数値をカーブで指定することができる点です
このカーブはカスケード上で指定できます、実際の画面としてはこんな感じです
一気に回転してから、後の回転を遅くする余韻をだす事で、自然で勢いのある動きにできます
最後の紫で囲った二つのテクスチャ
色々ノードが絡まってますが、この二つを乗算しています
単純にこの二つを乗算すると、このような結果に
乗算する場合、簡単な考え方は
白の部分が残り、黒の部分が消えます
テクスチャのデータもすべて数値で扱われ、黒は0白は1になり
それらを乗算するからです
数字に1を掛けるとそのままになる=白の部分はそのまま
数字に.0を掛けると0になる=黒の部分は黒になる
白黒のグレースケールの場合基本的にはこのような考え方です
この例の場合、上のぐるぐるしてる画像から
下の画像の白い部分だけ切り取った形となります
で、この合成した形で回転させているわけですが
マテリアル自体を回転させる事はカスケード上でもできます
態々マテリアル上で動きを作った理由は
この二つのテクスチャの回転を逆回転にさせたかったのが理由です
先ほどのこのカーブ
上に伸びているのと、下に伸びている二本がありますが、これは先ほどの二つのテクスチャを
逆回転させているのが理由です
こうした理由は「全体が回転するより、模様だけ逆回転した方が強そうに見えるのでは」
との自分の発想です
自分が勝手にこうした方が強そうだ、という本当かどうかは不明な事をやろうとしたのがキッカケです。
テクスチャではなく、マテリアルで作る利点というのが解ってもらえたら良いな、と思いました。
またエフェクト用のマテリアル関係の記事も書いていこうかと思います。
#UE4Gamejam
— moyasi@エフェクト垢 (@torisutamoyasi) 2017年11月19日
回転斬りとか実装する?みたいなのがあったので、作ってみた
回転切りエフェクト
ただ、発表したときには、再生されなかった、途中版の状態では、出てたんですけどね
ちょっと発生に条件とかあったはずですが pic.twitter.com/Sfb342Xom8
なお、これはゲームジャム中に作ったやつです、最終的なエフェクトとしてはこんな見た目になりました