UE4のエフェクトツール「cascade」で作成して保存したエフェクトデータは
「パーティクルシステム(Particle System)」というタイプのデータになります。
まずはUE4のエフェクトツールでできることをざっと紹介したいと思います。
マテリアルをそのままパーティクルとして表示できる
ノードベースで複雑なシェーダを自由に構成できる「マテリアルエディタ」はUE4の強力なツールの1つですが、作成したマテリアルをcascadeではそのままパーティクルとしてエミッターから放出させることができます。
エフェクトの場合、最もシンプルなマテリアル構成は「ただテクスチャを表示する」だけになりますが、さらにマテリアルを凝って構成すれば、テクスチャを歪ませたり千切れながら消えるようにしたり、複数のテクスチャをミックスしたり、カメラからの距離に応じてテクスチャを変えたりフェードアウトさせたりと色々な表現が可能です。
エフェクトを作りたい場合はまずマテリアルを用意する必要があるので、エフェクトアーティストはマテリアル作成の最低限の知識は必要です。
マテリアルを静的メッシュに貼り付けてパーティクルとして表示できる
エミッターのデータタイプを「mesh」に変更することで、好きな静的メッシュ(Static Mesh)を指定して、さらにはそこに好きなマテリアルを指定してパーティクルとして表示できます。
(正確に言えば元々メッシュに設定されたマテリアルを上書くことができます)
つまりメッシュとマテリアルをエミッター上で自由に組み合わせることができます。
ただし骨入りメッシュ(skeletal mesh)は扱えません。
公式マニュアル:Mesh Type Data
不透明と半透明のどちらでもOK
エフェクトだからといって半透明しか扱わない訳ではありません。不透明も使います。
岩や剣やミサイルや薬莢といった不透明に向いているモチーフもありますし、普段なら半透明で表示するようなモチーフも描画処理軽減のために不透明で表示するといった場面もあると思います。
ただし不透明だとフェードイン・フェードアウトの表現ができないので、エフェクトの出現&消滅の際には何かしらの工夫が必要になります。
エフェクトでは主に、不透明、半透明、加算半透明の3種類を利用することになると思います。
これらブレンドモードの設定は基本的にマテリアルで行いますが、マテリアルインスタンスからオーバーライド(上書き)で変更することも可能です(ただしインスタンスでは無くなってしまうので注意が必要)。
「減算が無い?」と思うかも知れませんが、色にマイナスの値を入れることで表現できます。
参考サイト:もんしょの巣穴blog | [UE4] 半透明マテリアル
GPUパーティクルで大量のパーティクルを表示できる
数万~数十万といった大量のパーティクルを発生させることで表現の幅が広がります。
ベクターフィールドというGPUパーティクルの飛ぶ方向に影響を与えるボックス領域をレベルに配置したりエミッターに設定したりできます。ベクターフィールドはMayaの流体でコンテナ内にベクトルを発生させておいて、好きなフレームを3DテクスチャとしてFGA形式でエクスポートし、UE4でインポートすればそのまま使用できます。
GPUパーティクルに対して普段のパーティクルはCPUパーティクルと呼称されます。
CPUパーティクルと比べるとライトを設定できないといった制限が色々とあります。
公式マニュアル:GPUスプライト タイプデータ , Vector Field モジュール
参考サイト:Vector Fieldの作成チュートリアル(英語)
パーティクルに対してライティング可能
不透明マテリアル、半透明マテリアルどちらを使用していてもパーティクルにライトの影響を与えることができます。
つまりエフェクトとして表示している岩や煙がライトに照らされて明るくなったり、セルフシャドウやキャストシャドウを表示することが可能です。
ライトの影響を受けるにはマテリアル側で設定します。マテリアルのShading Modelを「Default Lit」にしておきましょう。影の濃さもマテリアルでの設定になります。
ライティングが可能ということはつまり、ノーマルマップを利用して起伏のあるエフェクトを表現できるということでもあります。
公式マニュアル:Lit の透過処理
パーティクルにライトを仕込むことが可能
エミッターにライトを設定して、放出するパーティクル1つ1つを光源にすることが可能です。
大量にパーティクルを飛ばす場合はそのままだととんでもなく処理が重くなりますが、パーティクル数に対してライトを設定する数の比率を指定することもできます。
ただしGPUパーティクルの場合にはライトは設定できません。
公式マニュアル:パーティクル ライト
ビームやリボンのような帯状のエフェクト表現が可能
ビームは始点と終点を設定してラインで繋げるような挙動になります。
リボンは放出したパーティクルを順に線で結ぶような挙動になります。
公式マニュアル:Beam Type Data , Ribbon Type Data
その他
・アニメーションパターンを敷き詰めたテクスチャを使用したパターンアニメーション(SubUVのアニメーション)
・パーティクルがキャラクターにめり込まないようカメラ側に位置をズラす機能(Camera Offset)
・マテリアル内部の値をcascadeで自由に変更する機能(Dynamic Parameter)
パーティクルの1粒ごとに値を変えることができるのが特徴です。
・パーティクルを視錐台カリング(画面外に出たら描画を停止する)を判定するためのバウンディングボックスの設定
‥などなど。
重要そうなものから少しずつ解説していきたいと思います。
公式マニュアル:マテリアル , パーティクルシステム