A node based terrain generator using Qt, Paceholder's Nodeeditor, and libnoise.
- Perlin, Billow, RidgedMulti & Voronoi coherent noise generators with value setting nodes
- Heightmap Generation with resolution & bound setting nodes
- Image Rendering with automatic gradient generation - brightness, contrast & colour setting nodes
- Image Exporter (for use as displacement maps), Image viewer and Image Importer
- Preview Link node to send heightmaps to NNPRV to preview heightmaps in 3D, and export OBJ files
- Ability to save and load node graphs in .flow files (json format)
- Changing bounds or resolution values after heightmap generation doesn't affect result until the 'Terrain' input data is refreshed - temp workaround is by clicking generator image
- libnoise Scale Bias implementation
- libnoise Selection & Combiner nodes
- User input paint tools for raising/digging terrain - though for now this can be done on the OBJ in 3D DCC of choice by scalaing a soft selection.
- Multi-threaded noise generation by dividing chunks set by the bounds
- Image combiner nodes such as Add, Multiply, Divide etc
- Heightmap clipping indicator
- Merge ID declaration with Terrain Data
Use NNPRV to preview terrain as your generate your heightmaps.
To setup nodenoise & nnprv to work with each other, just make sure you clone into the same directory: (this includes the tests )
- Open nodenoise
- Right click in the graph to open the node menu (you can search by typing!)
- Connect your nodes together and output terrains!
A file demonstrating a simple graph is provided in flows/perlin_demo.flow You can load this with the menu bar.
To create a terrain, you'll want:
- A noise generator (Perlin, Billow, RidgedMulti, Voronoi)
- A heightmap generator - You can alter the resolution and generator bounds
- Two Image Renderers, one for a heightmap and one for a diffuse
- An Image Writer or Preview Link
That's it!
Link to a handy fork of libnoise that uses cmake instead of static makefiles by qknight.