Cliff displacement/extrusion for more realistic cliffs

Hello, I’m working on a landscape material and my biggest gripe right now is that the cliffs look really blurry and the geometry of my imported heightmap is very smooth, so now I’m looking for ways to improve that.

I found this very neat video on the production of Far Cry 5 Procedural World Generation of Ubisoft's Far Cry 5 | Etienne Carrier | Houdini HIVE Utrecht on Vimeo it shows a technique for displacing terrain at high slopes based on some procedurally generated masks, the results look amazing and so I was wondering if creating anything similar in Unreal Engine is possible.

Anyone have any suggestions on what tools I can use to displace the terrain vertices like that? Right now the only solution I can think of is using displacement in the landscape material, but I’m looking for something a little more elegant, maybe something that allows me to extrude the vertices of the terrain while keeping the polycount as low as possible and which allows me to create really sharp edges and cracks.
IDK if this is possible but I was thinking of something like using a tiling low poly mesh (sculpted in zbrush to look like a cliff face) to extrude/displace the vertices of my terrain.

Anyone got any ideas or has done anything similar?

There’s mesh modification tools in the engine now, and there’s world displace and pixel depth offset for finer details, potentially. Can pieces of the terrain be cut out, modified in the engine’s mesh editor or polygon editor, and then refit in for cliffs? Could make a bunch of different, low poly meshes with variety so there’s no blatantly repititive cliffs that way. The concern I would have moreso is the materials that get it looking detailed and even having deformable / destructible or at least dust/sand/dirt falling in response to climbing and other actions to it.

Uhmm the mesh tools look interesting, is there a way to use them with my landscape mesh?

Maybe the easiest solution is really to just procedurally place cliff meshes with various LODs on all the higher slope surfaces of my terrain, I’m a bit afraid of what this may look like performance-wise tho, and if I do this, is there a way I can remove the parts of the terrain which are hidden under the cliff meshes? and maybe even remove the underside of the cliff meshes?

You dont use the landscape for a cliff. Its usually a bigger mesh composed of pieces and handled with the hlod system for resource handling at a distance.

What do you mean? usually the cliffs are made of modular meshes?
I guess that’s the usual way, but I was looking for other more procedurally friendly techniques and in the Far Cry 5 video I linked they show an example of how it can be done without modular assets

an heightmap won’t draw vertical pixels.
using houdini you would end up with meshes as well. You can’t sculpt on it like the terrain.

You can try to create a single tile landscape and turn it by 90deg. That’s about the only way to use the landscape and get detail. It’s not impossible, but why bother? A single tile is essentially a huge mesh.
You could benefit from cutting it up anyway.

Hey There, So i’m actually thinking about this for a long Time now, especially with the Megascans assets. now you could use the Landscape Mesh itself just for Rendering for long distances. For short Distances you use Megscans assets but Procedurally placed on the Place you specify with the Material Layers.
im Working out if you could place a Blueprint that takes the Positions of The Landscape object and the Procedural Mesh Placement Tools to manipulate what has to be spawned and where, based on a more complex way, to evaluate where for example cliff Meshes has to be spawned.

Im wondering if you working on that stuff now for sharing experiences?

greets from Switzerland
Lucas

… I have a problem with having to teach things to a timelord professor. Who am I? The master? :stuck_out_tongue:

Pop your heightmap into any GIS software.
Run a slope calculation.
Isolate the slope area you are interested in and generate a texture from it.

Once you have the texture, you can use that to procedurally spawn non collision items via the grass node.
Or, you can use the beta procedural tools to spawn collision blocking stuff on that specific “layer” (so to speak. Just output to a grass layer and assign no meshes to it. It should create something that the procedural tool can sample against to determine placement - a bit of a hack using what is avaliable.

Why all of that instead of just calculating slope in engine?
Well, because in engine is never as accurate math wise as a GIS software.

It’s also expensive if you let the material stay that way for runtime.
Auto material that calculate slope are expensive by nature (the calcs involved) - when you also add textures it becomes a lot. Usually too much for most devices.

Houdini aside (which I should mention went “free” a while back) you can pop the texture of the slope isolation into blender and use it to change and even isolate the area of the landscape to sculpt manual mashes on.

If you increase the base tessellation, run a couple displacements, and simplify - you end up with near perfect low poly count realistic cliffs to turn into procedural assets.

Hahaha yes seems like you are now, maybe we will meet in an Epic Disscussion about Teraforming a Planet in 200 Years again :stuck_out_tongue:.
Ok that seems like a a very hacky way to accomplish something like that.

But that seems like a legit way i will try that out for sure on our Map, as soon as i am dome with the Char logik :+1:

Do you have any Result Screenshot from this Workflow, i would like to see that.

greetings from Switzerland
Lucas