(DOWNLOAD) Realistic Procedural Desert

This is something I’ve been working on recently, first I tried World Machine but I wasn’t able to achieve the look I wanted so I switched to Blender. In blender I was able to procedurally generate a heightmap with distorted noise and then render it to a 4096x4096 PNG file. When first imported to UE4 the terrain is all blocky but with the smooth tool that can be fixed easily. The result is satisfactory, but there are a lot of shadow issues with the terrain and it’s pretty much impossible to get the sharp edges of real sand dunes with this method.

Let me know what you think, any advice or critique is appreciated!

Here’s some screenshots:

http://i.cubeupload.com/mIXdG4.png

http://i.cubeupload.com/B85IB3.png

Download the .blend file here: dunes
(Edit the heightmap until you’re happy with it then render it out at the size you want by making a material that uses the heightmap as a texture.)

@Dogsofknowledge It’s looking really nice! Could you give some insights on how you distorted the noise for the sand dunes. I’m working on a node based landscape tool and would like to see if we can model a similar noise function with it

Keep up the awesome work and I’m looking forward to seeing what you create next

Thanks, I just used the distorted noise texture in blender and set the basis to voronoi f1. With this method you can make heightmaps at resolutions up to 16k or bigger depending on how much time you want to spend rendering. In the provided blend file you can get a closer look at how it works.

Currently experimenting with tessellation, it really improves the look of the sand but it’s way too slow. I’m trying to set up distance based tessellation but I really have no idea how to go about doing that.

http://i.cubeupload.com/h4lAVm.png

Haven’t you got this to work? This should be the best approach. Also 4.13 have got some optimizations regarding this matter, where only the highest lod will produce tessellated triangles, but to futher optimize this to only affect the nearby triangles to the camera, the above technique still have to be implemented in the material.

The first problem is that I have no clue how to implement the setup on that page into my material, and there’s a bug or something in 4.13 that breaks the landscape completely. In 4.13 for some reason only the highest LOD is rendered and the landscape is culled at any other LOD. It might be a problem with my material, but it doesn’t happen in 4.12.

John Alcatraz reply had this image on the answerhub:

The important part is the Tesselation Multiplier connection, which tells the rendering pipeline how much the triangles have to be tesselated. Since the calculus use the current camera’s world position the nearby triangles around the camera will be split up using a high Tesselation Multiplier, and in the distance this TMultiplier goes down to 0, where no tesselation will happen. Imagine a radial gradient fade which will be applied on the landscape around the camera.

I’ll update my engine soon to be 4.13 so i can test this on a landscape but if you see there’s a bug that you can reproduce in 4.13 maybe you should open a file on the answerhub to report the error. Anyway, this should work in 4.12.x just use it for the time being.

Yeah, I tried copying that image but it just gets rid of all the tesselation without improving the FPS at all. I’ll do some more testing in 4.13 and then post a bug report on answerhub.

The “distance” (offset) as well as the “fade length” values can be tweaked to suit your landscape dimensions and characteristics. Using the values from the image (eg. fade=1000) only a super tiny landscape will suit, but for larger landscape you might want to use values like 10k or higher for the offset value.

Anyway i did this little test, implemented the same graph with the fade value of 1000 and seem to be working just fine in 4.12 on a tiny landscape.

https://dl.dropboxusercontent.com/u/4943998/tessmul0001.gif

Ok, I increased the fade value and it works fine now, but the FPS isn’t any different so there’s not really any point in doing all that… Thanks so much for all of your help though, I really appreciate it!

Good Job! it looks pretty good. specially colors.
i made a desert scene some months ago and i actually made it with world machine,i guess my reference was a lot different from yours!
87b8f83b3d2a9021616688836ad6148bac456a30.jpeg

i didint use tesselation, it was slow and unnecessary i used POM instead.

0956695f3fc5c64ae758c7642084836d8f6788e9.jpeg
01754f2f6efb56c0c4378052847b8083d0608d15.jpeg

also use a sand texture for specular and roughness it can make the sand feels a lot better
c49e744f4213fae2d7e03da5d5c83c6cb3059392.jpeg

i didn’t finish the scene as it was just a little test but here is my last result
after adding cloud and playing with post process a bit.
588d43ae5c1a5b68e259120385bd9d6786c70c43.jpeg

i also used multiple Diffuse and Normal map, painted them over different places on terrian as you can see in the last picture the top of peak is quite different and a lot smoother compare to lower parts.

i got my sand textures from here:
http://www.textures.com/download/soilbeach0087/32630

Nice result, did you use a third party macro? Thanks for the tip though, I’ll see if I can get a POM material working.

no I didn’t used any micro, its actually super easy to make a desert.
1.use a PerlinNoise generator
2.set feature size to 0.6
3.set noise type to “Stephen’s Experimental”
4.set persistence to a low value (lower than 0.35)
5.add a clamp node and clamp your perline noise “from 0 to 450”
and that is it . with only two node.
you add more filters and generators to make it more like what you want

Awesome, thanks a lot! I don’t actually have WM working now, I lost the download email for it and I’m waiting for the support team to reply. Once I get it working I’ll try this:)

Hello, you will not be able to pass me the png 4096x4096 because I can not open the file my pc made of ****. Otherwise very nice work I was looking exactly his!