お世話になっております。
ShallowWaterで生成される水紋について、以下の条件で正しく生成されなくなることを確認しました。
- WaterBodyのサイズが十分に大きい
- WaterBodyが属するWaterZoneの「ローカルのみのテッセレーション」が有効
- 同一のWaterBody内を長距離移動する
同一WaterBody内を移動し続けることで、水紋の形状が崩れたりRiverの流れが正しく反映されなくなる症状が発生し、さらに移動することで水紋が発生しなくなります。
この症状発生後、別のWaterBodyに接触することで解消されます。
原因としては恐らく、ShallowWaterSubsystem の UpdateGridMovement において、BestWaterBody に変更がない限り WaterZone が持つ WaterInfoTexture からの更新が行われないからではないかと思われます。
こちらについて、現状での回避策や想定される修正方法などございますでしょうか?
[Attachment Removed]
再現手順
UE5.8環境で作成した再現プロジェクトを添付します。
再現手順は以下になります。
- 「WaterTestLevel」にてPlayerStart地点から開始
- 近くにあるRiverに入る
- River内を上流に向かって移動する
- 途中で不自然な水紋が発生したり、Riverの流れが反映されないような挙動が発生する
- さらに進むと水紋が発生しなくなる
- 隣にあるLakeに接触すると症状が解消される
[Attachment Removed]
再現プロジェクトのご用意ありがとうございます。UE5.8でプロジェクトを開くことで問題を再現できました。
念のため確認させていただきたいのですが、質問のメタ情報にはエンジンバージョンに5.7とご入力いただいたようですが、5.7では開くことが出来ないプロジェクトでした。
UE5.8で検証いただいているということで間違いないかご確認ください。
確認がとれましたらバグとして登録したいと思います。
さて修正方法ですが、ご調査いただいた通り「ローカルのみのテッセレーション」を無効化するか、
エンジンに手を入れることになりますが、UpdateGridMovement関数内のTryGetOrWaitForWaterInfoTextureFromWaterBody呼び出し周辺を分岐ブロックの外に出して、毎フレームまたは定期的に更新を行うことになると思います。
[Attachment Removed]
ご確認ありがとうございます。
プロジェクト側での利用はUE5.7ではありますが、本症状が最新環境でも発生するかの確認もかねてUE5.8でのサンプルを用意させていただきました。
混乱させてしまい申し訳ございません。
修正方法についても承知いたしました。
更新の負荷には注視しつつ、適切にTryGetOrWaitForWaterInfoTextureFromWaterBodyが呼び出せるよう対応したいと思います。
以上、よろしくお願い致します。
[Attachment Removed]
UE5.8で検証された件承知しました。弊社がただいま夏季休暇中のため、休暇明けが次第バグDBに登録させていただこうと思います。少々お待ちください。
[Attachment Removed]
お待たせしました。本件を UE-387913 Water ripples stop occurring during long-distance movement in WaterBody with bEnableLocalOnlyTessellation enabled としてバグ登録させていただきました。
それではクローズさせていただきます。
[Attachment Removed]