All Projects → weigert → SoilMachine

weigert / SoilMachine

Licence: other
Advanced, modular, coupled geomorpohology simulator for real-time procedural terrain generation.

Programming Languages

C++
36643 projects - #6 most used programming language
C#
18002 projects
c
50402 projects - #5 most used programming language
GLSL
2045 projects
Makefile
30231 projects

Projects that are alternatives of or similar to SoilMachine

GSFLOW-GRASS
Generates inputs for and runs the coupled groundwater-surface water model "GSFLOW"
Stars: ✭ 24 (-85.54%)
Mutual labels:  hydrology
wflow
A distributed hydrological modeling platform
Stars: ✭ 83 (-50%)
Mutual labels:  hydrology
WMF
Watershed Modelling Framework
Stars: ✭ 22 (-86.75%)
Mutual labels:  hydrology
EarthSim
Tools for working with and visualizing environmental simulations.
Stars: ✭ 61 (-63.25%)
Mutual labels:  hydrology
pygeohydro
A part of HyRiver software stack for accessing hydrology data through web services
Stars: ✭ 47 (-71.69%)
Mutual labels:  hydrology
HydroData
An R 📦 for finding and getting geospatial earth systems data
Stars: ✭ 30 (-81.93%)
Mutual labels:  hydrology
intro-to-tidyhydat-and-tidyverse
Introduction to R and the tidyverse in Hydrology
Stars: ✭ 16 (-90.36%)
Mutual labels:  hydrology
HyRiver
A Python software stack for retrieving hydroclimate data from web services.
Stars: ✭ 68 (-59.04%)
Mutual labels:  hydrology
RivWidthCloudPaper
A Google Earth Engine based algorithm that extracts river centerlines and widths from satellite images
Stars: ✭ 62 (-62.65%)
Mutual labels:  hydrology
model-my-watershed
The web application front end for Model My Watershed.
Stars: ✭ 42 (-74.7%)
Mutual labels:  hydrology
whiteboxgui
An interactive GUI for WhiteboxTools in a Jupyter-based environment
Stars: ✭ 94 (-43.37%)
Mutual labels:  hydrology
wetterdienst
Open weather data for humans
Stars: ✭ 190 (+14.46%)
Mutual labels:  hydrology
glofrim
Globally Applicable Framework for Integrated Hydrological-Hydrodynamic Modelling (GLOFRIM)
Stars: ✭ 26 (-84.34%)
Mutual labels:  hydrology
hydrobox
hydrological preprocessing and analysis toolbox build upon pandas and numpy
Stars: ✭ 18 (-89.16%)
Mutual labels:  hydrology
pynhd
A part of HyRiver software stack that provides access to NHD+ V2 data through NLDI and WaterData web services
Stars: ✭ 12 (-92.77%)
Mutual labels:  hydrology
HydroSight
A flexible statistical toolbox for deriving quantitative insights from groundwater data.
Stars: ✭ 31 (-81.33%)
Mutual labels:  hydrology
Stormwater-Management-Model
Open Water Analytics Stormwater Management Model repository
Stars: ✭ 71 (-57.23%)
Mutual labels:  hydrology
py3dep
A part of HyRiver software stack for getting topography data within the US through 3D Elevation Program (3DEP)
Stars: ✭ 30 (-81.93%)
Mutual labels:  hydrology
erodr
An implementation of Hans Theobald Beyer's algorithm for simulated hydraulic erosion
Stars: ✭ 37 (-77.71%)
Mutual labels:  erosion
RRMPG
Rainfall-Runoff modelling playground
Stars: ✭ 56 (-66.27%)
Mutual labels:  hydrology

SoilMachine

Advanced, modular, coupled geomorpohology simulator for real-time procedural terrain generation in C++.

Visualization with TinyEngine.

Article: An Efficient Data Structure for 3D Multi-Layer Terrain and Erosion Simulation

Description

SoilMachine is a unified geomorphology simulator for procedural terrain. It represents the culmination of a lot of work on particle-based transport and erosion systems (hydraulic and wind). Most importantly, a new layered terrain data structure allows for modeling surface and sub-surface phenomena based on particle transport with multiple soil types, which exceeds the functionality of voxels.

Banner

SoilMachine is written from scratch in very little code and visualized with TinyEngine using a technique called vertex pooling, which obviates the need to remesh the heightmap (ever). It is designed to be modular and expandable.

This repo is currently in development and will probably not be done soon but I am publishing it so updates can be followed live for anybody who is interested.

Utilization

Tested on Ubuntu20 LTS. See below for how to build.

Reading:

  <> optional
  [] required

Run:

  ./soilmachine <options/flags>

Options:

  -SEED [#]     Run using sed. No seed = random
  -soil [file]  Specify relative path to .soil file

  -oc [file]    Export color map to .png file at relative path (on program exit)
  -oh [file]    Export height map to .png file at relative path (on program exit)

Note: More options and flags are planned in the future. See the todo.md file for more information.

Controls

ESC: Toggle GUI
P: Toggle Pause (Paused by default!!!)

Scroll-Y: Zoom
Scroll-X: Camera Angle
Arrow Keys: Camera Orientation
C / V: Move Camera Up / Down
WASD: Move Camera in Plane

In the GUI, a number of things can be done, including Re-Seeding the map, setting erosion parameters, tuning the soil properties without re-launching the program and tuning the visualization. More features are planned in the future (see todo.md for more information).

Building & Running

SoilMachine is visualized using TinyEngine. Install TinyEngine using the instructions at the repo:

https://github.com/weigert/TinyEngine

TinyEngine is the only dependency (besides sub-dependencies).

Once that works, build SoilMachine using the makefile and run in place (no install):

cd ~
git clone https://github.com/weigert/SoilMachine
cd SoilMachine
make all
./soilmachine

Features

Implemented

  • Vertexpool based heightmap visualization (OpenGL AZDO) to eliminate remesh cost
  • Layered terrain data structure using memory pooled, run-length encoded sediment sections as a linked list on a grid
  • Modular soil type description and "erosion chains"
  • Modular description of transport types using a particle base class
  • GUI Interface for Initial Terrain
  • GUI Interface for Defining Sediment Properties
  • Data Export (Using Commandline Flags)

Planned

  • Parallelization of the particle base class terrain interaction
  • Sediment compaction / conversion
  • Water-logging using sediment porosity
  • Implementation of multiple water tables based on Particle-Based Hydrology

Screenshots

Some example outputs:

Output 1

Output 2

Output 3

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].