Skip to content

keyboardcat1/Erosio

Repository files navigation

Erosio

A Java API for fast erosion

Overview

This project is a Java implementation of Large Scale Terrain Generation from Tectonic Uplift and Fluvial Erosion by Guillaume Cordonnier. All described methods, excluding 3D rendering, are implemented with similar (slightly faster) computation times.

Erosio's features include:

  • Fluvial erosion with control over uplift, initial height, erosion and precision parameters
  • Interpolation of the samples' heights
  • Reusable geometry inputs for fast repeated generation
  • Polygonal erosion domains

Example

// Define bounding coordinates
RectI bounds = new RectI(-256, -256, 256, 256);

EroderSettings settings = new EroderSettings(
        /*Uplift*/ (p,t) -> 1.0, /*Initial height*/ p -> 0.0,
        /*Erosion rate*/ p -> 2.0, /*m:n ratio*/ 0.5,
        /*Max slope*/ (p, h) -> 30.0,
        /*Time step*/ 1, /*Max iterations*/ 10, /*Convergence threshold*/ 1E-2
);

// Generate geometry input (reusable)
EroderGeometry eroderGeometry = new EroderGeometryNatural(
        EroderGeometry.RectDtoPolygon(bounds.toRectD()), /*Inverse sample density*/ 2, /*Seed*/ 2
);

// Erode
EroderResults results = Eroder.erode(settings, eroderGeometry);

// Interpolate height by nearest neighbor
Interpolator interp = new InterpolatorNN(results);
// at point (2.0, 3.0)
double height = interp.interpolate(2.0, 3.0);

NN interpolated heightmap GaussianKernel interpolated heightmap Phong interpolated heightmap
Resulting heightmap computed in 10 seconds (left NN, center GaussianKernel, right Phong)

Usage

Erosio is available via GitHub Packages. Learn more about it here (Maven) and here (Gradle)

Gradle

dependencies {
    implementation 'com.github.keyboardcat1:erosio:2.2.5'
}

Maven

<dependency>
  <groupId>com.github.keyboardcat1</groupId>
  <artifactId>erosio</artifactId>
  <version>2.2.5</version>
</dependency>

WIP

  • Next version: more work on interpolation
  • Version 3.0: GPU optimized

About

A Java API for fast erosion

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages