In the past few months Marcin Ignac has been exploring Space colonization, an algorithm simulating growth of plants. Marcin explains the algorithm as 6 “simple” steps:
1. Populate possible growth space with growth hormons.
2. For each hormone find the nearest bud.
3. Grow each bud towards it's neighbor hormons. If there is none, kill the bud.
4. If a hormon is too close to a bud, remove it.
5. With every growth branch the buds with some probability.
6. Repeat until all hormons are consumed or all buds are dead.
By manipulating parameters like bud’s field of view, branching probability and density of the growth hormons you can achieve some really amazing results. Recently Nervous System posted an animation explaining similar process.
His first implementation was done in Cinder and led to the Crystal Infection project. Recently he has been playing with more subtle colors (yellow background examples) using Plask, programming environment created by Dean McNamee. There have also been versions made using HTMl5, few I’ve seen during OFFF this summer but unfortunately none of them are on line except this latest experiment ported from Plask.
Part of the same series, Crystal Infection is a work in progress iPad application that visualizes the growth of a virtual plant combined with cold aesthetics of crystals.
“explorations on non-photorealistic simulations of natural phenomena”
Every time the algorithm starts a possible growth space is defined and during each iteration the plant tries to expand it’s branches to fill the most space available within the reach. For me the most interesting aspect of this algorithm is the ability to control the unpredictable. Opposite to L-Systems that always look symmetrical and synthetic this algorithm creates much more natural forms.