Water プラグイン はモデリングとレンダリング ツールのコレクションです。スプライン ベースのワークフローを利用して一貫した水の編集エクスペリエンスを実現します。シェーディングとレンダリング パイプラインを組み合わせ、さらにゲームプレイで物理と流体のシミュレーションを自動的にサポートするサーフェス メッシュを備えています。Water ツールを使用すると、手動設定をほとんど必要としない反復プロセスによって、海、川、湖、カスタム水域をすばやく作成できます。
Water プラグインを有効化して使用する
Water モデリング ツールを使用する際は、最初に Water プラグインの有効化が必要です。[Edit (編集)] > [Plugins (プラグイン)] をクリックしてプラグイン ウィンドウを開き、[Built-In] > [Water] カテゴリに移動して Water プラグインを有効化します。エディタの再起動が必要です。
Water ツールの機能
Water ツールセットには、大規模なオープン ワールドで水域の作成と編集をサポートする機能が多数あります。
Water Body アクタとスプラインを利用したツール
Water Body アクタ によって、反復設計と使いやすさを重視した、スプラインを利用したワークフローを利用できます。これらのアクタは、川、湖、海をはじめ、レベルに配置できるその他の種類の水を表現します。
Water Body アクタは、スプラインを使用して作成したアクタであり、次の機能を持ちます。
通常のアクタで使用するのと同じ操作によって、移動、回転、スケーリング、複製を行います。
Alt + ドラッグで、新しいスプライン ポイントを作成します
このポイントごとに水の速度、深さ、オーディオの機能を調整します。
各スプライン ポイントの状況依存メニューを利用して、Water のプロパティを調整するビジュアライザーをその場所で有効化します。
既存の Landmass プラグインが提供する非破壊 Landscape Edit Layers (ランドスケープ編集レイヤー) 機能を使用して、ランドスケープを自動で操作します。
ゲルストナー波
Water プラグインは高度にカスタマイズできる Gerstner Wave (ゲルストナー波) のシミュレーションを備えており、湖や海に組み込まれた単純または複雑な波面を作成できます。それぞれの Water Body が独自に波のパラメーター セットを持ちます。これらは、それぞれのアクタに保存することも、Water Wave アセット として個別に保存することも可能です。こうしたアセットを使用して、同じ波のシミュレーション設定を複数の水域に簡単に適用でき、領域やレベル全体にビジュアル パリティを作成します。
流体シミュレーションとゲームプレイの物理
Fluid Simulation (流体シミュレーション) ツールは、キャラクター、車両、武器と相互に影響する機能を持ちます。これにより、波紋、水しぶき、泡のエフェクトを作成して、リアルさとワールドの感覚を強化します。
アクタごとに制御する Force Impulses (力積) を使用して、流体シミュレーションに力を適用します。たとえば、プレイヤーと車両は水を通過するときに流体シミュレーションに力を加えたり、発射物は水しぶきを発生させたり、海岸線で波紋を反射して川のフロー マップに影響を与えることができます。
Water メッシュ アクタ
海、湖、川のすべての水域は、単一の Water メッシュ アクタ を使用してレンダリングします。この特別なアクタは、レベルが含む各水域に必要なメッシュをスプラインに基づいて自動で生成するため、重なり合う水域アクタは同じメッシュを共有し、遷移全体で水がシームレスに流れます。
LOD は、クアッドトリーを使用して、各フレームを横断して表示できるタイルの最適化したセットを生成し、LOD レベルごとに折りたたまれます。こちらに 8 x 8 のグリッドを使用したコンセプト例を示します。
こちらにゲーム内のコンセプト例を示します。
Water メッシュ アクタはエディタの [World Outliner (アウトライナ)] から選択することで制御でき、[Details (詳細)] パネルの [Mesh (メッシュ)] セクションでプロパティを調整します。
設定 |
説明 |
---|---|
Force Collapse Density Level |
サブツリーにリーフ ノードがすべて存在しない場合でも、タイルを強制的に折りたためる密度レベル。
|
Tile Size |
X と Y の両方向で (できるだけ小さい) リーフ タイルのワールド サイズを決定します。 |
Extent in Tiles |
Water タイルを生成する際の、X と Y 方向のタイル数。 |
Tessellation Factor |
Water タイル グリッドに対するテッセレーションの最大係数。たとえば、最大値は LOD 0 のタイルを表します。これはグリッドが取り得る最大密度です。この設定を大きくするほど、パフォーマンスへの負荷が高くなります。 |
LOD Scale |
LOD 範囲をスケーリングし、引き込んで密度の低いタイルをユーザーの近くに表示するか、押し出して密度の高いタイルを遠くに表示します。この設定を大きくするほど、パフォーマンスへの負荷が高くなります。 |
Far Distance Material |
このマテリアルを設定すると、Water メッシュ コンポーネントのタイル領域周辺に単純なスカート メッシュを生成します。 |
Far Distance Mesh Extent |
生成した遠距離メッシュが Water メッシュ アクタのエッジから離れている距離。 |
レンダリング機能
Water レンダリング パイプラインは、水の外観をカスタマイズするプロパティをいくつか含みます。
Underwater Post Process マテリアルは、カメラの位置に基づいて適用され、水域への部分的および完全な水没を実現します。このポスト プロセス マテリアルを各アクタのプロパティから調整することで、水域間の変化を実現できます。
マテリアルに基づいた、川と他の水域との間の特定の遷移。遷移マテリアルを、それぞれの River アクタで指定することで、川と湖の間、川と海の間の遷移に自動で割り当てできます。
コースティクス生成ツールを利用すると、浅い水面に適用する独自のカスタム コースティクス マテリアルを定義してレンダリングできます。カスタム レベル設定は、水域のプロパティを調整するために使用します。目的の結果を得られたら、エディタ専用カスタム クラスが結果であるコースティクス アニメーションを受け取って、それをテクスチャにレンダリングします。これは他の水域で使用するために、プロジェクトの「Water/Caustics」フォルダに保存されます。
水域
Ocean
Oceans はクローズド ループ スプラインを使用し、ランドスケープを形成して本島を生成します。そして残りの Water メッシュ アクタを水で満たします。
このスプラインは、各ポイントの高さがすべて同じになるように制限されています。Water メッシュ アクタで定義した遠方メッシュ マテリアルを使用して、水平線まで海を拡張できます。
Lake
Lake は小さい水域で、同様にクローズド ループ スプラインを使用します。これは湖を形成して、その下のランドスケープを削ります。
Ocean と同様に、Lake のスプライン ポイントも高さをすべて等しくする必要があります。Lake は傾斜をサポートしません。
River
River は、始点と終点を持つ長いオープン スプラインを利用する水域です。これは湖と海の間の接続として機能します。
スプラインにポイントを追加して川を延長でき、さまざまな高さのポイントを設定して、水のプロパティを各ポイントで調整できます。このスプラインは、パスとプロパティに従ってランドスケープを削ります。River は各ポイントでの速度を使用してフロー マップに書き込むことで、サーフェスのフロー ビジュアルを動かします。遷移マテリアルを River アクタに設定して、川と湖の間、川と海の間の遷移領域に自動で割り当てできます。
Custom
Custom 水域はユーザーが提供するメッシュとマテリアルを使用して、スプラインを使用したデータの追加をサポートします。また、Water Wave と Underwater Post Process をサポートします。これはスイミング プール、大きな噴水、滝の実装など、さまざまな水域に使用できます。このレンダリングには Water メッシュ アクタを使用せず、ランドスケープにも影響を与えません。
Water Body Island アクタ
水域そのものではありませんが、このアクタは Lake の水域アクタと同様に、ランドスケープ カービング コントロールを使用してスプラインに基づいて島を作成します。この目的は、その下のランドスケープに影響を与え、特定の土地が常に水面より上にあることを保証することです。こうしたランドスケープへの影響は、他のすべての水域の後で適用されます。
追加リソース
Building Worlds in ‘Fortnite' With Unreal Engine| Unreal Fest Online 2020:
4.26 Water And Volumetrics Preview | Inside Unreal: