moyasiエフェクト館

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


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

【GamySynth】風魔法の効果音を作ってみる

f:id:tktknkyo:20191022180549p:plain

Verは2019.2です

 

【初めに】

この記事は

 

tktknkyo.hatenadiary.jp

 

この記事の続きの内容で

今回は水部分のを作っていきます。

 

【GameSynth】

 

f:id:tktknkyo:20191022180549p:plain

今回割とシンプルです。

 

f:id:tktknkyo:20191022182128p:plain

このWindのノードが非常に便利です

 

ただ、このWindのノード初期状態では、音量がかなり小さく

音が鳴り始めるまでに時間が掛かるので、そこは少し注意が必要かもしれません

比較的に早い風や遅い風

低音や高音などの調整のパラメータもあるので、このノードで比較的に調整できる部分は多いです

 

上から3番目のFluctuationを1にすると、これで音自体の確認は比較的にしやすくなるともいます。

 

下の方にあるHigh、Mid、Lowはそれぞれ高音、中音、低音

みたいなイメージで調整していくと、調整がしやすいと思います。

 

f:id:tktknkyo:20191022183027p:plain

その後、Noise、Granular Noiseを使い、音を少しいじっていきます。

 

メインはWindの方なので、こちらはそこまで目立たないようにしておきます。

 

f:id:tktknkyo:20191022183238p:plain

最後にEnvelopeとGainで音量のフェードイン、フェードアウトを追加して出力します。

また、ここのフェードインとフェードアウトを入れてないものも、同時に出力しておきます。

 

 

UE4

 

f:id:tktknkyo:20191022183554p:plain

Mind_5Loop

という5秒で切った音声と

Wind_Min

というフェードインとフェードアウトを最後に追加したものを読み込みます。

 

Loopの方は、最初の部分の音がどうしても小さくなっています。

WIndで作るとこのようになりやすいようです。

 

f:id:tktknkyo:20191022184016p:plain

最終的なサウンドキューの中身はこうなりました。

 

上の枠が、発生時の音

下の枠が、大きい竜巻が出たときの音となります。

 

 

f:id:tktknkyo:20191022184144p:plain

上の枠が二つに今回分離してます。

今回で比較的に苦労した部分になります。

上の赤枠が、最初の予兆の小さい風部分の音で

下の赤枠が、予兆とメイン部分の音の間を繋ぐパーツとなります。

 

無音、もしくは非常に音の小さい部分が効果音でなってしまったので。

今回はこのような形で調整しています。

 

UE4に持って行く時に、フェードインとフェードアウトは入れてはいるものの

突然再生するとどうしても違和感が出てきやすいので

今回は、このような形で、間に音を埋め込むように調整しています。

 

f:id:tktknkyo:20191022184742p:plain

こちらのメインの部分となる音に関しては

 

f:id:tktknkyo:20191022184838p:plain

Enveloperを使い、緩やかにフェードアウトするように調整しています。

フェードインが比較的に急になったので、この部分をほかの既になっている音と被せて違和感が出ないように調整しています。

 

 

今回はここまでになります。効果音はまだ慣れてない部分が多いですが。

少しづつ記事は書いていこうかと思います。

 

 

 

【GameSynth】水魔法の効果音を作ってみる

f:id:tktknkyo:20191018134422p:plain


Verは2019.2です

 

【初めに】

この記事は

 

tktknkyo.hatenadiary.jp

 

この記事の続きの内容で

今回は水部分のを作っていきます。

 

【GameSynth】

 

f:id:tktknkyo:20191018134811p:plain

サムネイルにもある、これが全体の完成図となりますが

この赤枠の部分は、プリセットをそのまま使っています。

なので左部分の内容となります。

 

f:id:tktknkyo:20191018135200p:plain

 

水音とノイズを単純に混ぜているような構成になります。

f:id:tktknkyo:20191018140119p:plain

左から、Gooは水道から少しづつ水が流れる音。

という感じでしょうか

メリハリのある様な、音を追加するのに使っています

 

今回Clockでトリガーを出して、ある程度連続的に音が出るようしています。

今回はGooノードの音が比較的長めなので、そこまで影響こそありませんが。

比較的に目立ってきやすい音でもあるので。再生し続けるのではなく。

流したり切ったり、というのを不規則に制御ができるようにはなっています。

 

f:id:tktknkyo:20191018140650p:plain

Rainは雨が降り注ぐような音になっています。

