moyasiエフェクト館

主にエフェクト関係の記事を上げていこうかと思います。


エフェクトに関係する記事上げてきます
エフェクト関係の記事の内容は緩く募集中
自分がわかる範囲であれば書いていこうかなと。

【Effekseer】歪み機能のあれこれ

f:id:tktknkyo:20171216081158p:plain

今回は、Effekseerの機能である歪みの解説みたいなのをしていきます

 

歪みをEffekseer上で有効にする場合にはまず

「ウインドウ」の中の「オプション」を開き

f:id:tktknkyo:20171216100731p:plain

下の方にある、「歪み方法」を「1.20互換」に変更します

f:id:tktknkyo:20171216100804p:plain

そもそも歪みとは?

 

歪み自体がどういう処理なのかと言いますと

読み込んだテクスチャのRとGチャンネルの情報を元にX軸、Y軸を移動させます

ただ、どのように動いているかを説明したとしても、具体的にどうやって活かすのかを、ピンと来る方はあまり居ないのではないでしょうか。

例えば、単色(緑のみの■テクスチャ)であれば、これを使えば全体が動く、というのは想像出来ると思いますが

 

例えば

f:id:tktknkyo:20171216082031p:plain

この様なテクスチャを歪みとして使ったらどうなるか?と言われると

歪みを使ったことがない人には、中々想像しにくいと思います。

個人的に、歪みの機能に関しましては、まずは歪み機能を使ってみて、どのように入れたら、どの様な結果になるのか、を試してみてからをオススメします。

 

歪み機能の実装

Effekseerで歪み機能を使う場合、描画共通のタブにある、歪みのチェックを入れます

f:id:tktknkyo:20171216082428p:plain

これで、歪みがONになります

下の歪み強度は、初期では1になっています、この数値は必要に応じて変えてください

比較としてGIFアニメ貼ります、左から強度が0.2、0.5、1です

なお、これはブレンドが「加算」で試しています。

f:id:tktknkyo:20171216083322g:plainf:id:tktknkyo:20171216083414g:plainf:id:tktknkyo:20171216083456g:plain

強度が強くなるにつれて、歪みテクスチャの細かい模様が出やすくなっていきます

個人的に、強度は0.2と0.5を使うことが多いです。

 

これは加算合成での歪みで、通常合成で歪みを入れた場合

f:id:tktknkyo:20171216084617g:plain

この様になります、歪みの強度は0.2で試しています

 

f:id:tktknkyo:20171216085844p:plain

この画像は、歪み強度を0.2、加算合成で歪みを適用した先ほどのものから

ラインの本数を少なくしたものです

緑で囲った部分が、元のラインの部分と思われるもの

加算での歪みは、元のラインを残しつつ、歪ませた描画を足している感じでしょうか。

f:id:tktknkyo:20171216090514p:plain

こちらが、上記のを通常合成に差し替えたものです

緑で囲った部分には、かろうじて元のラインと思われるものは残っていますが

青で囲った部分は、原型が殆どないです。

通常合成での歪みは、元の形を壊してしまいやすいです、ただそもそも歪みを使うことで元の形が多少雑でも、歪み機能によって誤魔化したりも出来る、という利点にもなります。

 

それぞれの長所・短所

 

加算合成としての長所として

元の形に、加算していく形になるので、元の形状を崩しにくく

元の描画に、付け加えることで、攻撃エフェクトなどではより強そうに見せたりするのを

一つ歪みを付け加えるだけで可能です、ただ加算する事の最大の短所が「白飛び」です具体的にはこのようになります

f:id:tktknkyo:20171216092228g:plain

エフェクトで加算合成使う場合には、白飛びする危険があるというのは

歪みでも同様というワケです

f:id:tktknkyo:20171216092814g:plain

また、背景色にも加算の歪みが適用される関係上

背景が明るい場合、加算の歪みを使うとかなり白飛びが発生する恐れがあります

黒背景上では、加算合成の歪みは手軽なのですが

そのままでほかのゲームツールに入れ込んだ場合、ゲームの背景を加算合成で歪ませることで真っ白になってしまう危険性があります。

これ、非常に重要です、自分もやらかしたことあるので。

加算合成する場合は、背景色を明るめにして作ってください、またゲームデータ自体の方でも、ちゃんと確認するのを私はオススメします。

また白飛び対策をしたい場合、歪み強度ではなくαを調整してください。

f:id:tktknkyo:20171216093731p:plain

簡単な対処法の一つとしましては、一度Pngなどの画像に出力してから

通常合成で再生する事です、こうすることで、歪みが入っているような描画になりますが

背景などには一切影響を受けなくなります。

f:id:tktknkyo:20171216094103p:plain

出力形式を1枚にまとめて出力、にして、録画のボタンを押せばOKです。

ただしこの方法をする場合、ノードは全て加算合成にしてください。

通常合成を混ぜると、うまく出力してくれない事が多いです。

公式さんに要望出したことはありますが、技術的に難しいとの事。

 

では、通常合成の方の長所に注目しますと

大きいことが、白飛び対策が基本的に不要という点です

背景が灰色の状態で、RGBα全て255で発生させ続けても、白飛びしません

(背景が歪みはするので、多様は禁物ですが)

なので、強い歪みを連続的に出して、蠢いている表現をしやすいです。

一つの例としてがこちら

f:id:tktknkyo:20171216095338g:plain

