こんにちは。コンテンツデザイン開発グループ リアルタイムチームの戸本です。
Unreal Engine 5.6 から実装された「Water Advanced」を使用し、道頓堀に水を流す様子を、先日Xに投稿しました。
本記事では、その実例をもとに「Water Advanced」についてご紹介します。
制作手順は、以前ご紹介したUnreal Editor for Fortnite(UEFN)での川の作成方法とほぼ同じです。
UEFNで検証した事をUnrealEngineで改めて触れるのは、なかなか興味深い検証でした。
Water、WaterAdvancedプラグインを有効にする
Water AdvancedはUnreal Engine 5.6で実装された機能ですが、新バージョンでの検証と併せ、さらなる安定性を期待して今回はUnreal Engine 5.7を使用して作業を進めます。
まずはメニューの『編集 > プラグイン』から、Water、Water Advanced、そしてBuoyancyを有効にしてエディターを再起動します。

Buoyancy は、水に反応して浮くオブジェクトを有効化するためのプラグインです。
今回のように道頓堀に「ひよこ」を浮かせるためには必須でしたが、単に川を表現するだけであれば有効化する必要はありません。
なお、Water Advanced は現時点で実験段階のプラグインです。
予期せぬ挙動が発生する場合があるため、プロジェクトのパッケージ化などを行う際は慎重に検証を行ってください。
ランドスケープを配置

Water Advancedで川を作成する仕組みは、ランドスケープ(地面)を設定し、川を生成するための「スプライン」を配置するとその形状に沿って地面が自動的に凹み、そこに水が流れ、川になるというものです。
イメージとしては「スプラインに合わせて地面を掘る」という感覚に近いです。
まずはベースとなるランドスケープを配置します。今回は道頓堀の都市モデルデータを上に被せる形になるため、平面のランドスケープをデフォルト設定のまま配置して作業を開始します。
もし自然な地形を再現したい場合は、適切なマテリアルを設定した上で、スカルプト機能を使って調整を行ってください。
水塊川(Water Body River)を配置
モード選択メニューの右横にある「■に+」のアイコンをクリックし、検索欄に「水」と入力して表示される「水塊川」を選択することで、ランドスケープ上に川が配置されます。
水塊川や水塊湖等は見慣れない言葉ですがたぶん造語です。
配置時に表示される確認画面で「完了」をクリックすれば、川のベースとなる水流の設置は完了です。

スプラインで流れを調整

配置が完了した時点で地面は凹み、すでに水も流れていますが、スプラインを動かすとそれに合わせて地面の変形や流れも変化する様子を確認できます。
スプラインポイントを調整したい場合は、ポイントを選択して右クリックメニューから操作を行いますが、Altキーを押しながらポイントを移動させることでポイントを増やすことも可能です。
Shallow Water Riverの追加してシミュレート、ベイク
現状では水が流れているものの、高低差に関係なく一定の速度で流れている状態です。
シミュレーションを行うために、「Shallow Water River」を配置します。
アクタを配置の検索から「Shallow Water River」を探して配置しますが、ただ配置しただけでは何も起こりません。
シミュレーションの対象となる川のアクタを詳細パネルから指定することで、水流シミュレーションが可能となります。
詳細パネルの「Source River Water Bodies」の項目で先ほど配置した川のアクタを指定し、詳細のユーティリティにある「リセット」をクリックすることで、水の色が変化し、地面の溝に沿って流水が発生したことが確認できます。

この状態でスプラインを移動させると、形状に合わせてリアルタイムに流れが変化します。
スプラインの一番目のポイントの高さを上げることで、自然に近い流れを再現できると思います。もし水が溢れてしまう場合は、「Remove Outside Spline Amount」の値を高く調整したり、地形やスプラインを修正したりすることで、対応します。

今回はサンプルとして高低差のある湾曲した形状を作成しましたが、最終的な道頓堀の再現ではここまでの極端な形状にはならず、都市モデルに合わせた形で仕上げていきます。
一通りの流れが完成したら、処理負荷を軽減するために「ベイク(シミュレーションの焼き付け)」を行います。
リセットボタンの横にある「ベイク」をクリックし、レンダリング設定の「Render State」を [live sim] から [Water Component with Baked Sim] に切り替えることで、ベイクされた結果が適用されます。
これにより、シミュレーション用の「Shallow Water River」アクタを削除しても流れが維持されるようになります。

色調整
水の色の変更などの調整を行う場合は、詳細パネルの「Baked Sim Material」にセットされている「SW Water Material River」の各項目を編集します。
編集の際は、念のため元のアセットを複製して使用することをお勧めします。

注意点として、色の変更はベイク済みのデータに対してのみ適用されるため、必ずRender Stateを [Water Component with Baked Sim] にして調整を行ってください。
オブジェクトを干渉させる
この水流シミュレーションでは、配置した任意のオブジェクトを水流に干渉させることが可能です。たとえば、川の中に橋脚を設置した際、その周囲で水流が変化する様子を再現できます。
ShallowWaterRiverの詳細設定にある「BottomContourTags」に任意の文字列を設定し、影響を与えたいオブジェクトの「Tags」にも同じ文字列を入力を行います。
この設定で、水流が任意のオブジェクトに影響されるようになります。

道頓堀の「ひよこ」は水面に浮かせるオブジェクトであるため、前述とは別の設定が必要です。
最も簡単な方法は、デフォルトで用意されているBP(ブループリント)のメッシュを差し替えることです。
コンテンツブラウザから Plugins > waterコンテンツ > blueprints 内にある BP_BuoyancyExample を探してください。
もし見つからない場合は、コンテンツブラウザの設定から「プラグインコンテンツを表示」を有効に変更してください。

Static Mesh を、実際に浮かせたいメッシュデータへと入れ替えます。この際、メッシュの pivot(中心点) に注意してください。
pivotの位置によってオブジェクトの重心が変わり、水面での動きが大きく変化します。
好みの動きになるようにモデリングモードでpivotの調整を行います。

道頓堀川はほぼ直線的な流れであったため、上記で行ったようなスプラインの細かな調整は行っていません。
ランドスケープを設定し、水塊川を配置したうえで、スプラインを延長しただけです。
現地に似せて水の色調整を行い、ひよこが流れるルートにBlocking Volumeを配置して流れを調整しています。
流水をコントロールするのはなかなか難しく、工夫が必要かもしれません。
ランドスケープをそのまま使うシチュエーションではさほど問題はないですが、人工物に合わせたコントロールは、なかなか思うようにならないかもしれません。
その時はTag設定したオブジェクトを配置する事で想定と近しい状況を再現できる可能性があります。

Waterシステムに関する公式ドキュメントはこちらです。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/water-system-in-unreal-engine
「Water Advanced」は実験段階ではあるものの、非常に有用なプラグインだと感じています。
今後は FluidFlux と併せて検証を進め、より多様なビジュアライズに対応できるよう取り組んでいきたいと考えています。
FluidFluxについては以下の記事で解説していますので、ぜひご覧ください。






