Growth & Form

Simulating growth of plants with L-systems in Houdini

Background

In 2016 I was looking into digital plants when I stumbled upon The Algorithmic Beauty of Plants by Aristid Lindenmayer and Przemysław Prusinkiewicz. This gem introduces and details Lindenmayer Systems, a formal grammar for using strings of characters to draw geometric structures. It is a brilliant method for handling highly complex form in relatively simple terms, and is a flexible enough system to work fluidly in contemporary software environments. After teaching myself some Houdini, I began exploring different methods of implementing digital plants systems.



Recursion

These are a couple basic L systems, demonstrating the basic concept of recursive growth.




Figure 1

Premise: FA

 Rule 1: A=[+(d)FA][-(d)FA]

Where

 d = 20

 Generations: 0.0 - 6.0

Figure 2

Premise: FA

 Rule 1: A="(b)\(c)[+(d)FA][-(d)FA]

Where

 b = 0.8

 c = 137.5

 d = 20

 Generations: 0.0 - 10.0



Probability

This is a brief that I produced during pre-production on Aldar to communicate the two dimensions of variation enbabled by L-systems when using probability. This gives you infinite variation on any plant model.


Click to expand


Basically, if you write an L-system to model a plant that grows over time (generation count), then you have each step of growth available as an instance of that plant. If you write an L-system with probability incorporated into the rules, then you have each possible configuration of the rules available as an instance. If you do both, you can have infinite variety.


This process mimics the form of a plant in nature; no single instance is the same, but you can describe a species.