中心部分に通常合成の歪みを入れています

1フレーム毎に発生し続けて、更にRGBαが255となっています

これを加算合成ですると...

f:id:tktknkyo:20171216095516g:plain

中心が真っ白になります

通常合成の歪みは、連続的に歪ませる場合にかなりの効力を発揮します。

HITエフェクトなどの、単発系などには加算合成の歪みはかなり便利ですが

白飛びへの対処には気を使う必要があります。

 

 

なお、Effekseerの歪みは、上にあるノードを歪ませます

f:id:tktknkyo:20171216100435p:plain

この用なツリーの場合、2に歪みを入れている場合

1には歪みが適当されますが、3には歪みが適用されません。

 

【UE4】Dynamic Parameterを使ったフェードアウト

f:id:tktknkyo:20171214193350p:plain

今回は、UE4のマテリアルエディタのノードの一つである「DynamicParameter」による簡単なフェードアウトのやり方を

 

そもそも「DynamicParameter」とは

パーティクルシステムである、カスケードで数値を設定することができ

その数値を、マテリアル内に適用する事ができます

 

例えば、カスケード内で、数値を5に設定したら

DynamicParameterが5の数値として出力されます

定数であれば、定数ノードを使えばいいのですが

このノードを使う利点は、カスケード内で動的に数値を変化させることが出来る点です。

 

マテリアルダイナミックインスタンスの、エフェクト版とでも思ってもらえば良いかなと。

で、重要なのがおそらく、動的に動かせて、結局何ができるのか?という事

具体例がないと、ピンと来ないと思います

 

f:id:tktknkyo:20171214194537p:plain

これはサムネイルでもある画像ですが、一つの単純な例として見てもらえればなと

中央の「Power」は、Baseに読み込んだデータを、Expで読み込んだ数値で累乗します

Baseに3

Expに3なら、3の3乗で27になる、といった感じです。

 

右側にある「Subtract」は、引き算をするノードです、AからBを引きます

 

DynamicParameterで数値を変化させるとどう変わるのか?というと

f:id:tktknkyo:20171214195120p:plain

f:id:tktknkyo:20171214195008p:plain

f:id:tktknkyo:20171214195152p:plain

エディタ内では、定数ノードに置き換えています

この構成の場合、数値が低くなるほど、最終結果の、中心の黒い部分が大きくなります

また、1になると、全て真っ暗になります

 

どのような数値でも、1乗してもそのままになり

元が同じテクスチャから引き算をしているので、全て0になるので真っ黒に

 

しかし、1を超える数値を入れた場合、テクスチャからそのまま情報をとってくる場合

0~1に限定されます

なので、1の部分がそのままで、1未満の部分のみ減っていきます(0.9*0.9=0.81など)

で、その減った数値を引いているので、中間の部分は白い部分が残り

中心の白が強い部分がくり抜かれて、リングのような表示になります。

 

これにより、高い数値から1に持っていくことで、中心から削れて、細くなっていって消えるような表現にすることが可能です。

 

当然、別々のテクスチャ同士で引き算することも可能ですが

その場合はDynamicParameterが1になっても、完全に消えて切れないので注意が必要です

その場合は、particlecolorのαをマテリアル側で繋げておいて

カスケードのColorOverLifeのαを最後に0にやって消してあげるといいです。

 

f:id:tktknkyo:20171214200636p:plain

また、このように引き算する前のノードに、加算や乗算などの処理を入れたノードを入れる場合、数値が1を超えてしまう場合があるので注意です(Addは足し算するノードです)

1を超えるとどうなるのか、というと

たとえば、1を超えて1.5になってしまい

累乗が5の場合だと、1.5の5乗で約7.5

1から7.5を引くと、-6.5と、高いマイナスの数値になってしまいます

こうすると、実際に表示した場合に、極端に黒く表示されてしまう場合があるので注意が必要です。

 

その場合にはこの

f:id:tktknkyo:20171214201021p:plain

Clampというノードを使うといいです

これは数値の最大値と最小値を決めてくれるノードです

Powerや、Subtractの前に、このノードにつないで0~1にすると、解決してくれます。

 

ちなみにこのClamp、Powerを使う際に、結構便利なことも多いです

理由は今回と同じく、1を超える数値を累乗すると、極端に高い数値になる事がある為。

Clampの最大値を0.95など、ちょっと低めの数値にしてから、Powerで累乗すると

1の部分がなくなるので、全ての場所が薄くなっていくので

Powerノードで薄くしたいけど、1の部分が消えなくて邪魔、という場合などに特に重宝します。

 

【UE4】カスケードで何かを作ってみよう

f:id:tktknkyo:20171213191827p:plain

 

UE4で、エフェクトつくろうとした時に、カスケードって何?ってなりそうかな?というか自分はなったので、勝手に記事書きます、ご了承を。

 

そもそも自分が最初につまづいたのが、カスケードの起動が出来ない

というより、新規作成が解らない(論外)

 

UE4起動した画面の、コンテンツをクリックすると

コンテンツブラウザというのが出るので

この中の「パーティクル」をクリック

f:id:tktknkyo:20171213192421p:plain

エフェクトでもカスケードでもなく、パーティクルです

この辺若干ややこしい用語なのかもしれません。

f:id:tktknkyo:20171213192718p:plain

作ったのを開くと、こんな画面が出てきます

ビューポートにある、この謎の物体が上の方向に動いています

