水体插件的WaterBodyCustom 5.4和5.5的行为不一致

Hi,

我们从5.4迁移到5.5以后,发现Water插件的效果与5.4不一致。在5.4中,WaterBodyCustom可以被WaterZone的位置所影响。

但在5.5中,WaterBodyCustom不再会被WaterZone的位置所影响,如果WaterBodyCustom的位置设置的很远,那么只能通过不断调大WaterZone的Zone Extent来让它渲染出来。

[Image Removed]

我们是有多个WaterZone来控制多个WaterBodyCustom的,但是在5.5中,因为这个问题,我们所有的水体渲染全部出错了。我们想了解下,应该如何修复这个问题,或者让它回滚到5.4中的效果。

下面是一段视频,详细演示了步骤。可以看到5.4和5.5的行为不一致:

https://drive.google.com/file/d/1FzT6oHm9T0mT2lbqY2PnrR1ZUyTKNJqn/view?usp\=sharing

你好我这边可以重现你的问题,估计是个bug,我到时候反馈下

看起来水面模型无法更新,5.5里我本地试了下有个Trick的方法;在地图里添加一个很大Ocean的水面,extends范围确保覆盖到所有WaterZone的范围,然后编辑器里选中所有的WaterZone稍微移动下触发WaterBodyCustom更新,完了以后就可以把Ocean删了。你要不先试下是否可以解决

经过和同事的询问,这是个已知问题5.6(CL38575662)已经修复。5.5里需要对分配给自定义水体的默认材质中的几个材质实例参数进行调整。

具体来说,需要关闭UseWaterInfoTexture;开启DisableDynamicBoundsClipped,并确保启用了UseScalarWaterBoxyIndex

[Image Removed]

您好,

我们尝试了一下您说的Trick方法,可能因为场景很大,而且分布比较散的原因。Ocean的水面设置的很大引擎会直接Crash。是否有其他的Fix方案能回退到和5.4一样的效果呢?

那试试一个个来,比方说在有问题的WaterBodyCustom附近拖入一个WaterBodyLake,刷新后就把Lake删了。急着解决的话就先这样再试下,我另外再问问同事这个问题是否是个已知问题,有否更好的解法[Image Removed]

非常感谢,我们试试看。

Hi,

我们试了一下,可以正常工作了。这个修改是让WaterBodyCustom完全脱离WaterZone工作对吧?因为我们发现WaterZone的设置已经无效了。

hm…果然。我不确定那个CL是否可以完整修复问题。接下去我会修一段时间假,这个问题我会让同事帮助再跟一下

好的,非常感谢。另外我下了一个5.6,发现5.6的WaterBodyCustom已经不会创建WaterZone了,看起来是完全脱离它工作了。

您好, WaterBodyCustom后续会允许脱离WaterZone和水体整体的mesh system工作, 所以5.6默认会关闭他的动态裁剪.

我测试目前引擎只会为参与水体整体mesh system渲染的water body(river, lake…)动态更新WaterZone的边界位置等信息, 所以如果你的WaterZone里只有custom body, 但仍然需要动态裁剪功能的话, 需要改动一下. 我这边看把 AWaterZone::UpdateWaterInfoTexture 中的 if (!WaterBodyComponent->AffectsWaterInfo()){return ture;} 这段去掉就可以正常更新了.

明白了,非常感谢。