overview
Terrable is a Houdini plug-in built with C++ and is an implementation of two separate papers:
Authoring Landscapes by Combining Ecosystem and Terrain Erosion Simulation (Cordonnier et al., 2017)
L-systems: from the Theory to Visual Models of Plants (Prusinkiewicz et al., 1997)
Built in a group of three, this project uses a grid- and layer-based terrain simulation framework to stochastically simulate geomorphological and ecosystem events over time.
For full details, check out the project's design doc and Github page.
details
The plug-in is implemented as a custom SOP node in Houdini. To begin, the user connects a heightfield into the Terrable Node. The Terrable Node takes in a heightfield as input, alongside high level parameters such as the Number of Years to Simulate, as well as low level parameters that modify the different ecological and geomorphological events that are used to conduct the erosion and ecology simulation. These include events such as rainfall, lightning, and wildfires affected by wind intensity and direction.
Soil moisture, temperature, and exposure to sunlight is also taken into account for ecological simulation, as the plugin will generate trees and shrubs growing over time, with customizable L-system grammars.
Our tool supports caching and smooth playback across the years simulated, and thus, the user may connect the Number of Years to Simulate parameter with the default Houdini timeline framecount such that the user can easily playback the simulation.
Then, the user can configure the geomorphological and ecological parameters to achieve a desired look in the terrain, whether that be a luscious forest, or an arid desert, or anything in between. Due to the sheer size of the different parameters possibly being a high learning curve for the user, we implemented Template buttons, which are a set of default presets that result in specific types of looks. Currently, there are 4 Template Buttons, “1. Desert, 2. Canyon, 3. Grassy Mountain, 4. Lush Forest.” The user can use the templates to get a grasp on what events result in what behaviors, and thus fine-tune their simulation to get their desired outcome.