お世話になっております。
ShallowWaterRiverを用いてLakeやOceanと接続する際、波の挙動に差異が出ており繋ぎ目に途切れが見えております。
特に波源を設定しない場合はTransition部分が一切揺らがなくなっており、目立っております。
WaterBodyRiverの状態であれば波の挙動に差異はなく、繋ぎ目も見えない状態です。
メッシュ形状に変化がないのでマテリアルが異なっていることが要因なのかと思いますが、
こちらについて何か改善方法などございましたらご教授いただけないでしょうか?
[Attachment Removed]
再現手順
UE5.7環境での再現プロジェクトを添付しております。
「WaterBodyRiver」がShallowWaterに設定されており接続がうまくいかない状態で、「WaterBodyRiver2」が通常のShallowWater不使用でTransitionが綺麗なものです。
[Attachment Removed]
ご回答ありがとうございます。
ご提案いただいた方法の場合、Lake全体がシミュレーションでの動作になっているかと思いますが、ShallowWaterを利用する場合は接続されるWaterは全てShallowWaterでのシミュレーションとする想定になるでしょうか?
LakeやOceanではそれ用のパラメータやマテリアルの調整が行いたいため、WaterBodyLakeやWaterBodyOceanのままShallowWaterとのTransitionをなじませたいのですが、これは難しそうでしょうか?
[Attachment Removed]
ご回答ありがとうございます。
WaterBodyのままでのスムーズな接続が難しい旨、承知致しました。
そうなりますと、現状でのShallowWaterにおけるLakeやOceanとの接続におけるベストプラクティスは「LakeやOceanもShallowWaterによるシミュレーションとして扱いまとめてBakeする」ということになりますでしょうか?
[Attachment Removed]
お世話になっております。
本件についてですが、以下の設定にて解決できることを確認致しました。
・ShallowWater側の水面が揺らがない症状について
Waterマテリアルの「Default Distant Normal StrengthB」及び「Default Near Normal Strength」がShallowWater側だけ0に上書きされているので、このチェックを外すことで解消することを確認できました。
・タイル境界で水面に切れ目が出る症状について
WaterZoneの半精度テクスチャのチェックを外すことで解消されることを確認できました。
対応として上記を適用するにあたり、懸念点などございますでしょうか?
特に半精度テクスチャを使わない場合は使用メモリや負荷増加に影響しそうではありますが、エディタ上ではレンダリングリソースビューアで目立った差異が確認できなかったので、実際の影響範囲を確認しておきたく存じます。
ご回答いただきましたところさらにお手数おかけして申し訳ございません。
ご確認よろしくお願い致します。
[Attachment Removed]
お世話になっております。
遅くなり申し訳ございません。
半精度テクスチャの使用容量について確認致しました。
参考にしつつ調整させていただきます。
本件の現状についてですが、半精度テクスチャを使用しない場合でも何かしらの条件で水の切れ目が出てしまうことが判明しました。
該当レベルをロードした後でPIEを開始した場合は問題なく、別のレベル上でPIEを開始後に該当レベルをロードすると切れ目が見えるという症状で、発生する川としない川があったりと詳細な条件は分かっておらず、サンプルプロジェクトでの再現もできていないため難航しております。
また、この症状が発生する川ではShallowWaterSubsystemによる水紋が表示されなくなるようでした。
切れ目よりRiver側で一切水紋が表示されず、Lake側でのみ表示される(境目では半円の形となる)状態となっています。
以前水の切れ目が見えていた状態では水紋の表示は問題なかったため、症状としては別物の可能性が高そうです。
こちらの症状について、考えられる原因などございましたらご教授いただけますでしょうか?
[Attachment Removed]
ご確認ありがとうございます。
記載いただいた状況で相違ございません。
PIEで該当のRiverについて確認致しました。
結果、症状の出ているRiverのみ NormalAndHeight パラメータが設定されておりませんでした。
問題のないRiverについては NormalAndHeight が設定されており、Lakeと同じテクスチャが割り当てられております。
こちらが何等かの条件で設定されないことが原因とみられるでしょうか?
[Attachment Removed]
ご回答ありがとうございます。
ご指摘いただいた点について、UShallowWaterSubsystem::SetWaterBodyMIDParameters を明示的に呼び出すことで問題が解消されることを確認できました。
また、それに伴い発生条件についても判明致しましたので共有させていただきます。
現在 UShallowWaterSubsystem::TryUpdateWaterBodyMIDParameters によってパラメータが設定されるのはShallowWaterSubsystemのTickからとなっており、各WaterZoneに対して一度だけ行われているようです。
この時にまだロードされておらず、後からWorldPartitionによってストリーミングロードされたWaterBodyについてはパラメータの設定がされない状態でした。
そのため今回はAddToWorldのデリゲートにてロードされたレベル上の各WaterBodyに対して設定する形で解消致しました。
以上、よろしくお願い致します。
[Attachment Removed]
お世話になっております。
Water / WaterAdvanced プラグインは実験中の機能ですので未対応事項・不具合の存在が想定されることについてはご留意下さい。
[Image Removed]貼付して頂いたプロジェクトの場合は上図のように
SourceRiverWaterBodies=(WaterBodyRiver)
SinkRiverWaterBodies=(WaterBodyRiver2)
とするのが基本的な設定になるかと思います。
Reset ボタンを押下して頂くことで上流から下流までのシミュレーションが行われます。
このとき設定した River については WaterBodyComponent の可視性(Visible)の制御が自動的になされますが、
Lake 部分については手動で対応して頂く必要があります。
RenderState = “Live Sim” もしくは “Baked Sim” の設定であれば以下のような表示を得られるかと思います。
[Image Removed]
SourceRiverWaterBodies/SinkRiverWaterBodies に Lake を設定することはできますが内部的には完全には対応されていないようで、
UE5.7 においては Bake 時にクラッシュが発生することがあります。
UE5.8 ではクラッシュが起こらないようになっていますが、上記の可視性制御を含む処理の対象外となっており働かない機能があります。
特に、Render State “Water Component with Baked Sim” の場合について Lake 部分がうまく表示されないようです。
よろしくお願いいたします。
[Attachment Removed]
ご確認ありがとうございます。
ShallowWaterRiver では従来の WaterBody とは水面の作り方が異なり、Niagara ベースのシミュレーション結果を参照するようになっています。
調べた限りではこれらをブレンドするような機能が組み込まれてはいないようですので、スムーズに接続することは難しいと考えられます。
よろしくお願いいたします。
[Attachment Removed]
ご確認ありがとうございます。
実験中の機能ということもありベストプラクティスという程のものはございませんが、二つの表示方法の境界を馴染ませることについて特別なサポートは存在しないように見受けられますので、ShallowWater を用いる場合にはそちらへ統一するのが低コストな方法ではあるかと思います。
よろしくお願いいたします。
[Attachment Removed]
t-nikaido1
(t-nikaido1)
13
ご報告ありがとうございます。
ご指摘頂いた対応により、確かに境界を馴染ませることができました。
よって以前にご案内した内容は不正確でした、申し訳ございません。
・マテリアルパラメータの変更についてはその性質上、表示内容をご確認頂き問題がなければ特別な懸念は無いかと思います。
係数の変更のみですのでパフォーマンス上の影響も無さそうです。
・半精度テクスチャについては生成されるテクスチャ(RenderTarget)のピクセルフォーマットに影響があります。
添付して頂いたプロジェクトの場合はそれぞれの設定のおけるテクスチャの情報が下記の通りでして、容量については 8MB / 16MB となっています。
[Image Removed]これは WaterZone のプロパティ “Water Info Texture Array” から確認できます。
よろしくお願いいたします。
[Attachment Removed]
t-nikaido1
(t-nikaido1)
14
以下のような状況であるという認識で正しいでしょうか。
・ゲーム開始後にロードしたレベルに配置した ShallowWaterRiver について以下の症状が現れる場合がある
・水紋が出なくなる
・Lake(旧Waterで表示)部分と段差が生じる
・再現条件不明
こちらでも再現ができておらず同様の事例報告も見当たらないため原因については分かりかねますが、
一部の水面にのみ水紋が出ない場合、該当部分のマテリアルにシミュレーション結果を格納したテクスチャが設定されていない可能性が考えられます。
PIE 実行中に、症状の出ている River について WaterMID 等のマテリアル(インスタンス)に NormalAndHeight パラメータが設定されているか、また設定されたテクスチャに水紋パターンが描画されているかを確認してみて頂けますでしょうか。
[Image Removed]
よろしくお願いいたします。
[Attachment Removed]
t-nikaido1
(t-nikaido1)
15
問題を再現できているわけではないので不確かではありますが、
何らかの理由により一部の WaterBody が初期化処理から漏れているのかもしれません。
適当なタイミングで UShallowWaterSubsystem::SetWaterBodyMIDParameters を呼び出すことで正常な状態にできる可能性があります。
[Image Removed]よろしくお願いいたします。
[Attachment Removed]