また、比較的にパラメータ数が多いです。

今回作りたいのは、水の音ではありますが、雨の音ではないので。

デフォルトのままだと違和感がどうしても強いので、波のような音になるように。色々弄って調整していきます。

今回は、ここが最も大元となる要素になります。

 

f:id:tktknkyo:20191018141135p:plain

次のHailも比較的にパラメータが多めです

雹の音のようですが。Gooと同じような用途で今回は入れています。

ただGooとは違い、低音でそこまで目立たないようにはします。

 

f:id:tktknkyo:20191018141506p:plain

最後に、GranularNoiseとNoise。

この二つは比較的に使いやすいので、このような音を作る際は、とりあえずでも入れておくのが良いと思います。

 

f:id:tktknkyo:20191018141822p:plain

後は単純にMixerで混ぜます。

最後にGainとEnvelopeをつかって、音のフェードインとフェードアウトを作って終了です。

また、今回UE4上で加工もするので

EnvelopeとGainを入れず、5秒程の、長い効果音もインポートしておきます。

 

UE4

 

f:id:tktknkyo:20191018142105p:plain

Waterという、短い効果音と

Water_Loopという、途切れのない効果音を入れます。

これは、エフェクトの長さに応じて、UE4上で操作できるようにするためです。

 

f:id:tktknkyo:20191018142420p:plain

UE4側ではこのようになっています。

 

音の分け方としては

・最初の予兆の水が出るところ

・水が延々と出続けるところ

・中心の柱が拡大するところ

・最後の水が落ちる余韻のところ

 

主に4つに分けています。

 

f:id:tktknkyo:20191018142625p:plain

予兆の部分はシンプルに、ピッチと音量を変えたのを混ぜて単純に再生しています。

 

f:id:tktknkyo:20191018142725p:plain

ループの部分は、UE4側で音の長さをあるていど変えれるようにしています。

 

f:id:tktknkyo:20191018142803p:plain

UE4側にもEnvelopeがあります、こちらでは、単体で音量とピッチを変更することができるので。

エフェクトに合わせてここを調整していきます。

 

f:id:tktknkyo:20191018142950p:plain

拡大する部分、こちらにもEnvelopeを使っています。

そのままでは制御しにくいところを、少し弄っています。

 

f:id:tktknkyo:20191018143110p:plain

音量、ピッチともに調整しています。

 

 

f:id:tktknkyo:20191018143216p:plain

最後の余韻部分の音は、音量とピッチの振幅を増やしているだけです

Envelopeも使っていますが、拡大する部分と同じものを使っています。

 

音のなるタイミングの調整は、それぞれDelayで調整しています。

一つのキューにまとめる場合はこの手段が手軽かなと。

 

アニメーションシーケンスやモンタージュで鳴らす場合は。

そちらで制御するのもありだとは思いますが。あまり多くても大変かな、と思う部分はありますが。

逆にサウンドキューでタイミングまで調整すると、モーション毎にタイミングをズラすとかが、面倒になってきます...

 

今回はここまでとなります、次は風の音の記事を書きます。

 

【GameSynth】火魔法の効果音を作ってみる

f:id:tktknkyo:20191012224514p:plain

Verは2019.2です

 

【初めに】

 

今回は、Modularモデルを使ったちょっとした効果音の作り方みたいなものを

とはいえ、まだまだ慣れてない部分はどうしても多いので

内容的にはかなり初歩的な内容になってくるかなとは。

また2019.2のVerで色々新規に増えたノードが中々便利なので、その辺使うと楽な部分は結構多かったりします。

 

どんな効果音作ったか?に関しては、こちらで確認してください。

また、ある程度UE4側で制御している部分もあります。 

 

今回は火の部分です

 

【GameSynthでの作業】

f:id:tktknkyo:20191012224514p:plain

 

まずは火です

 

f:id:tktknkyo:20191012224627p:plain

そして、このFireという、かなりダイレクトなノードがあり、これが非常に便利です。

 

今回は、左がメインの部分、右側が、余韻のような部分の音となっています。

 

f:id:tktknkyo:20191012224833p:plain

パラメータとしては大体こんな感じになっており。

Fireで、ある程度パラメータを弄りながら、確認しつつ

ある程度音が合いそうなのをまずは探します。

 

また、デフォルトでは時間は∞になってます

今回は弄っていますが、ここは単体ではデフォルトのままでも、問題なかったりします。

 

