-I have watched videos on how do it
-I have successfully done it on a blank project
But I cannot get it to work on my actual project with world composition. I’ve tried placing ocean, lake, river actors on my landscape or landscape proxy levels, but the end result is the same: the water is not visible. The landscape deformation works, I can add/remove splines and do everything else.
I’ve even added brush manager, edit layers is on, not sure what could be the issue, given it worked perfectly with a brand new blank landscape project (without world composition)
World Composition is being replaced with a new world partitioning system in UE5, so chances are they’re not putting any effort into it supporting a feature that’s about to be deprecated. Here’s a link to the part of the 4.26 release livestream where they basically say just that: https://youtu.be/OchRhhRaE5s?t=3411
I tried making a level without world composition at first and placing a lake on a blank landscape (works perfectly), then I enabled world composition and created a couple of proxy landscapes next to original landscape and tried putting lakes there: the lakes are bugged - lots of random noise going out in a straight line, channel curve is completely messed up. Additionally I could only see underwater post-processing effects and not the surface water. I unloaded and reloaded both proxy and original landscape a couple of times and now even underwater post-processing doesn’t work anymore.
If things work in stand alone levels, I don’t see why a persistent would mess with them.
You may be doing something completely wrong like adding the water body to the persistent or working from within the persistent.
Load up and work the individual levels (go to unlit mode to see since they don’t have light).
then instead of loading into the persistent, open the persistent and just click play.
If you don’t crash, see if the levels look as expected or not.
For me Water works. Perhaps you have to enlarge the bounds in which water is rendered in general. At the WaterMeshActor try to enlarge “Extend in Tiles”
I had Alot of issues today with It as well. i did get it working somewhat after endless search the internet and experimenting. SO figure i share my experience with you guys. I noticed when i was using world outliner. the water brush was not in the ladscape i found that if you add a ocean goto landscape where layer 1 is and right click and add the water brush it got the ocean to appear. i also noticed it was doing a weird thing where it would there was sploches of land in the ocean outside the bounds. I found when i disabled blur in the ocean detail tab it got rid of that. also if you goto the watermesh actor details tab. under mesh the extent in tiles will increase the size of the water volume. I hope that helps someone. Tho im am now running into issues with rivers the brush works but i get no water volume hopefully can figure out that one. any tips and sugggestions be great.
After painstakingly testing a number of greybox scenarios related to this I’ve been able to decipher what causes the water to break when using world composition.
Things you must do to have water working:
Your landscape MUST have EnableEditLayers set to true.
Your landscape MUST have a WaterBrushManager actor added to it’s brushes list and the same WaterBrushManager actor must exist in it’s local level to deform the height map.
Your landscape MUST have a WaterMeshActor to draw the surface of the water.
Both the WaterMeshActor and WaterBrushManager MUST be placed in the EXACT center of the origin landscape. EG: if your landscape is 100x100 units and you want the WaterMeshActor and WaterBrushManager to be located at 0,0… the landscape game object must be located at -50,-50. If they aren’t, either the heightmap or surface of the water will appear at a different location than the water objects placed.
NOTE: By default, the landscape actor’s transform is locked. To edit it, you can right click on the actor, go to Transform, then uncheck ‘Lock Actor Movement’.
Pitfalls:
Sometimes editing the various actors won’t update the scene. It’s good to try redragging your water body or pressing Force Update in the water brush manager after you make changes. Somethings reloading a level also works.
If a water body is added to a landscape with EnableEditLayers turned on and it doesn’t contain a water brush, UE will attempt to add the WaterBrushManager and WaterMeshActor to the local landscape. If your landscape has been placed off center or then gets moved after the two required components are added, the two may come out of sync. Also, by default, the WaterBrushManager and WaterMeshActor contribute to the LevelBounds via the IsRelevantToLevelBounds flag - This can cause your origin tile to show up with the wrong dimensions in your world compositor if the LevelBounds object is set to automatically calculate. You can either disable the LevelBounds relevancy, or manually set the level bounds to avoid this issue.
If the WaterMeshActor or WaterBrushManager become decoupled or have the wrong dimensions, it’s almost better to delete them and re-add them once the landscape is in the correct location with it’s correct level bounds as modifying the level bounds info that the Mesh or BrushManager is something I have yet to figure out.
A landscape can be placed off of the origin in the world compositor, HOWEVER: doing so will incur a hefty performance penalty when setting EnableEditLayers to true depending on the number of tiles in-between the compositor origin and the landscape. This is due to the number of landscape components & size of the texture needed to encapsulate the origin of the composition and the location of the landscape within the composition.
Things you can support:
Water objects (Rivers/Oceans/Lakes etc…) can exist in different levels than the origin landscape, but you won’t see them unless the level containing the WaterMeshActor and WaterBrushManager are also loaded.
A little better explanation:
The water brush uses an orthographic rendering of the splines & some imaging techniques to generate a texture representing an offset on the height map. In order to capture all of the deformations of the heightmap, the texture must be large enough to cover the entire bounds of your map, and so the water brush will attempt to allocate a texture using the level bounds to figure out how big it should be. The offset of the height map is basically what a brush is (it also includes the weight map… but getting into tmi here). When the landscape is rendered, it combines the texture with the height map to produce the actual height of the terrain. You can see these textures as various previews on the WaterBrushManager’s details pane if you need to debug.
Additionally, your landscape must be a square - I tracked this down to the scene rendering component - in particular when you try and draw an orthographic view with a width that is big enough to encompass a rectangle render target. It causes the heightmap deformations to look like they are being distorted towards your origin.
Faced same problem, ocean water was working fine with new level with no landscape composition but it was not working in my current level where I have mountains stuff. So I deleted OceanWaterBody, WaterMeshActor, and Landscape_WaterBrushManager. Then I went up to my landscape (quite up enough that my landscape was looking little) and then I added ocean water and voila it started working exactly fine.
I ended up rewriting most of this plugin for the project I was working on. There were too many hidden dependencies and issues with blending that made assumptions about which bodies of water could overlap.