未だに、これが何なのかはよく解りません。

 

 

f:id:tktknkyo:20171213193119p:plain

エフェクト作る際に、重要そうなこの三つ

緑の部分が、エミッターに入れたマテリアル

赤の部分が、エミッターに設定されているモジュール

紫の部分が、モジュールに設定していく中身

 

エミッターは、放出するもの、という意味

つまりマテリアル(パーティクル)を放出しているものです

 

このエミッターは、エミッターが並んでいる部分の

黒い部分を右クリックで、新しくエミッターを追加することができます。

f:id:tktknkyo:20171213215104p:plain

 

モジュールは、いわゆるエミッターに入れる効果などのもので

色を変えたり、発生数を変えたり大きさや角度などを変えたりするものです。

 

このモジュールはモジュールの上で右クリックから削除したり

f:id:tktknkyo:20171213193705p:plain

モジュールが並んでいる下の灰色部分の右クリックで新しく追加したりできます

f:id:tktknkyo:20171213193754p:plain

結構数が多いです、またこれらは更に展開して、色々種類があるので

全体のモジュール数はかなりの数になります

 

各モジュールの説明などは、公式のリファレンスを見るといいと思います。自分も全部は覚えきれてないです...

docs.unrealengine.com

 

あとは、幾つかモジュールの解説を。

 

初めから入っていて、消すことの出来ない

Required

 ・Material

そのまんま、使用するマテリアルを設定します。

ドラッグ&ドロップや、右の▼から探すこともできます

f:id:tktknkyo:20171213214913p:plain

・スクリーン整列

初期設定ではPSA Squareとなっています

この状態では、パーティクルの大きさはXのみ影響します

また、常にビルボード表示(カメラの方に向いてしまう)ので

これを変更したい場合はここを変えるといいです

f:id:tktknkyo:20171213194841p:plain

その下の三つのチェック

「Ues Local Space」

これにチェックを入れると、レベルなどに配置し、大きさを変えた時に位置も連動してくれます

これにチェックがいれていないと、拡大しときに表示が変になりやすいので注意

パーティクル単体の大きさは変化するが、位置がそのままになるので

大きさを調整した場合にかなりの破綻になります

「Kill on Deactivate」「Kill on Completrd」

この二つは、エミッタ自体の消去をします

無限ループするようなエフェクトではチェックは無しで

それ以外であればチェックを

大体の場合は全部チェック入れればいいかなと

 

f:id:tktknkyo:20171213195341p:plain

次に、DurationにあるEmitter loops

この数値はループ回数を設定します

初期値が0、0は延々とループします

基本的には1がいいかなと

 

こちらも最初からあって消せない

Spawn

 

f:id:tktknkyo:20171213200021p:plain

上の方にあるのを、開いていくと、こんなのが出てきます

この二つは、増やすほど放出していく量が増えていきます

どっちを増やしても増えるので、放出量を増やしたい場合は数値を増やしていけばいいのかなと

ただ、これは放出し続ける場合に使います

「HITエフェクトに、粒子を100個一気に散らしたい!」

という場合には向きません

 

こういう場合に使うのが「Burst

f:id:tktknkyo:20171213200445p:plain

という項目にあるここです。

+マークをクリックしてエレメントを追加すると、このような表示が出てきます

f:id:tktknkyo:20171213200647p:plain

Count

この数値分だけ、発生します

Count Low

0以上の数値を入れると、Countとの数値のランダムになります(つまり最小値、-1で無効)

「Time」

実際にどのタイミングから発生させるか?というもの

ただ1などの数値にすると、発生してくれない?発生しなくなる理由は不明です...

 

必須はこの二つのモジュールです

後は、個人的に使用頻度が高そうなモジュールをいくつか

 

Color Over Life

Colorの中にあります

色を変える為のモジュールです

ただし、このモジュールで色を変える場合、マテリアル内でparticleColorをつないでおく必要があります

 

f:id:tktknkyo:20171213204538p:plain

モジュールの詳細ではこの用になっていて、数値設定する部分は、折りたたまれています

このモジュールに限らず、数値を設定する部分が折りたたまれていることが多いです。

 

ColorOverLifeは、RGBを変化させる

AlphaOverLifeあ、αを変化させます

f:id:tktknkyo:20171213204918p:plain

数値を設定する項目は、5パターンありますが、まずは線を引いた3つ覚えればとりあえずは問題ないです

赤線は、数値を固定で設定

黄色線は、数値を変動させる

緑は、数値の最小最大を設定

f:id:tktknkyo:20171213205306p:plain

配列のエレメント、とある右の+をクリックするとエレメントを追加します

InValは、どの時間の数値を設定するか

OutValは、実際に設定する数値

ArriveTangent,LeaveTangent

この二つは、カーブの微調整するものです、細かい調整をしたいときに使いますが

数値で指定するより、カーブエディタで動かすのが主だと思います

Interpは、この数値の中間の間をどのようなカーブをさせるかを設定

とりあえずは「CurveAuto」が一番安定かなと

 

 

上で名前だけだしたカーブエディタ初期位置では右下にあるグラフのようなものです

ここで、これらの数値を動かすことができますが、初期状態では、そもそも何も出ていないです

f:id:tktknkyo:20171213205828p:plain

モジュールの、この部分をクリックすることで、カーブエディタに追加されます

f:id:tktknkyo:20171213210017p:plain