フェードインとフェードアウトを作る場合、とりあえずやりやすいのが、EnvelopeとGainです。

 

f:id:tktknkyo:20191012225114p:plain

Envelopeはデフォルトの時点で、このようなカーブが既に出来ています。

デフォルトのこの曲線自体が、比較的に使いやすいので。

そこまで弄る必要性は少ないかと思います。

下のDurationが時間になり、デフォルトだと1秒で短いので

これは必要に応じて頻繁に変えることになるかなと。

 

Fireで時間を変えることはできますが、音が自然には切れてくれないので

このような方法で切ったりします、その場合、Fireノード自体の時間はそこまで重視しなくても問題は少ないかと思います。

 

f:id:tktknkyo:20191012225631p:plain

右の余韻部分はこのようになっています。

 

f:id:tktknkyo:20191012225744p:plain

上のMixerで、この三つの音源を混ぜてます

今回はWindも入れてますが、GranularNoise、これは以前のVerからもありましたが、比較的に使い勝手がいいので、とりあえず、で入れておくのも良いと思います。

 

音源のノイズ系は、ある程度Mixerで纏めて置くと、ノイズ同士の混ざり合いなどが確認しやすくて良いのかなと思います。

 

f:id:tktknkyo:20191012230152p:plain

後半部分は、先程もあったGainで音量調整です
その下のTimeShifterは音の発生を遅らせます。

 

GameSynth内でタイミングを調整する場合は、これでずらします。

バラにして、エンジン側で調整する方が、使い勝手は良さそうですが...

 

UE4への組み込み】

 

f:id:tktknkyo:20191012230516p:plain

 

UE4側では、読み込んだデータから、サウンドキューを作ります。

 

f:id:tktknkyo:20191012230741p:plain

三つに分かれているModulatorは、音量やピッチの調整をするノードです。

最小と最大があるので、振幅を出すこともできます。

 

そのまま鳴らすのも当然出来ますが。個人的には、ピッチや音量の幅をある程度持たせたものを、混ぜています。

 

音量はそれぞれ0.95~1.05

ピッチは

0.85~0.95

0.95~1.05

1.15~1.25

この三種類を使っています。

 

その後のMixerは複数の音を混ぜる役割です。

 

インプットを追加で増やせるので、ピッチを5段階とかにさらに分けて、合成というのもできます。

 

f:id:tktknkyo:20191012231245p:plain

最後のModulationは、全体としての調整になります。

今回は、出力した時点で、効果音が余りにも小さかったので、ここで一括して大きくしています。

 

全体の大きさ調整は、一括して調整したほうが楽なので、基本的に後になるようにしています。

 

f:id:tktknkyo:20191012231557p:plain

Mixerは、音をちょっと変えたのを混ぜる他に。

要素毎をバラにしてUE4に持ってきて。

最後に要素毎を合成する手段にもよく使います。

 

 

 

今回はここまでとなります。水と風も纏めようかなとは思いましたが

一つの記事が長くなりそうなので、ここは分けて記事に書きたいと思います。

 

【UE4】TextureSampleでUVアニメーションさせる

 

f:id:tktknkyo:20190920150613p:plain

Verは4.23です

 

【初めに】

 

エフェクト用のマテリアルで、時々使う機能が

UVアニメーションを使ったマテリアル。

 

f:id:tktknkyo:20190920135026p:plain

基本はこのような、UVアニメーション専用のノードを使います。

 

横の枚数や縦の枚数、どのようにアニメーションさせるかなどは

カスケードやNiagara側から制御する事になるのですが。

Niagaraの場合、メッシュタイプでは、今のVerでは恐らく対応してなさそう?なので。

 

TextureSampleを使って、自分でここの計算をすることで。

本来は出来ないUVアニメーションを自分で実装してみよう、という内容です。

 こういうのが出来ます。

 

 

 

 

【横のみのアニメーションを作ります】

 

基本的に、TextureSampleにある、UVsの接続にいろいろつないでいって動かすようにします。

この接続部分に関する部分は

tktknkyo.hatenadiary.jp

この、極座標の処理組んだ時の記事で書いてあるので。

原理的なところから気になる場合は、こちらを確認してみてください。

 

f:id:tktknkyo:20190920135939p:plain

まずは、この横だけのものから、処理を組んでいきます。



f:id:tktknkyo:20190920140216p:plain

左の1/4だけ映す場合はこう、非常に単純

