Mesh Recursive Subdivision based on Alain Fournier’s algorithm

The principle of the subdivision method to generate mountains is to recursively subdivide (split) polygons of a model up to a required level of detail. At the same time the parts of the split polygons will be perturbed. The initial shape of the model is retained to an extent, depending on the perturbations. Thus, a central point of the fractal subdivision algorithm is perturbation as a function of the subdivision level.

Concerning mountains, the higher the level the smaller the perturbation, otherwise the mountains would get higher and higher. In addition there must be a random number generator to obtain irregularities within the shape – and to achieve a kind of statistical similarity:

P_n = p( n ) * rnd();

Where p_n = perturbation at level n,
P( ) = perturbation function depending on level n, and
Rnd( ) = random number generator.

Fournier developed a subdivision algorithm for a triangle. Here, the midpoints of each side of the triangle are connected, creating four new sub triangles.

Based on this algorithm, the process is done recursively to all the new triangles generated so that the shape is not limited to vertical mountains.




Random perturbation is where the first iteration is based on a random parameter within the range of 0-9 and the following iterations also are based on a random parameter. This is done using grasshopper by setting the seed number of the initial polygon and the seed number of the iterations. All iterations perturbed based on the z-axis of the new polygon produced.

This resulted in a different shape of the ‘base’ and all the iterations after the first one, ranging from small to big volume depending on the seed of the random number generated. By producing polygons using random perturbation, each iteration is different than the others. The iteration runs for ten (10) times using grasshopper.

Base perturbation * random seed: 1 – 10

Second – third perturbation * random seed: 0 – 10



Based on the principle, one module is chose to continue with the next step. The module chosen is the 5;5 module which is Base perturbation * random seed: 5 and Second – third perturbation * random seed: 5. After the second iteration, whenever there are surfaces which will intersect, one or both of the surface is removed. This resulted in a random yet in control structure based on the principle applied.





WP_20141106_02_09_48_Raw copy

For the next brief, I am developing the module to grow further than the third iteration and grows following a certain flow.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s