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

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

【UE4】UE4のWaterプラグインで波を表現してみる。

Waterプラグインを使ってみます(・ω・)

今回は4.26で追加される。

WaterプラグインのFluid(流体シミュレーション)を使って、

波や流体の揺れなどを表現していきたいと思います。

下の公式の動画を参考に行いました!!

www.youtube.com

UE4の4.26Preview7を使用しています(^ω^)

※サードパートンブループリントのプロジェクトから作成しています。

※まだ試験的な運用となっています。

※間違った説明などをしていたらコメント欄に記載してください。

Waterプラグインの有効化

まずWaterプラグインを有効化しないことには始まらないので、

Waterプラグインとそれに必要なLandmassプラグインを有効化します。

※landで検索するとどちらも表示されます。

Waterのプラグイン設定

Waterのプラグイン設定

地形の設定と波を発生させる場所の準備

まずは波を発生させるにも、

それを表現する場所がなければいけないので、

landscapeで地面を作成します。

エディタ上部のツールバーのモードを選択してランドスケープを選択します。

「編集レイヤーを有効化」にチェックを入れてから作成ボタンを押してください。

※マテリアルはスターターコンテンツありの場合に追加される、

    M_Ground_Grassを使用しています。

ランドスケープの作成

ランドスケープの作成

設定が完了したら右下の作成ボタンを押して地形を作成します。

作成が完了したらツールバーのモードを「選択」にして、

アクタの配置タブからを選択し「Water」と検索します。

するといくつかのアクタ情報が表示されます。

Water関連のアクタ

Water関連のアクタ

今回使用するのはWaterBodyLakeを使用してみます。

ドラッグアンドドロップでレベル上に配置しましょう。

配置してビルドすると下のようになるかと思います。

※Waterプラグインの使い方は他の方が紹介していますので、

 説明を省略させていただきます。

WaterBodyLakeをレベルに配置してビルド後の表示

WaterBodyLakeをレベルに配置してビルド後の表示

地形の設定と波を発生させる場所の準備は完了になります。

実際に波を表示させる。

それでは実際に波を発生させていきます。

波を発生させるにはWaterプラグインの中にある、

流体シミュレーションの制御をメインに行うBP_FluidSim_01と、

波を実際に発生させるサンプル用のBPを使います。

表示オプションでプラグインの表示ができるようにします。

表示オプションの設定

表示オプションの設定

上の画像のように設定するとWaterコンテンツという

フォルダを選択できるようになります。

波の設定はFluidSimulationフォルダ内に格納されています。

Waterコンテンツのフォルダ

Waterコンテンツのフォルダ

それ以外にもNiagara やマテリアルなど必要なファイルはこちらに格納されています。

FluidSimulationのBluePrintsフォルダにある、BP_FluidSim_01をレベルに配置します。

BP_FluidSim_01を配置して波のシミュレーションが

適応される広さや高さを指定します。
ブループリント詳細のシミュレーション項目にShow Simulation Meshがあるので、

チェックを入れてどれぐらい必要か自身の環境に合わせてください。

広さを変更するにはシミュレーション項目のSimulation World sizeで設定します。

シミュレーション項目の設定

シミュレーション項目の設定

波のシミュレーション範囲設定

波のシミュレーション範囲設定

次にどのアクタを対象にシミュレーションを実行するのか指定します。

Wave Simlation項目の「Simulate Wave Foam」のチェックを入れて、

「Water body」で先ほどの湖を指定してあげます。

WaveSimulationの適応先設定

WaveSimulationの適応先設定

シミュレーター側であるBP_FluidSim_01の設定は以上です。

実際に波を発生させる設定を行う前に、

Rakeの波を消したほうが分かりやすいので抑えるようにします。

追加した湖のアクタを選択してWaveの設定を表示します。

WavesSourceをNoneにすればOKです。

f:id:yoshikata1990:20201115172331p:plain

Lake側のWave動作のOFF

それから流体シミュレーションの表現をシミュレーションの項目があります。

こちらを「Shallow Water」に変更します。

※Shallow Waterとは浅瀬の波しぶきを表現するようなもの

Solverの設定

Solverの設定

これで地形と波を発生させるシミュレーションの設定は完了です。

続いて波を発生させるためのブループリントを配置します。

FluidSimulationのBlueprintsのExample内に波の衝撃を発生させるための、

アクタ情報がいくつか用意されています。

波の衝撃を発生させるサンプル