X(R)を0~0.25が映る様にすればいいだけです。

 

ただ、この場合この0.25どこから持ってくるの?となってしまうので

f:id:tktknkyo:20190920140620p:plain

ちゃんとこんな感じにしておきましょう。

テクスチャが横に4枚あるので、4。

分割数は、元の使うテクスチャで変わってくるので

ここはインスタンスで変更できるようにしておくと、便利だと思います。

 

ただ、今回の本題は「UVアニメーション」なので

そちらの処理を組んでいきましょう。

 

原理的な話だと、Rが0~0.25表示になっている部分が

0.25~0.5

0.5~0.75

0.75~1

この様に変わってくれれば良いわけです。

 

f:id:tktknkyo:20190920140909p:plain

ここで非常に便利なCeilというノードが

小数点の切り上げの処理をしてくれます。

つまり、1,2,3,4...と段階的に数値が上がっていきます

それを4で割るだけで

0.25,0.5,0.75,1と段階的に数値が上がっていきます。

 

f:id:tktknkyo:20190920141537p:plain

今はTimeで代用しますが、グラフとしてはこんな感じになります。

Timeからの数値を切り上げて

タイリング数で割ってあげます

その数値を加算すれば完成です。

 

横の分割数の数値を使っているので。ここが例えば8になれば

Ceilからでてきた整数も8で割ってから加算されるので、綺麗な数値になります。

 

f:id:tktknkyo:20190920141838p:plain

分割数が多いほど、遅くなるのであれば

その分割数で乗算してあげると

Timeの数値が0~1で、分割数に関係なく、最初から最後のコマまでアニメーションされます。

 

横だけなら、これで完成です。

最後に操作しやすいように、DynamicParameterをつないでおきましょう。

 

【縦と横に拡張します】

 

f:id:tktknkyo:20190920142148p:plain

次は、縦と横のあるものを作ります。


原理的には一緒ですが、若干ややこしくはなります。

 

f:id:tktknkyo:20190920142757p:plain

まず、1コマ毎の更新の速度が、縦と横を掛けたものになります。

1秒で全てのコマを再生するなら

1コマ辺1秒/(横*縦)となります、今回は8*4の32です。

 

この速度で、横軸を行ったり来たりします。

縦の分割が4なので、1秒の間に、横を左端から右端に4往復します。

 

f:id:tktknkyo:20190920143813p:plain

若干複雑にはなりますが。

横の動きと同じように縦の動きを作るだけになります。

 

ただ、この状態で再生すると、少しだけズレが出てしまいます。

 

f:id:tktknkyo:20190920144727p:plain

時間から横のコマが変わるパターンと、横の変わるコマのパターンが少しずれているのが理由なので

縦軸が変わる時間を、少しだけこのようにズラしてあげると綺麗になります。

 

1/32の32は、当然全体のコマ数です

 

 

f:id:tktknkyo:20190920145353p:plain

 

最終的には、DynamicParameterも入れるのを想定して、おそらくこんな感じになるかなと

同じパラメータを流用したりで、結構ごちゃごちゃになります...

 

 

これを使えば、UVアニメーションとタイリングの併用も...

多分出来ると思います!

これはまた実際に試した時にでも記事に書くかなとは思います。

 

【Effekseer】親子階層と角度で位置を制御、リボンで斬撃ブラーを作る

 

 

f:id:tktknkyo:20190918223937p:plain

Verは1.42fとなります。

 

【初めに】

tktknkyo.hatenadiary.jp

 

この記事の続きのような内容となります。

位置の制御から、リボンを使って斬撃ブラー作る所まで。

サムネイルはあまり変わってはいませんが

角度が大きく変わっています。

この辺はリボンで作る利点という部分にもなってきます。

 

今回Effekseerの記事では比較的に長いです、ご了承ください。

 

 

【位置の制御】

 

f:id:tktknkyo:20190918210306g:plain

前の記事の時点で、3Dモデルを回転させたものがこんな感じであるとします。

 

f:id:tktknkyo:20190918210436p:plain

このモデルを、全く角度を弄らない場合

剣の持ち手から先端は、Y軸の+方向を向いています。

この見方としては、XYZの軸がそれぞれRGB

(解りやすくするため、座標はX+の方向にずらしています)

 

 

f:id:tktknkyo:20190918211013p:plain

では、この回転子という剣のノードの子に

粒子というノードを作ります。

 

