
When I started with Houdini one of the first things I made where tools to generate Planet Displacement Maps for Artists. It’s all about Noise, especially useful for terrain is the Fractal Brownian Noise approach: https://en.wikipedia.org/wiki/Fractional_Brownian_motion
The approach comes from Inigo, he’s at another level when it comes to CG and Math:
https://www.iquilezles.org/www/articles/fbm/fbm.htm
This is the implementation I did in VEX, this might not be correct but worked well enough for my experiments, you can run this in a volume wrangle. Make sure you premake layers in following order: Cd.r, Cd.g, Cd.b, use a copy layer operator for that. Its important if you want to write RGB values into a 2D heightfield to have these 3 layers.
float fbm( vector x; float H) { float G = pow(exp(-H), .6666); float f = 1.0; float a = 1.0; float t = 0.0; //how many octaves: for( int i=0; i < 8; i++ ) { //anoise is alligator noise, try noise() or other noises here, its fun to play around with t += anoise(f*x); f *= 2.0; a *= G; } return t; } //Then you can do something like this: vector2 q; vector2 r; vector p = @P/1000 + chv('offset'); q.x = fbm( p + (0.0,0.0), 1.5 ); q.y = fbm( p + (4.2,1.3), 0.91 ); r.x = fbm( p + 4.0q + (1.7,9.2), 0.8 ); r.y = fbm( p + 4.0q + (8.3,2.8), 4.5 ); float f = fbm( p + 2.5*r, 2.1); //Mix between 2 gradients with q.x as threshold: @Cd = lerp(chramp('rmp', f), chramp('rmp2', f2), q.x);
All the following Images are generated with that code. I give the algorithm a color palette and feed it some random numbers and it gives an infinite amount of possible outputs





