波の衝撃を発生させるサンプル

今回はBP_Dynamic_Force_skelMeshとBP_Fluid_Impulse_Repeatingを使います。

まずはBP_Fluid_Impulse_Repeatingを設定して配置してみます。

波を発生させたい箇所に配置して下の画像の設定箇所を変更します。

Fluid_Impulseの設定

Fluid_Impulseの設定

簡単な設定は下記になります。

※細かい設定はブループリント内で編集できます。

Impulse Every N Secound:波を発生させる間隔

Force Radius:波の広がりの広さ

Force Strength:波しぶきの強さ

実際にStrengthを変更すると見た目がだいぶ変化します。

Radiusが100でStrengthが40の場合

Radiusが100でStrengthが40の場合

Strengthを100にすると波紋やしぶきの表現もだいぶ変化します。

Radiusが100でStrengthが100の場合

Radiusが100でStrengthが100の場合

今度はBP_Dynamic_Force_skelMeshを試してみます。

こちらはスケルタルメッシュのソケットの位置と

キャラの動きに応じて波を発生させています。

SkelMeshの設定項目

SkelMeshの設定項目

設定の箇所についてはBP_Fluid_Impulse_Repeatingとほぼ同様ですが、

スケルタルメッシュの情報やソケットの情報などを渡しています。

実際に動かすと下のTwitterのような形になります。

以上でWaterのFluidSimulationで波を発生させる簡単な説明は完了になります。

V4.62.2で白波が発生しない件について

ブログを見て試していただいた方がいらっしゃいまして、

その方が白波が発生しないということで調査しました。
私の方でも実際に最初白波が発生していませんでした・・・

※まだExperimentalなので今後も変更が必ずあると思います!!

調べたところ下のyoutubeでフォーラムに投稿してくださった方が、

すでに対応しているWaterプラグインを動画の概要欄においてくれています。

www.youtube.com

白波を出すまでの流れも紹介しておきます。

上記youtubeの概要欄のプラグインデータをダウンロードして、

Engineのフォルダ(/Epic Games\UE_4.26\Engine\Plugins\Experimental)に配置します。

※Waterというフォルダが既にあると思いますので削除して置き換えてください。

フォルダの場所

配置したら右下のコンテンツブラウザの「表示オプション」を選択して、

エンジンのコンテンツを表示とプラグインコンテンツの表示をオンにして、

検索してWaterコンテンツ→「FluidSimulation」のフォルダを開きます。

Fluidsim_Terrainというサンプルマップがありますのでこれを開きます。

Exampleとなるマップの表示

サンプルとなるレベルを開いたら、

アウトライナから「BP_Dynamic_Force_SkelMesh」を選択します。

詳細のデフォルト項目に、Fluid Force Dynamic Settings という項目があります。
Force Radius(波の範囲)を1000に設定して、

Force Strength(波の強さ)を1に設定します。

キャラクターが発生させる波の設定

これで設定は完了になります。

あとはキャラクターを動かせば下のように白波が発生します!!

UE5で白波を発生させる方法について

白波を発生させる場合についてですが下のリンクで、

細かく紹介されていますのでこちらもぜひチェックしてみてください。

※こちらを見てUE5でも問題なく白波を発生させられました。

キャラクターの動きに合わせた波の発生方法について

今までの説明でキャラクターの動きに合わせた白波の発生方法について、

記載がなかったので追記させていただきます。

※上記で記載したリンクの白波発生の設定を行った後で設定しています。

※今回はサードパーソンテンプレートのグレイマンを使用した説明になります。

波を発生させる位置をソケットで指定するのでボーン設定でソケットを追加します。

波発生用のソケットを追加

次にThirdPersonCharacterにWaterPlugin関連の変数の追加と、

BeginPlay時に波しぶきの設定をします。

プログラムの内容としては以下の2点になります。

1.BPFluidSim(波を発生させるための設定があるBP)を探して変数指定

2.FluidForceDynamicに変数で設定した内容を登録

FluidForceDynamicをThirdPersonCharacterに登録

あとはFluidForceDynamicSettings変数に先ほど設定したソケット情報などを、

紐づけてあげることで波を発生させることが可能です。

FluidForceDynamicSettingsの設定

実際に白波を歩いた位置に合わせて表示したのがこちらになります。

以上で説明は終了です。

まだまだWaterプラグインは更新されていくので、

やり方等も変化すると思いますので更新していけたらと思います。