f:id:tktknkyo:20190918211509p:plain

 

剣の刃の位置にある程度Y軸が合うように、座標を設定すると

剣の子にあるので、刃の位置と大体合うような位置になります。

 

f:id:tktknkyo:20190918211817g:plain

この状態で、剣を回すと、位置が追従してくるようになります。

角度や親子階層を使っての位置の制御は、こんな感じになります。

 

f:id:tktknkyo:20190918212002g:plain

また、粒子に対して

位置への影響や、角度への影響などを、生成時のみにし

発生し続けるようになると

このような生成のされ方をします。

 

f:id:tktknkyo:20190918212426g:plain

これしてどうするの?

って思われるかもしれないので。

一応エフェクトとしてのそれっぽい例としてはこんな感じのを。

先ほどの粒子のノードを

発生位置に使って、無差別な方向に少しとばしただけです。

 

粒子のノードの子にノードを作り

発生位置は、親である粒子ノードから持ってきます。

 

【斬撃ブラーを作る】

 

f:id:tktknkyo:20190917223803p:plain

前回の記事のサムネイルである、こういうやつですね。

 

リボンで作る前に、まずは軌跡で作ってからにします。

リボンと軌跡の違いは、途中で説明を入れていきます。

 

まず、なぜ軌跡からかというと。

こちらのほうが単純で、汎用性自体も恐らく高いので。

 

 

f:id:tktknkyo:20190918213841g:plain

まずはこちらから

オレンジの斬撃ブラーの他に

水色の粒子があるのが見えると思います。

 

これが、軌跡を発生させるため位置となります。

単純に剣の刃の位置に発生するようにしているだけです。

 

f:id:tktknkyo:20190918214354p:plain

この水色の発生位置が、このノードツリーでいう「粒子」になります。

このノードの子にノードを新しく作り。

 

描画をスプライトから、軌跡に変更します。

 

ただ、この時点では何も起こりません。

f:id:tktknkyo:20190918214528p:plain

次に、発生数を無限

位置への影響と、回転への影響を、「生成時のみ」に設定します。

 

 

f:id:tktknkyo:20190918214640g:plain

そうすると、テクスチャを一切入れてない場合は、こんな感じで

軌跡が生成されていると思います。

 

f:id:tktknkyo:20190918214752p:plain

こんな感じのラインが、大量に生成されています。

 

これに対して、粒子のテクスチャ、そして色をある程度つけたものを入れたのが

f:id:tktknkyo:20190917223803p:plain

いわゆる、こういう斬撃ブラーになります。

 

自分で実際に作った人であれば、ここで違和感というか

こういう用途には合わない、と感じた人もいると思います。

 

それを解りやすい作りをすると。

 

f:id:tktknkyo:20190918215631g:plain

例えば、こんな感じに、発生数は増やしたくないから

拡大をあげたものを、貼り付けたと想定します。

 

この時点だと、そこまでおかしい部分は見えにくいですが

 

 

f:id:tktknkyo:20190918215804g:plain

角度を変えると、かなり違和感出てくると思います。

 

f:id:tktknkyo:20190918220007p:plain

こうやって見ると、剣の刃の位置とズレているのが解りやすいと思います。

 

 

f:id:tktknkyo:20190918220214p:plainf:id:tktknkyo:20190918220245p:plain

 

テクスチャ変えると、どういう理由なのかが解りやすいと思います。

斬撃ブラーの場合、剣を横に着る場合は、それに合わせて細く見えて欲しいのですが

そこが分厚く見えています。

 

ビルボード表示のような感じで。

どの角度から見ても、こちらを向くような表示になります。

今回のような例はありますが

基本的には、こちらのほうが自然に見える場合が多いです。

 

今回のような場合は、軌跡ではなく「リボン」を使います。

ただ、こちらの制御は結構複雑なので注意です。

 

 

f:id:tktknkyo:20190918221612p:plain

まず、発生位置の基準を決めます。

粒子のノードをそのまま使います。

 

この子でリボンを使ってもいいのですが、制御がしにくいので

もう一つ追加します

f:id:tktknkyo:20190918222010p:plain

それが、下にある発生調整というノードです。

 

スプライトで、配置方法はビルボードではなく「固定」で配置します。

 

f:id:tktknkyo:20190918222351p:plain

f:id:tktknkyo:20190918222404p:plain

 

そしてこんな感じに、斬撃ブラーを発生させたい角度と大きさなどを設定します。

 