左の青の丸の部分に、モジュール名が追加されます

ただ、モジュールが増えてくると複雑になるので、右の方にある小さな□をクリックすると

カーブエディタ上での、表示、非表示が切り替えできます。

 

赤丸の部分は、カーブエディタにあるピンをクリックすると出現します

これをドラッグする事で、このカーブの湾曲を変えることができます

 

上にある紫の部分は、このカーブの曲線をどうやって表示するか、の設定です

基本的に自動でOKです

こりたい場合だけ変えて色々弄ると良いかなと

 

RGBの設定は、数値の挿入にカラーピッカー使えたりしますが、そこまで大差はないです。

数値の設定は、他のモジュールも基本的に同じです。

詳しくしりたい方が、上にはった公式のドキュメント参照するといいと思います。

【InitialLocation】

f:id:tktknkyo:20171213210622p:plain

いわゆる座標を設定します

ある程度ランダムな範囲に発生する系などに

【InitialSize】【SizeByLife】

f:id:tktknkyo:20171213210856p:plain

f:id:tktknkyo:20171213210954p:plain

初期のサイズと、時間で変化するサイズ

 

【InitialVeloctiy】

f:id:tktknkyo:20171213211048p:plain

移動させる為のモジュールです

ただ、単純に移動というより、重力で引っ張るようなイメージ...?

【Drag】

f:id:tktknkyo:20171213211238p:plain

減速、IntialVeloctiyと合わせて使う事が多いかなと

割とお手軽に動きの緩急つけやすいので便利です

ただ、あくまで減速するだけなので逆方向に進んでくれたりはしません

ただ、このおかげで手軽に使いやすいと思います。

 

【LifeTime】

f:id:tktknkyo:20171213211619p:plain

パーティクル毎の寿命を設定します

 

【InitialRotation】

f:id:tktknkyo:20171213211738p:plain

発生時の角度を設定します、回転はできません

 

【InitialRotationRate】

f:id:tktknkyo:20171213211921p:plain

回転させるモジュールです。

 

 

今回はここまでです、Dynamicは、使う頻度多そうですが、マテリアル絡むので、個別でなにか記事書きます、出来ること多すぎますし。

【Effekseer】リング機能で立体を作る

Effekseerの機能、リングでちょっとした立体を作れます、というお話

 

f:id:tktknkyo:20171210113428p:plain

こんなの作れるよ!(Twitterサムネ用に静止画です)

f:id:tktknkyo:20171210101719p:plain

そもそもリングがどこにあるのか?というと、描画の所に、「リング」があります

初期の、テクスチャが入っていない状態でリングにすると

f:id:tktknkyo:20171210101840p:plain

こんな描画になります、輪っかは輪っかですが

カクカクで、あまりキレイな曲線じゃないです

 

ただ、これを見て「リング上のテクスチャ用意すればいいじゃないか」と、思わないで欲しいのです

なので、自分がこの「リング」機能を使う利点や理由などを解説していこうかなと

 

リングの描画には、スプライトなどより、多数の項目があります

この中でも、リング独自な部分の解説を。

f:id:tktknkyo:20171210102236p:plain

【頂点数】

頂点の数です頂点?って思う方居るかもしれませんが

早い話、3Dモデルの頂点数のようなものです。

【表示角度】

初期では、360なので、一周していますがこの角度を変えることができます

素の状態だですと、途切れてしまい何のためか解りにくいですが、使い方によってはかなり便利です

なお角度は固定のみではなく、ランダムやイージング指定が可能です。

f:id:tktknkyo:20171210102556p:plain

外輪・内輪】

これ非常に重要です、頂点数の説明で入れたように、3Dモデルのようなもので

イメージとしては

f:id:tktknkyo:20171210103151p:plain

青色の点が外輪、赤色が内輪、で実際の描画はこの緑ので繋がったリングの形をしています(絵が下手で申し訳ない)

 

でこの数値を変えるということは、リングを太くしたり細くしたり
内輪が0になると、中心まで塗りつぶされます

f:id:tktknkyo:20171210103442g:plain

外輪がX軸2固定、内輪をX軸0→2に変化させた例

実際に白で描画されている範囲は、外輪から内輪の間なので

この二つが同じになると、一切描画されなくなります

この手段を使うと、輪っかが細くなりつつ消える、といった表現が可能になります

X軸のみ弄っています、じゃあY軸は?と

Y軸を動かすと、立体になりますその解説は少し下にて。

 

【中心比率】

言葉そのままだと思いますが、これは中心の位置を何処に持ってくるか?を設定します。

f:id:tktknkyo:20171210104137g:plainf:id:tktknkyo:20171210104156g:plain

左が中心比率0、右が中心比率1になります

便利ではありますが、0や1だと極端になりやすいので

平面で使う場合、自分は0.1~0.9程度をオススメしておきます。

なお、この中心比率もランダムやイージング指定が可能です。

 

【外輪色・中心色・内輪色】

最初にリングをした時点で、グラデーションがかかっていますが

これがなんでかというと、初期設定で、この外輪と内輪のαが0(完全透明)

なのが理由です

また、リング機能のこれらの色は、設定するとグラデーションを自動で描いてくれます

なので、中心のみαが255に設定するだけで、ちゃんとグラデーションが掛かってくれます

なお細かい調整をしたい場合は、これらの色と、中心比率を弄ってみるのもいいと思います。

 

