How can I make an ocean to fill go with my custom landscape?

Hey guys,

Im working on a large open world project in UE5 and I have hit a major road block. I have a large custom landscape that I just finished shaping but now I can find any way to place water in the landscape that will match with my landscape. The only way to make it work that I have found is with a custom water body but it still goes under my landscape and has no under water post process effects.

Has anybody out there found a solution to creating large oceans that will match up with your heightmap and terrain? I dont know why they made the Ocean body include an island. Seems kind of unintuitive to not have a body of water that naturally fits heightmaps. I hope that there is a solution outt here.

Thank you for the help.

1 Like

I am having this same issue. Did you find a solution?

Water Body Ocean at least, by default will recognise landscapes and be culled underneath it, and the waves will attenuate down to O at the shoreline; in Early Access however these features dont seem to work properly with large worlds using World Partition. They do work on single landscapes though.

You also may need to adjust its Blend Mode in the details panel to get the correct behaviour with an imported landscape.

Regarding underwater post processing - make sure you open up the collision settings in the details panel of the Water Body Ocean and extend its bounds in X and Y far enough to be present wherever you are in the map. By default they are fairly small values.

Thanks. Coming from Lumberyard I am used to simply placing an infinite ocean which fills in all low points of the terrain mesh, and then you simply adjust the Z placement to determine how deep or shallow you want it to be on the Terrain. I was hoping there would be something similar in Unreal but I can’t seem to get water to work at all with my heightmap. Maybe I’m just doing it wrong using the Ocean plugin.

I used CryEngine 3 many years ago, I do remember it having very easy to use water tools. Unreal’s are currently more finicky, and its something that I really hope they work on. It has some very nice features and its very adjustable and customisable in classic UE fashion, but usability leaves a bit to be desired atm.

I always work with imported landscapes from World Machine - a tip I’ve found that is very useful is to construct the height map with the intention that the water line is at 0 in Z, and exactly half your height map lays above and below the water line. Unreal water bodies get upset if theyre too far away from the origin and sometimes just refuse to render.

Also as (kinda) previously mentioned, UE water can affect the landscape through edit layers. I don’t use this feature because enabling edit layers on a 256 sq km landscape bricks my video card, but if you are using it, be sure to set the right blend mode in the details panel. To be honest I’m not absolutely sure what the correct mode is to leave a landscape untouched, but I recall having success with “Max” and “Additive”. Theres only 4, so try each until you get the right behaviour.

I am working a lot with the Ocean actor right now, and I can promise it does work if you get it set up right. It’s just much more finicky and very easy to have it just go missing entirely until you get used to its setup quirks.

With that said, because of the way its built, its possible to do your own home-brew modifications to the shader which is nice. I currently have a modified version of the material that has rolling shoreline waves and a couple of other little things built on top of the original.

Final edit: I messed around with the main branch from Git the other week. Usability of the entire thing was a mess, as might be expected from that branch, so I switched back to the Early Access for now. However I did notice that they appear to have made changes to the Ocean actor to the effect that it is now automatically an infinite plane. In Early Access however, you will need to select the WaterMeshActor that is added to the scene automatically when you add a water body, find its “Extent in Tiles” and/or “Tile Size” in the details panel, and set X and Y tile numbers to some value that is large enough to give you the illusion of infinity. It defaults to 64 which isn’t very large. I switched it to 512 in each direction for now.

Wow! thanks so much for this! This is a major help. I had spent about 6 hours trying to get anything to work with ocean actor and just could not seem to get it. I will keep at it since I really enjoy this engine and really want to finish this project with it. My Heightmap was 8k, but I reduced it hoping I could simply keep adding block to it. But then when I could not get the ocean actor to work as I wanted I got discouraged. I will keep at it until I get it working, using your tips. My last resort would have been to use the open ocean plugin the community had created but I didn’t know much about it, and I knew there had to be a way to simply make a large ocean with the game map in the center.

No problem. Here’s a janky and unflattering WIP video of my Ocean actor just to help you believe that it can be done. Recording gets a bit choppy halfway through, but it gives you an idea. This map is generated from satellite DEM data for the island of Barbados, processed through Substance Designer and World Machine with respect to my first bit of advice to you about making sure the height map is half above and half below the water line, so that you can stick both the landscape and the water actor at 0 height, and have it line up. And that way the water body feels no need to lose its mind and disappear because its right at the origin, where it apparently likes to be.

Give it another shot, and see if you can get it working. Good luck!

1 Like

Haha! Very nice. I like how the water is deformed by the character. Also looks very realistic along the shoreline too. What is the size of the map?

Thanks! Lots of polish still needed, but it’s working well enough to fiddle with other things for a while. It’s 16km by 16km, so 256 square, divided up into 900 tiles of about 500 meters each using World Partition.

Man that’s awesome. I need to learn how to get world partition working. My map is 8k x 8k and seems to be fine although it could use some performance optimization. Although I did not see any settings to reduce draw distance yet, but I’m sure I’ll find it.