お世話になっております。
ShallowWaterRiverを用いて途中分岐を含む大規模な河川を実装したいと考えております。
途中分岐があるため、その地点から別のShallowWaterに繋げる形で配置しておりますが、接続部分でWaterMeshが正しく表示されなくなる症状が発生しております。
シミュレーション時点では表示されているのですが、それぞれをBake後に Water Component with Baked Sim に変更すると表示が欠けてしまいます。
接続している別のShallowWaterがなければ症状は発生しません。
表示欠けが発生する原因について分かることはございますでしょうか?
本件の簡易的な再現プロジェクトを添付いたします。
また、上記の表示欠けが発生しない場合でもRiver-LakeのようなTransitionがないことによる問題が残るような気はしています。
本件のように分岐を含む大規模な河川をShallowWaterRiverで実現する場合に、推奨される手法などございましたらご教授いただけますでしょうか?
[Attachment Removed]
再現手順
添付しましたプロジェクトのUntitledレベルにある、ShallowWaterRiver3及びShallowWaterRiver4が対象の部分となります。
片方のRiverのメッシュが途中から欠けてしまっている状態です。
[Attachment Removed]
プロジェクトが正しく添付できていなかったので再度投稿致します。
[Attachment Removed]
ご回答ありがとうございます。
一つのShallowWaterに複数のWaterBodyRiverを設定することで回避できる旨、承知いたしました。
Transitionについても、これであれば一つのShallowWaterで繋がるため問題にならなさそうです。
より広大な河川に関しても適用を試していこうと思いますが、引き続き推奨される手法についての情報もございましたら共有いただけますと幸いです。
以上、よろしくお願いいたします。
[Attachment Removed]
ありがとうございます。
基本は一つのShallowWaterRiverで河川全体をシミュレーションするとのこと、承知いたしました。
解像度不足の場合の設定についても確認しつつ、利用してみたいと思います。
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
再現プロジェクトをご提供いただきありがとうございました。おかげさまでスムーズに再現確認をとることができました。
■ 表示欠け(干上がり)の原因
水面(Water Mesh)は「タイル」と呼ばれる区画(カメラ距離に応じて可変)に分割して描画され、重なりがある場合、各タイルはいずれか 1 つの WaterBody にのみ割り当てられます。どちらが割り当てられるかは Overlap Material Priority で決まります。
ベイク済みの水面データは ShallowWaterRiver ごとに別々で、それぞれ自分の領域にしか水を持ちません。分岐のために複数の ShallowWaterRiver が重なるタイルができてしまうと、このタイルはどちらか一方の River に割り当てられることになります。タイルは比較的大きいため、割り当てられた River のタイルがもう一方の River のチャンネルまで覆ってしまうことがあり、その部分には勝った River のベイクに水が無いため「水なし」として描画されず、結果としてタイル 1 枚分のまとまった範囲で水面が欠けて見えます。
(この「タイル」は、コンソールコマンド r.Water.WaterMesh.ShowTileBounds 2 で可視化できます)
[Image Removed]言い換えますと、1つのタイルを複数の WaterBodyRiver が奪い合っていることが問題であり、今回、お預かりした再現プロジェクトのShallowWaterRiver3で起きている水の"干上がり"帯は、これが原因です。
■ 回避手法
この問題は分岐元河川と分岐先河川を別々のShallowWaterRiverで扱うのではなく、1つのShallowWaterRiverにとりまとめることで解決できます。再現プロジェクトのケースでは、以下の手順となります。
1. ShallowWaterRiver4を削除
2. ShallowWaterRiver3の「Source River Water Bodies」「Sink River Water Bodies」にWaterBodyRiver4を追加
3. 必要に応じて Resolution Max Axis 値を引き上げ
4. ShallowWaterRiver3をリベイク
※ShallowWaterRiver3 の Utilities > Reset をクリック。水が分岐部まで行き渡って安定してから「Bake」をクリックし、Render Stateを「Water Component with Baked Sim」に戻す
当方の UE5.7 環境でも、上記構成で分岐部を含め干上がり・境界の不連続なく描画されることを確認しております。
非常に長く、枝分かれを多く含む河川を扱う手法や、専用の Transition がない点につきましては社内で確認を行っております。
こちらについてのコメントは、もう少々お時間を頂戴できますと幸いです。
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
回答のご確認をありがとうございます。
より広大な河川を扱う際の推奨手法について、本機能の開発担当に確認しましたので共有いたします。
・従来のユースケースはいずれも、すべての分岐を 1 つの ShallowWaterRiver でまとめてシミュレーションする構成(前回ご案内した手法)で対応しているとのことでした
・枝分かれを多く含む大規模河川では、バウンディングボックスが巨大化し、シミュレーション解像度不足に陥る懸念があるため、必要に応じて、 Resolution Max Axis をご調整ください
※解像度を上げた際のメモリ負荷は Virtual Texture(ShallowWaterRiver ではデフォルトで有効)で緩和されるはず、とのことです
なお、ベイクを使用する河川と使用しない河川を混在させる構成には現状サポートがないため、分岐河川は上記のとおり 1 つの ShallowWaterRiver(ベイク)にまとめて扱う方法が推奨されます。
以上となります。
ご確認のほど、よろしくお願いいたします。
[Attachment Removed]
ご確認ありがとうございました。
それでは本件は回答済みとして、Closeさせていただきます。
以上、よろしくお願いいたします。
[Attachment Removed]