【外輪・内輪による立体】

f:id:tktknkyo:20171210105008g:plain

このような形状を、簡単に作ることができます

このGIFでは、立体であるこをを解りやすくするために回しているだけで

本来は勝手に回ったりしないので、ご安心を。

f:id:tktknkyo:20171210105159p:plain

設定した数値はこのようになっております

中心比率は1にすると、極端になりやすいのですが

Y軸を動かして立体にする場合は、この方が見栄えが良い事が多いです。

f:id:tktknkyo:20171210105339g:plain

中心比率を0.5に変えるとこのようになります。

f:id:tktknkyo:20171210105824g:plain

中心比率を1から0にイージングで動かすと、このような動きに

能力強化などの、バフ系のエフェクトに使えそうな動きになります。

 

【ちょっと実用的っぽい内容】

 これ、以前Twitterにあげたやつなのですが、構造は単純なのでちょっとした解説を

f:id:tktknkyo:20171210110450p:plain

まず、使用テクスチャはこちらです、SD製です

まず、この一つの動きを作ります

f:id:tktknkyo:20171210110730g:plain

まずは、寿命を「20~40」

フェードインを5の、フェードアウトが10

 この二つで、寿命がランダムで、透明状態から、フェードインして、フェードアウトしていくと思います

f:id:tktknkyo:20171210110914p:plain

また、この上に向かう動きを中心比率で作ります

中心比率も、イージングにて動かします

Y軸を動かして立体にすると、中心比率で上下に動くような動きを作ることが可能です。

 

 

外に広がるような動きにしたいので

内輪の、Xを5にしましょう

f:id:tktknkyo:20171210111343g:plain

こうすると、広がりながら、上に動く動きになります

内輪より外輪の方が大きくなっていますが、基本的に

どちらが大きくても問題ない場合が多いです。

ただ、Y軸はいいのですが、X軸は極力マイナスとプラス数値の混合は止めてください

描画がおかしくなりやすいです。

f:id:tktknkyo:20171210111722p:plain

ここで、このリングのノードに親ノードを追加します

リングのノードを右クリックして、ノードの挿入をします

ノードの追加をすると、子にノードが追加され

ノードの挿入をすると、親にノードが追加されます。

最初の頃は慣れないと思いますが、エフェクト作っていると次第になれると思います。

f:id:tktknkyo:20171210112054p:plain

こうして、新しく作った親のノードの寿命を20に

位置の、Y軸をこのように、10からマイナス10に動かします。

f:id:tktknkyo:20171210112224p:plain

そして、リングで描画しているノードを、発生数の無限にチェックを入れて

位置への影響を生成時のみにします。

f:id:tktknkyo:20171210112539g:plain

この時点で、だいぶそれっぽくなります。

中心の白い□が邪魔であれば、親ノードの描画のチェックを外してやってください

 

まだまだ違和感あると思います、ここからは微調整していく感じなので、細かい部分は省きますが(こういう部分は、自分の目で確かめながら是非調整してやってください)

 

リング部分の、Z軸を180°ランダムにして

f:id:tktknkyo:20171210113041p:plain

内輪の動きをこんな感じにすると

f:id:tktknkyo:20171210113113g:plain

こんな感じに、割と自然な感じになるのかなと。

またこれ、立体故に、アングルによっていろんな用途に使えますので

3Dゲームに使う場合でも中々重宝するかなと。

ただ、実用性を考えるなら、リングの頂点数には注意です

多いほど綺麗になりますが、描画負担が上がります(そこまで影響大きいわけではないそうです)

また、このような形の場合、頂点数を多少少なくしても、結構破綻が見えないので

どの程度まで頂点数を落とすかは、実際のゲームの描画負担と相談して決めてやってください。

 

【Effekseer】描画「軌跡」の使い方

Effekseerの描画の一つである軌跡

ちょっと使い方が解りにくい描画なので、その辺の解説をしていこうかなと

今回の記事に限りませんが、ブログに書いていく内容としましては

過去自分が苦戦したりした内容をメインに書いていこうかと思います。

 

【そもそも軌跡で何が出来る?】

基本的には、湾曲orカーブさせた動きを作る場合に使うかと思います

軌跡を使った単純な例がこちら

 

f:id:tktknkyo:20171206154623g:plain

f:id:tktknkyo:20171206154835p:plain

使用テクスチャは、こんなありふれたテクスチャです

 

まず、どういう動きをさせているかというと

上から下に、公転させて螺旋させながら動かしています

 

 

【軌跡で描画させるには】

そもそも、軌跡でややこしい部分としまして

軌跡のノード単体では、何も描画されない事が上げられると思います

Root直下に、軌跡のノードを置いた場合、何も表示されません

とりあえずで軌跡を試そうとしても、そもそも何も表示されないのです

 

軌跡での描画としては、文章で説明する場合は発生地点同士を繋ぎ合わせる

という感じでしょうか

f:id:tktknkyo:20171206155313p:plain

この上のラインでのノード構成はこちら

軌跡で描画させるには、親子階層にする必要があります

これだけでは解りにくいので

軌跡にしてある部分を、スプライトに変更して、尚且つラインを一本にすると

f:id:tktknkyo:20171206155533g:plain

こうなります、カーブしながら粒子が落ちていっているのが解ります

なお、particle単体は一切動いていません

f:id:tktknkyo:20171206155731p:plain

動きとして、この矢印のように動くノードを作り

