/HighMap

A C++ library to generate two-dimensional terrain heightmaps for software rendering or video games.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

HighMap

A C++ library to generate two-dimensional terrain heightmaps for software rendering or video games. HighMap is the core solver of the Hesiod GUI.

Warning

Work in progress, use at your own risk!

License

This project is licensed under the GNU General Public License v3.0.

Python binding

pyHighMap allows you to use a few functionalities (for now) of HighMap directly in your Python projects.

pip3 install pyhighmap

Getting started

Getting the sources

Use git to retrieve the sources:

git clone git@github.com:otto-link/HighMap.git
cd HighMap
git submodule update --init --recursive

Building

Linux

Build by making a build directory (i.e. build/), run cmake in that dir, and then use make to build the desired target.

Example:

mkdir build && cd build
cmake ..
make

Simple examples are provided for most of the functions, for instance:

bin/./ex_noise_fbm
eog ex_noise_fbm_*.png

Windows

Use PowerShell to clone the repository (because Visual Studio won't clone the submodules) using git command lines (see above).

Install the missing OpenSource dependencies using vcpkg:

vcpkg install libpng glm ocl-icd-opencl-dev assimp opencv

You should then be able to build the sources using Visual Studio.

Usage examples

ToDo.

Documentation

Development roadmap

  • Heightmap generation and alteration
    • procedural noise (Perlin, fractal...)
    • controlled generation
      • terrain surface from a set of points (thinplate interpolation)
      • terrain surface from a sketch / splatmap
      • pointwise modifications
  • Physics-based mechanisms
    • erosion / deposition
      • thermal
      • hydraulic
      • sediment deposition
      • wind
    • hydrology
      • surface water system (stream and pool maps)
      • downcutting (vertical erosion of stream's bed or valley's floor)
      • heightmap fixing to ensure unbroken flow streams
      • snow deposition
      • ice floe
      • lava/glacier viscous flow
  • Biomes
    • micro-climate
      • dominant wind
      • precipitation map
      • snowfall map
      • sun exposure
    • soil type
    • vegetation (flora)
    • animals (fauna)
  • Object automatic placement
    • rocks, boulders, cliffs...
    • trees
    • cities
  • Anthropic features
    • roads / paths
      • communication network
      • path/road digging and leveling
    • cities
      • ground leveling
      • inner structure (streets)
    • agriculture
  • UI
    • splatmap generation
    • multiscale terrain class
    • gateways to Unity, Unreal Engine...
  • Performances
    • distributed / tiled computation
    • multithreading