otto-link / HighMap

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

ex_hydraulic_vpipes_1

Warning

Work in progress, use at your own risk!

WS310836__67171

License

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

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 eigen3 libpng boost-range boost-type-erasure boost-geometry glm ocl-icd-opencl-dev libassimp-dev

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

About

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

License:GNU General Public License v3.0


Languages

Language:C++ 95.9%Language:C 2.9%Language:Python 0.8%Language:CMake 0.3%Language:Shell 0.1%