回転と位置の影響を、生成時のみ受けるようにして

生成数を無限にします

 

こうすることで、矢印のような動きをしながら、1フレーム毎にparticleが生成されまて、上のGIFのようになります

 

で、ここで軌跡って何をするの?という話になると

この連続で発生しているparticle同士を繋ぎます

f:id:tktknkyo:20171206160424p:plain

赤の粒子毎の位置を、軌跡にするとつなぎ合わせてくれて

一つの大きなラインとなります

その位置をつなぎ合わせてくれるので、湾曲したり、カーブした動きを作ることができます

 

【軌跡の制御あれこれ】

軌跡は、こういう湾曲したりする動きをつくりやすい利点はありますが

なんといっても、制御が面倒なのが事実です

なぜなら、軌跡一つのノードでは動きを付けることができない為です

更に、見た目が一本のラインでも発生数が多いのも、制御のしにくさを与えています

f:id:tktknkyo:20171206182040p:plain

この一本のカーブしたライン、この紫の○毎に、個別でparticleが発生しています

この例ですとparticle数が9となります

見た目が一本でも、このように発生数が多くなる=処理が重くなる

無数のラインが飛び散るようなエフェクトを作る際

スプライトより軌跡の方が見た目が綺麗になるからといって

軌跡で作るのは、描画負担からあまり望ましくありません

 

また、particle毎が個別に発生する分制御が大変な部分が他にもあり

f:id:tktknkyo:20171206182735p:plainf:id:tktknkyo:20171206182753p:plain

これは、軌跡のノードのフェードインの比較です

左がフェードイン0、右がフェードイン10

右側は、全体が薄めになってると思いますが、これはライン一本でフェードインではなく

発生ごとの節目毎にフェードイン処理が入ります

この仕様、どういう時に困るかといいますと

f:id:tktknkyo:20171206155731p:plain

例えば、軌跡でこのようなカーブを作りたい場合で

ライン自体が発生し始めの

f:id:tktknkyo:20171206183800p:plain

この部分は透明状態からゆっくり出したいが

f:id:tktknkyo:20171206183838p:plain

ラインの途中のこの部分では色をはっきり出したい場合

この場合、軌跡のノードのフェードインを使うと途中から発生した部分にもフェードインがかかってしまい、場合によってははっきり見えない

(なおこれは、フェードアウトの方もちょっと描画が汚くなりがちです)

 

これを解決するのが、ver1.3辺りから追加された色への影響です

考え方としては、位置への影響と特に変わりはありませんが

軌跡の場合は、軌跡の描画の仕様から相性がいいです

f:id:tktknkyo:20171206184539g:plainf:id:tktknkyo:20171206184607g:plain

この二つのGIFアニメ、左が軌跡のノードのフェードイン、フェードアウトで描画したもの

右が色の影響にて描画したもの

右のほうが、途中の色がクッキリとしていて、フェードアウトも自然にできていると思います

左はフェードアウトの部分が、短くなったのが残ってしまっています

 

で、この色の影響で何をしたのかというと

常に親のRGBαを、この軌跡自体に影響を与えることができるので

このライン一本全体のαを一括で制御する事ができます

このラインに使った色はFカーブでこのように指定しています

f:id:tktknkyo:20171206185412p:plain

最初の10Fでフェードインしつつ

最後の10Fでフェードイン

中間の10F~30F感はα255で、クッキリ出しています

この辺のカーブをどうするかは、そのエフェクトによると思います。

なお、この方法で変える場合の利点として

動いている途中で消したり、途中で途切れる描画も可能という点です

f:id:tktknkyo:20171206185850g:plain

 

軌跡に限らず、この色の影響の効果、ノード全体の色を一括で制御する事が出来るので

表現したい方法によっては便利な場合もあります、ただ普段はそこまで使われないかな?とは

軌跡もそうなのでが、ちょっと凝ったものを作りたいという場合には中々力を発揮するのかなとは。

 

最後に、軌跡は描画の関係上、カーブっぽく見えても、繋ぎ合わせているだけなので

カーブが激しい場合などは、カク付いて見えることがあります

f:id:tktknkyo:20171206190209p:plain

あまり極端過ぎる数値だと、このようになる場合があるので注意が必要です

逆に、かなり緩やかなカーブの場合

f:id:tktknkyo:20171206190327p:plain

この、生成時間を増やしてみるのも一つの手段です

これが高くなるほど、描画は荒くなりますが、発生数自体が少なくなるので、処理が軽くなります

単純に生成時間を1から2に変えると、発生数が半分になる為です。

 

 

【UE4】エフェクトにおけるマテリアル

UE4でエフェクトを作り出した時に、真っ先に思ったのが

「マテリアルって何?」という部分

この辺に付いて色々

UE4のカスケードにてエフェクトを作る時

Effekseerと違い、マテリアルによってエフェクトを作ることになります(Effekseerなどではテクスチャ)

で、マテリアルというのを知らなかった自分は色々検索したわけですよ

そうするとまず見るのが

「マテリアルは質感を設定するもの」

UE4では主にベースカラー、ラフネス、メタリックなどを使う」

「ベースカラーが色」

「ラフネスは表面の粗さを定義する」

「メタリックは金属かどうか」...

他にもノーマルマップとか色々ありますが

エフェクト作ろうとしている時に、それを見ても「え?」となる訳で

