BLOGブログ

2021.06.30UE4UE/ 初心者向け

[UE4] Waterプラグインを使ってプールを作成する

執筆バージョン: Unreal Engine 4.26

みなさん、こんにちは。
だんだん暑くなってきて、そろそろ夏も近づいてきたなと感じる季節になってきました。本来ならプールでひと泳ぎしたくなる頃ですが、最近の状況だとそうも言ってられません。私が普段行っているプールも緊急事態宣言に伴い、ずっとお休み中です。このままでは運動不足で、私のお腹回りが緊急事態になるのも時間の問題かもしれません…

さて、今回のブログはそんなプールへの思いをぶつけるため、UE4.26から実験的に導入されたWaterプラグインを使って、プールを作成しようと思います。

Waterプラグインについては公式ドキュメントが以下のようにあります。
https://docs.unrealengine.com/ja/BuildingWorlds/Water/index.html

ドキュメントを読んでみると、海、川、湖などがランドスケープを用いて簡単に表現できるようです。では、ランドスケープを使わないプールの水などはどうでしょうか?ドキュメントによると、その場合はCustom水域を使用するようです。

では、実際にマーケットプレイスから入手したプールのアセットを使用して、屋外プールを作成していきましょう。

まずはStaticMeshを配置して、水を張っていないプールを用意します。

次にプールに水を張ります。まずはドキュメントの解説の通りにWaterプラグインを有効にします。

PlaceActorsから「water」と検索するとWaterプラグイン関連のアクターが一覧に表示されるので、今回は「Water Body Custom」を使用します。このWaterBodyCustomをレベルに配置します。

 

初期状態のWaterBodyCustomには平面のStaticMeshが設定されていますが、今回はプールを作成するため、StaticMeshは直方体である必要があります。そこでとりあえず今回は水深1mのプールという事で、Geometryフォルダ内にある「1M_Cube」を使用する事にします。

Renderingカテゴリにある「Water Mesh Override」で該当のアセットに差し替えます。デフォルトでは非表示状態になっているので、検索欄から検索するか、Renderingカテゴリの「Show Advanced」をクリックして、表示状態にしましょう。

 

続いて1mの立方体のプールになってしまったので、Actorをスケーリングしてプールの大きさになるよう調整します。この時に注意が必要なのですが、Z軸をスケーリングして水深を調整しようとしてはいけません。理由に関しては後述しますが、とりあえずここではZ軸以外にスケーリングを掛けるようにしてください。

これだけでもかなりリアルなプールになったかと思います。

せっかくなので、次は浮き輪を浮かべたいと思います。

浮き輪用のStaticMeshアセットを選択し、右クリックから「Asset Actions」の「Create Blueprint Using This」をクリックして、浮き輪用のブループリントを新規作成します。

 

ブループリントが作成できたら、まずはアクターの物理を有効にするため、「Simulate Physics」を有効にします。次にスタティックメッシュの重さを変更するため、「MassInKg」を編集できるようにし、とりあえず今回は50.0を設定します。重さの調整が必要と感じた際はこの値を調整するようにしましょう。

次にアクターに対して浮力を追加します。コンポーネントに新しく「Buoyancy」を追加しましょう。

追加したら、アクターのどの位置に浮力を発生させるか設定しましょう。配列である「Pontoons」の要素を追加することで設定できます。スタティックメッシュの形状によりいくつ追加するかは異なるため、色々と試行錯誤が必要ですが、調整には「Simulate」で実際にプレイしながら調整するとよいかと思います。この時に注意点があります。

  • 浮き輪用のアクターの初期配置は水面より上に配置するようにしましょう。
    ⇒水中から開始した場合、浮力がうまく働かない現象が発生します
  • WaterBodyCustomのZ軸にスケーリングをかけないようにしましょう。
    ⇒水面の判定にスケーリングが考慮されていないためか、Z軸にスケーリングをかけても浮かぶ座標が元の形状の高さから変化しないため、意図した挙動にならなくなります。

今回は以下のような調整を行いました。

これをシミュレート実行すると、このようになります。浮き輪がぷかぷか浮かんでより一層プール感が増しました。

これでひとまずプールが完成しました。

 

今度は浮き輪やキャラクターが着水した時などに波紋が出るようにしたい所ですが、現在UE4.26.2ではWaterContentのFluidSimulationフォルダ以下にあるサンプルがうまく動いておらず、検証が難しかったため保留にしました。Waterプラグイン自体がまだExperimental(実験的機能)のため、これから改善だったり、設定方法も変わってくると思いますので、とりあえず今回はここまでにしたいと思います。

また何かWaterプラグインに動きがあったら、このプールを使って色々と試していけたらなと考えています。

とりあえずせっかく作ったプールなので、次回はキャラクターが泳げるようにしたいと思います。

それでは皆さん、よいプールライフを!