アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE4/UE5】FulidNinjaを触ってみよう(応用編)

FulidNinjaを応用して使おう(*'ω'*)

今回はFulidNinjaを応用してNiagaraの作例だったりを、

紹介していこうと思います。

実際に紹介するのは下のTwitterで投稿したものになります。

※UE5.0.2で説明しています。

Niagaraの細かい説明はしないのでご注意ください。

※説明の誤りや不明瞭な説明も多々あるかもしれませんがご了承ください・・・

流れのデータをNiagaraで応用する

実際にFluidNinjaのデータを元に作成していきます。

まずはFluidNinjaのプロジェクトを作成します。

FluidNinjaのプロジェクトの作成やアニメーション画像の出力は、

下記リンクのページで紹介しているのでご確認ください。

一応おさらいで今回も画像を出力するところから説明します。

出力したいエフェクトをFluidNinjaのプロジェクト側から作成します。

そしたら①の動作保存ボタンを押します。

最後に③の領域一番左のPNGボタンを押してアルファと流れの画像が出力されます。

注意点としてFluidConfigという項目のExternalSavePathで指定されたフォルダに、

出力されるのでご注意ください。

PNG画像の出力先

続いてNiagaraの方で使用するスクリプト処理を移行するようにします。

FluidNinja → Core → Niagara フォルダ内のNiagaraDynamicInputScriptを移行して、

別プロジェクトに移動する作業を行います。

NiagaraDynamicInputScriptのデータをコピーする

続いてNiagaraのマテリアルを追加します。

FluidNinja → Core → Niagara → DefaultAssets内にある、

M_SpriteMaterialTransparentマテリアルを移行します。

指定マテリアルの移行

上記の情報がそろったらNiagaraSystemを作成していきます。

コンテンツブラウザを右クリックしてNiagaraSystemを作成します。

こちらのNiagaraEmitterについてはEmptyから作成していきます。

NiagaraEmitterEmptyの処理

これで完了したら実際にエフェクト設定していく。

まずはパラメータから設定していきます。

ユーザーパラメーターは以下になります。

DirectLight → LinearColor

FlipbookPlayerSpeed → Int32・IndirectLight → LinearColor

SubimageH → Int32・SubimageV → Int32

TextureDensity → TextureSample・TextureVelocity → TextureSample

ユーザー設定パラメーター

続いてエミッタのプロパティでSimTargetをGPUComputeSimに変更します。

またそれに合わせてFixedBoundsも変更します。

これはFluidNinjaのNiagaraScriptのほうでGPUしか対応していないためです。

エミッタプロパティの変更

続いてEmitterStateを変更します。

ここではLifeCycle(エフェクトが出現する流れ)を変更します。

LifeCycleModeをSelfに変更して無限に動作するようにしています。

EmitterStateの設定について

続いてどれぐらいのエフェクトを生成するか決めるSpawnRateを作成します。

SpawnRateでのエフェクト数の設定

続いてパーティクルのスポーンを変更します。

InitalizeParticleでLifeTimeとSpriteSizeを変更します。

LifeTimeは1~2の値で設定しています。

SpriteSizeについては自身のエフェクトに合う形で設定するのが良いかと思います。

パーティクルの初期設定

続いてShapeLocationを追加します。

ShapePrimitiveをBox/Planeに設定して、Box/PlaneModeをBoxに設定します。

BoxSizeに関しては画像のサイズに合わせています。

midpointは0.5に設定します。

UE4ではBoxLocationなど形状ごとに分かれていましたが、

 UE5からShapeLocationに統合されているのでご注意ください。

ShapeLocationの設定

それから下の方にあるOffsetの設定も変更します。

中心をパーティクルのPositionに設定して、

OffsetをAddVectorでVector設定にしてMakeVectorでVectorを生成して、

Zの値のみランダムで-10~10の値に設定しています。

boxoffsetの設定

続いてパーティクルの更新処理を作成していきます。

nm fluidで検索するFlipbookPlayerというものがあるのでこちらを追加します。

FlipbookPlayerの作成

続いて中身を設定していきます。

各設定は下記になります。

Phase → DeltaTimeを指定

Speed → FlipbookPlaySpeedを指定(ユーザーパラメーター)

SubImagesH →SubImagesHを指定(ユーザーパラメーター)

SubImagesV →SubImagesVを指定(ユーザーパラメーター)

Texture → TextureDensityを指定(ユーザーパラメーター)

UV → 下記画像を元にパラメータを設定する。

※FluidNinjaの方でも同様のエフェクトがあるのでそちらも参考になります。

FlipbookPlayer

上記はアルファ画像を指定しているので、

流れの画像を使用する処理も追加してあげます。

流れの方は上記で作成した動作をコピーして、

TextureのパラメーターをTextureVelocityを指定します。

流体の設定

つづいてSolve Forces and Velocityを追加します。

VelocityもMultiplyVectorに変換してAddVectorを追加して、

「Make Vector from Linear color RGB」にして、

上記で作成したTextureVelocityを設定してあるモジュールを指定してあげます。

Bの方は流れの設定でXとYともに-5を指定してあげます。

SolveForcesandVelocityを設定

続いてパーティクルの流れを設定するPostsolverPositionを追加します。

モジュールの追加nmfで検索すると出てきます。

PostSolverPosition設定

こちらも先ほどと同様に画像やユーザーパラメーターを指定した、

モジュールをLinearColorに設定してあげます。

PositionOffsetを設定

あとはエフェクトの色を設定します。

ScaleAlphaの方でAlpha画像の位置に合わせてAlphaが決まります。

Colorモジュールの設定

最後にエフェクト用マテリアルを変更してあげて完了です。

エフェクト用マテリアルを変更

実際に動作させたものはこのような形になります。

・目次に戻る

VectorFieldのデータを生成して活用する

続いてVecotrFieldの出力方法などの流れを紹介したいと思います。

FluidNinjaでは流れのデータをCSVで出力することが可能となっています。

この流れの情報をNiagaraに割り当てることが可能です。

ここではそちらの説明を行っていきます。

FluidNinjaのプロジェクトを起動して、

一番上の①のモードをNinjaFieldsに変更します。

そして②の赤丸を押してデータテーブルとして保存します。

FluidNinjaからデータを出力

出力されるデータはFluidNinjaプロジェクトのOutputフォルダに出力されます。

出力されたデータテーブルファイル

こちらのファイルをCSVで出力します。

CSVの出力

出力したCSVファイルをワークパッドなどのテキストツール等で開き、

不要な箇所を削除して、.fga(VectorField用の拡張子)に変更します。

CSVの修正

作成したファイルをコンテンツブラウザにドラッグして、

ちゃんとVectorFieldとして認識されると赤枠で囲ったようにファイルが追加されます。

VectorFieldの生成データ

あとはNiagaraのモジュールとして、

SampleVectorField・ApplyVectorField・SolveForceのモジュールを追加します。

SampleVectorFieldで先ほどのfgaファイルの指定やどの領域の動きを指定します。

ApplyVectorFieldの追加

ApplyVectorFieldは流れの強さを変更します。

ApplyVectorFieldの設定

SolveForceAndVelocityは流れを生成するために作っておきます。

設定などは特に変更しません。

SolverForceForce

以上でVectorFieldの説明は以上です。

・目次に戻る

最後に

FluidNinjaLiveを買いましょうよ!!!!!

触ればわかると思いますがいろいろ制約があったりするので・・・

以上です。