マテリアルとしての説明はそうなのですが、エフェクトにおいては、そこまで質感として使うことはないのでは?と

当然物によっては必要だとは思いますが、背景やメッシュに使うマテリアル程、そこまで重視されることは少ないでしょう

また、そうなってくるとマテリアルでエフェクトを作る意味は?質感とかは別にそこまで必要無いのでは?との疑問が出てきたりしました。

 

エフェクトにおけるマテリアルは、普通のマテリアルとは違った考え方だと思うので

UE4でエフェクト作ろうとする場合、最初ここに躓く人が自分以外にも居るのでは?と

 

エフェクトに使う場合のマテリアル、自分の中のイメージとしては

「色々な情報を持ったテクスチャ」

こういう風に考えています(あくまで自分の個人的な考え)

 

どういう情報を持てるのか?というのは、そこはマテリアル勉強してくると解ってくる内容かな?とは

タイリングやUV関係、複数のテクスチャを掛け合わせるなど、UE4のマテリアル自体でかなりの動き自体をつける事が出来ます

 

また、UE4の場合エフェクトに使うようのノードも存在しているので

SubstanceDesignerなどで作ったマテリアルをそのまま持ってくるのとでは、また違った事もできます

f:id:tktknkyo:20171205062907p:plain

最も短調と思われるエフェクト用のマテリアルの例

「particleColor」

このノードは、カスケードのRGBαの情報を持ちます

エフェクトにおいてこのノードは非常に重要で、このノードがないと、色を変えれません

Effekseerなどのツールでは、テクスチャを読み込み、RGBαを弄ると、読み込んだテクスチャの色が変わるのが普通だと思いますが

UE4の場合、このノードから色の情報を出力する結果になります

 

「Multply」

このノードは単純な掛け算です

0.5×2=1みたいな、ただそれだけです

シンプルなものほど、よく使うものです。

単純ですがかなり使う機会が多いかと思います、Mを押しながら左クリックでショートカットで配置できます

 

「TextureSample」

テクスチャを読み込むノードです

Tを押しながらクリックでショートカットですが

エディタ上に、テクスチャをドラッグ&ドロップすると、自動的に生成されます

なので、ノードを直接配置する機会は少ないかなと

 

簡単に言うと、この状態では、ほかのエフェクトツールなどで、テクスチャをそのまま使った状態と殆ど一緒です

 

以前自分がエフェクト用に作ったマテリアルがこちら

f:id:tktknkyo:20171205064143p:plain

長いので流石に全部は解説はしませんが、マテリアルで何が出来るか?の説明を

このマテリアルは、回転切りのようなエフェクト用に作ったものです

 

まず、左の黄色で囲ってあるノードは「Dynamic Parameter」(自分は略してDPって読んでます)といい

カスケードで設定した数値を、このマテリアルに持ってくることができます

 

次にその右側の緑で囲ってるノード(厳密にはマテリアル関数)は、テクスチャの角度を調整したりする事の出来るノードです

一番下のピンに読み込んだ数値によって、角度を変更させます

単体では角度を変更させるだけですが、時間ごとに数値が増えると、回転するようになります(1毎に360°で1周します)

なのでDPを使い、数値を0→1にすると回転します、この動きでエフェクト自体を動きを付けています

動きを付けるだけなら、Timeなどのノードでも良いのですが、DPを使う利点は、数値をカーブで指定することができる点です

このカーブはカスケード上で指定できます、実際の画面としてはこんな感じです

f:id:tktknkyo:20171205065354p:plain

 

一気に回転してから、後の回転を遅くする余韻をだす事で、自然で勢いのある動きにできます

 

最後の紫で囲った二つのテクスチャ

色々ノードが絡まってますが、この二つを乗算しています

単純にこの二つを乗算すると、このような結果に

f:id:tktknkyo:20171205065704p:plain

乗算する場合、簡単な考え方は

白の部分が残り、黒の部分が消えます

テクスチャのデータもすべて数値で扱われ、黒は0白は1になり

それらを乗算するからです

数字に1を掛けるとそのままになる=白の部分はそのまま

数字に.0を掛けると0になる=黒の部分は黒になる

 

白黒のグレースケールの場合基本的にはこのような考え方です

この例の場合、上のぐるぐるしてる画像から

下の画像の白い部分だけ切り取った形となります

 

 

で、この合成した形で回転させているわけですが

マテリアル自体を回転させる事はカスケード上でもできます

態々マテリアル上で動きを作った理由は

この二つのテクスチャの回転を逆回転にさせたかったのが理由です

f:id:tktknkyo:20171205065354p:plain

先ほどのこのカーブ

上に伸びているのと、下に伸びている二本がありますが、これは先ほどの二つのテクスチャを

逆回転させているのが理由です

こうした理由は「全体が回転するより、模様だけ逆回転した方が強そうに見えるのでは」

との自分の発想です

自分が勝手にこうした方が強そうだ、という本当かどうかは不明な事をやろうとしたのがキッカケです。

 

テクスチャではなく、マテリアルで作る利点というのが解ってもらえたら良いな、と思いました。

またエフェクト用のマテリアル関係の記事も書いていこうかと思います。

 

 

なお、これはゲームジャム中に作ったやつです、最終的なエフェクトとしてはこんな見た目になりました

【SD】テクスチャ作例「汎用テクスチャ」

SubstanceDesignerで、エフェクトに使うようなテクスチャ作っていきます

