written in Rust

Small program which makes it possible to create 3D landscapes (meshes) from simple input bmp images.
bmpLandscape reads a bmp image and defines all black pixels as maxima within the landscape.

Below an example input file. The shape of the landscape has been drawn with a 1px wide pencil. The pixel width and height of the image maps 1:1 to the vertices of the output mesh. Therefore a 1,000px * 1,000px image will produce a mesh with 1 million vertices.
Input Image

The final shape of the landscape is the sum of multiple octaves of Perlin Noise and the inverted distance to the closest point in the input image.
There’s also a water level. Every vertex which would be lower than the water level is set to it. This creates the impression of a water surface.
The produced landscape can be seen from multiple angles below. The landscape itself is noisy, but follows the input’s shape. To render the mesh I used MeshLab.
Output Image View 1 Output Image View 2 Output Image View 3