あとは、この子にノードを作り、リボンに設定

軌跡と同じく

発生数を無限にし、位置への影響と回転への影響は「生成時のみ」

にすると。

 

f:id:tktknkyo:20190918222649g:plain

角度を倒すと、それに従って倒れるような描画になります。

 

f:id:tktknkyo:20190918222826p:plain

上から見ても比較的綺麗に。

 

 

f:id:tktknkyo:20190918223747g:plain

いつものように、テクスチャや色を指定してあげると、こんな感じになります。

 

今回はここまでとなります。

Effekseerの記事も、何かネタが思いつけば書いていきたいです。

【Effekseer】親子階層を使って回転を制御する

f:id:tktknkyo:20190917223803p:plain

Verは1.42fです

 

【初めに】

 

f:id:tktknkyo:20190917215249g:plain

ちょっとライティングオカシイところがありますが。

回転という事で、この剣を元に説明していこうかなと。

なぜ剣なのか?はあまり気にしなくても大丈夫です。

剣が好きだからです。

 

f:id:tktknkyo:20190917215633p:plain

このモデル、原点は持ち手の先端部分にあります。

ここを基準に回るので

エフェクト用のモデルとして出す場合も、原点はエフェクトを作りやすい位置に置いておくと便利です。

 

【まずは基本的な回転】

 

f:id:tktknkyo:20190917215249g:plain

f:id:tktknkyo:20190917215823g:plain

f:id:tktknkyo:20190917220107g:plain

XかYかZ

それぞれ1回転させるとこんな感じになります。

どれも、回ってます。

では、ちょっと傾けた状態で回したい。

となった場合に、

 

f:id:tktknkyo:20190917220453p:plain

このイージングなどだけで回すのは、少々難しいです。

 

f:id:tktknkyo:20190917220636p:plain

また、任意軸などで動かすことも可能なので。

ここで上手く制御出来る人であれば、これ単体でも問題ないとは思いますが。

今回は、親子階層を使って、ここの回転を制御していきます。

 

 

【親子階層を使って回す】

 

f:id:tktknkyo:20190917221359p:plain

親子階層はシンプルに、これだけでとりあえずOKです。

 

f:id:tktknkyo:20190917220107g:plain

例えば、この動きをしている、「回転子」

に対して

親でXYZそれぞれ60度変更してあげると

 

f:id:tktknkyo:20190917221542g:plain

剣で切る様な回り方を維持しつつ

角度が変わってくれます。

 

子の方の回転で、どのような回転を与えたいかを入れてから

親を回転させると。

今回のような、剣で切る様な動きを維持したまま回ってくれます。

 

とはいえ、このままだと、まだ角度を動かすたびに

動き確認するのが面倒、となってくる場合もあると思います。

 

f:id:tktknkyo:20190917222010p:plain

その場合は、この様に、回すのではなく、乱数を与えて確認しやすくしましょう。

例えばZを0~360度回す場合であれば、この様にすると...

 

f:id:tktknkyo:20190917222115p:plain

このようになります。

見た目は中々酷いですが、これであれば、角度の確認がしやすくなると思います。

 

f:id:tktknkyo:20190917222238g:plain

親の方の、角度を一つだけ動かすとこんな感じになります。

これを使えば、どういう角度がいいかが想像できたら

それを数値を動かして調整していくだけになります。

 

f:id:tktknkyo:20190917223308g:plain

あとは、いい感じの速度とか角度とかを指定してあげて

 

f:id:tktknkyo:20190917223357g:plain

ここに軌跡入れてあげるだけで、剣を振って、その時に出てくる斬撃ブラー

っぽいものにはなります。

 

 

f:id:tktknkyo:20190917223524p:plain

剣の刃先の部分を発生位置にして、軌跡引っ張るだけです。

 

tktknkyo.hatenadiary.jp

 

古いVerでの解説ですが、軌跡そのものに関してはこっちの記事にて。

 

ただ、軌跡は位置の制御と絡んでくるので、細かくはまた別の記事で書きます。

 

【Niagara】Niagara用のアニメーション通知を自作する

f:id:tktknkyo:20190916181156p:plain

Verは4.23です

 

【初めに】

 

 

少し前のVerから、漸くNiagaraにも

アニメーション通知から、エフェクト呼び出すことが出来るようになりました。

 

f:id:tktknkyo:20190916181459p:plain