(使うノードは、基本ノードは名称を、それ以外のノードはサムネイルで表示します、基本ノード以外は、サムネイルのアイコンから探してください)

f:id:tktknkyo:20171204023024p:plainf:id:tktknkyo:20171204023457p:plainf:id:tktknkyo:20171204023057p:plainf:id:tktknkyo:20171204023525p:plain

 

とりあえずは、汎用的なエフェクト作ってる人だと、見たことはあると思われるようなものから。

黒背景にしてあるのは見やすくするためで、一番最後に黒背景を透明処理するやり方も載せます。

 

 

ますは、最初の粒子やglow非常に多数の用途がある●テクスチャです

f:id:tktknkyo:20171204022541p:plain

まずは、パターンにあるこのノードを配置して

Curvcを1にすると終了です、ただコレだけだと、応用効かないので

調整したりする項目を

f:id:tktknkyo:20171204024303p:plain

f:id:tktknkyo:20171204024338p:plain

Gradicntを操作する事で、中心の白い部分の幅が変わります

細かくエフェクトを作る場合には、必要になってきやすい部分かと思います

f:id:tktknkyo:20171204024657p:plain

また、ブレンドノードをで、二つの端子を繋ぎます

その後、ブレンドモードを乗算にすると

f:id:tktknkyo:20171204025817p:plain

こんな感じに、外側が薄くなります、不透明度の調整をすることで外側を微調整することができます

不透明度が1の場合、各数値を2乗するので、薄い部分がかなり薄く、濃い部分はあまり変わらないからこういう結果になります。

粒子系のテクスチャなら、この辺で殆どカバー出来ると思います。

 

 

f:id:tktknkyo:20171204023457p:plain

次はこのような、回して風の表現なんかに使えそうなテクスチャです

f:id:tktknkyo:20171204022454p:plain

今度もこのノードを使い

Curveを1に、Gradientを0.05

このノードをトランスフォーム2Dに繋ぎ

オフセットのYを-0.05

その後、タイリングの処理を切ります

f:id:tktknkyo:20171204030737p:plain

上の方にある、タイリングモードをクリックすると項目が出てくるのでここを絶対

その後、タイリングモードの下の部分を変えれるようになるので、ここをタイリングなしに

f:id:tktknkyo:20171204030936p:plain

この時点で、恐らくこうなってると思います

これを、ブレンド減算します

f:id:tktknkyo:20171204031041p:plain

これにて完成です、●を二つ用意して、片方だけずらして減算で削って作ってます。

 

 

f:id:tktknkyo:20171204023057p:plain

次はこんなのです、用途としては主に余韻や、歪みと合わせて使うことが多そうな。

f:id:tktknkyo:20171204031807p:plain

ノード構成としてはこんな感じ

f:id:tktknkyo:20171204022541p:plain

円状作るまでは上と同様

その後、トランスフォーム2Dに繋ぎ

高さを10%に(数値に10を入れてエンターでOKです

タイリング処理がされているので、タイリングを切ります、これで細長い一本の筋になったはずです。

f:id:tktknkyo:20171204032046p:plain

続いてトランスフォームにある、このノードを繋ぎます。

今回の例ではTileを3にすると、中心に小さいのが一つだけでます

本来はタイリング処理がされるのですが、トランスフォーム2Dでタイリングを切っていて、それを引き継いでいる状態なので

今度は、タイリング処理を水平方向にタイリングにします、そうすると、横に3本並ぶはずです

f:id:tktknkyo:20171204032350p:plain

続いてトランスフォームにある、このノードを繋ぎます。

これはいわゆる極座標するようなノードです

ただ繋ぐだけで

f:id:tktknkyo:20171204031807p:plain

この形になっているかと思います。

 

調整しやすい箇所としては

トランスフォーム2Dの、高さや幅、ここを変更すると、ライン毎の長さや太さが変化します

f:id:tktknkyo:20171204032046p:plain

このノードのTileは、ラインの数なので、これも使う用途によって数値は変えていけば良いかと思います

オフセットのYを変えると、リングの大きさが変化します、ただ小さい数値にしようとすると二重になってしまうので注意が必要です。

これは、座標を変えたあとにある極座標の処理の影響でこうなっています。

 

f:id:tktknkyo:20171204023525p:plain

最後にこちら、光ってる表現に使ったりする、黒い部分多いので無駄が多いですが、そこはご了承を...

f:id:tktknkyo:20171204033055p:plain

ノード構成はこうなります

f:id:tktknkyo:20171204033140p:plain

パターンにあるこのノードを配置します

Branchesを4にします

このノードを複製して、複製したノードを

f:id:tktknkyo:20171204032046p:plain

トランスフォームのこのノードに繋ぎ

角度を45

この二つのノードをブレンドノードに繋ぎます

ブレンドモードはScreenをオススメしますが、最大(明)でもいいかなと、これは好みに分かれそうかと思います

これで完成すると思います。

 

最後に、グレースケールのノードの、黒部分を透明処理する方法

f:id:tktknkyo:20171204033700p:plain

ノードツリーはこんな感じ。

均一カラーをだして、カラースケールにしてRGBを255(0~1の表示なら1)

f:id:tktknkyo:20171204033813p:plain

チャンネルのこのノードを配置し、先ほどのカラースケールの白を上のピンに

グレースケールの星型を下のピンに接続すると、黒い部分が透明処理されます。