この「Play Niagara Particle Effct」

これがNiagaraのエフェクトを発生させるアニメーション通知となります。

 

f:id:tktknkyo:20190916182159p:plain

設定としては、こんな感じになっています。

カスケードにあったものと基本変わらないと思います。

 

ただ、Niagaraの場合はデータの作り方によっては

ここで角度や座標などを変えても、変わってくれない場合があります。

 

tktknkyo.hatenadiary.jp

 

その辺に関しては、こちらの記事を参考にしてください。

 

この場合、この通知では動かすことが出来ない、という事になります。

また、ここの数値だけでは制御しにくい。

というエフェクトの場合もあると思うので。

その対処のために、この通知自体を作ろう、という内容になります。

 

 

【アニメーション通知を作る】

 

f:id:tktknkyo:20190916183054p:plain

ブループリントの作成画面から、AnimNotifyを選択して、ブループリントを作成します。

 

f:id:tktknkyo:20190916183218p:plain

中に入り、左上にある、オーバーライドから

Received Notifyを選択します。

 

f:id:tktknkyo:20190916183311p:plain

すると、この二つのノードが作られたグラフが作られます。

 

f:id:tktknkyo:20190916183456p:plain

例えば、とりあえずこの様に、Niagaraのエフェクトを発生させる処理を組みます。

 

f:id:tktknkyo:20190916183617p:plain

(アセットを作った時点で、アニメーション通知に追加できるように自動でなります)

そして、今回作ったアセットを追加すると(名前はAnim_Testにしてます)

 

f:id:tktknkyo:20190916183757p:plain

それだけで、アニメーションの画面でエフェクトが再生されます。

 

 

単純に発生させるだけならこれだけで可能なので

ここから使いやすいように、調整していきます。

 

【通知をカスタムする】

 

まずは、再生するエフェクトを選択できるようにしましょう。

f:id:tktknkyo:20190916184505p:plain

 

変数作れば良いだけなのですが。

型がややこしい場合は

System Templateからピンを引っ張ってきて、その先で変数へ昇格

をしてあげると、自動で型を選んでくれるので非常に楽です。

 

f:id:tktknkyo:20190916184751p:plain

また、アニメーション側から設定できるようにするには

変数の右にあるボタンをクリックするなどで、インスタンス編集可能にする必要があります。

これをしておかないと、変数を作っても、アニメーションの画面から編集する事ができなくなってしまいます。

 

f:id:tktknkyo:20190916185123p:plain

キャラそのものの座標などが欲しい場合は

GetWorld系のノードを、MeshCompと接続して、繋ぎます。

 

f:id:tktknkyo:20190916185613p:plain

Soketから指定する場合はこんな感じでしょうか...?

自分自身はSoketから指定するのが、あまり解っていないので

間違ってたらごめんなさい。

 

f:id:tktknkyo:20190916185818p:plain

MeshCompの出力からは、Skeletal Mesh Component Object Reference

が出力されているようです。

下のAnimationはまんま再生するアニメーションのようです。

 

 

f:id:tktknkyo:20190916190633p:plain

具体的にどう使うのか?という部分に関しては

エフェクトそのものをどう作るのかに掛かってくると思いますが。

個人的には、この様に、自分がそれぞれ制御しやすいようになるように

Niagaraの中で直接動かせるようなものを入れています。

 

f:id:tktknkyo:20190916191058p:plain

イメージとしては、エフェクト用のマクロ作るようなイメージ...

でいいのかなとは思います。

 

 

f:id:tktknkyo:20190916191326p:plain

例えばですが、この様な大量のパーティクルが飛び散るエフェクトであれば

 

f:id:tktknkyo:20190916191539p:plain

発生数と乗算してあげることで。

同じエフェクトでも、アニメーション毎に発生するパーティクルの数を増やしたり減らしたり、という事が可能です。

ただし、デフォルトではUser.系のデータは0の数値が入ってくるようなので

乗算をする場合は、1を加算した数値などを乗算すると解りやすいと思います。

 

煙などのパーティクルであれば。ここを分ける事により

全体の大きさだけでなく、Particle.SpriteSizeと乗算してパーティクル単体の大きさを変えたり。

Particle.Velocityと乗算して、速度だけを変えたりする事もできます。

特に砂埃などでは、普通に走ってるだけだと発生数少ないが

地面に叩きつけられたモーションでは発生数を増やす...という事も出来るようになります。