Using L Systems

First off, L-Systems are mathematical formulas in Houdini that generate organic structures and some fractal structures. As well as anything that follows a Lindenmayer-System , which the node is based off of.

Let's take a brief history lesson, and understand who Lindenmayer was, and what exactly is his formula that Houdini is executing. 

Aristid Lindenmayer was a Hungarian Biologist that primarily worked with fungi. (1925-1989) While working with plant cells he discovered that all plant cells have a certain way of dividing. This process of cell division he mimicked with something we now call an L-system. A L-System is a String formula consisting of letters/symbols, that will tell Houdini how to build a geometric structure. However the same mathematical formula can be applied to other forms of science, physics, and other simulation software.

Most L-Systems operate on a basic equation: G = (V, ω, P)

G = The Growth

V = The Constant or the Variables in the equation.

ω = Is the Value of the initial state of the L-System We also call these the start or axiom.

P = The production rules of the variables. The production is made of two different strings. The Predecessor and the Successor.

There are many different equations L-Systems use. A well as Houdini. There are some preset ones, and some you can enter into the L-System. Let's break a few equations down, and understand what they create.

Algae

Let's start with Algae as an example as this was Lindenmayer's first L-System. As well as the most basic one.

Variables : A B

Axiom : A

Rules : (A = AB), (B = A)

 

In this L-System, the growth of the system exponentially increases over time, and per generation. So the growth in a graph would represent as such:

G 1 = A

G 2 = ABA

G 3 = ABAAB

G 4 = ABAABABA

and so on....

  • Since the Axiom is A, the growth starts at A. Since the variables are A and B, only A and B appear in the growth. The rules are that; if there is an A present, the next cycle must have a AB. If their is a B present, the next cycle must produce an A. There is more to this equation. But this is the most basic breakdown of it.

Dragon Curve

Variables : X Y

Constants : F + −

Axiom : FX

Rules : (X = X+YF+), (Y = −FX−Y)

Angle : 90°

So as you might see already, this L-system is a bit harder to understand. But let's break it down. We have our variables, Rules, and Axiom. However, what do our constants and angle mean? In this case the angle and the constants are connected. the - sign tells the system to turn left 90 degrees, and the + to the right. The F constant tells the system to start drawing forward to the right or to the left. 

Fun fact about this System. It is also called the Jurassic Park Dragon Curve. 

This Curve also operates a bit differently as it is based on the whether or not the system is bending in a right or a left direction. You may notice from a Dragon Curve that it appears to be one connected line that is bending over , and over to create boxy circles. These connected circles also seem to bend and grow into a curve with each generation. The direction/boxy circles this line is creating, is based on the direction left or right.

If we were to show the directional growth on a graph sheet of this Dragon Curve, it would look something like this:

G 1 = R

G 2 = RRL

G 3 = RRLRRLL

G 4 =  RRLRRLLRRRLLRLL

And So on....

The R's stand for Right, and the L's stand for Left.

Fractal Plant

Variables : X F

Constants : + − [ ]

Axiom : X

Rules : (X = F+[[X]-X]-F[-FX]+X), (F = FF)

Angle : 25°

So once again we have our angle, variables,constants, axiom, and rules. As well once again our F variable means draw forward on our angle. -; means turn left 25 degrees. +; turns right 25 degrees. In this case, X controls the growth of our plant/curve, and the constants; [ ], saves the position for the position and the angle on the curve. Therefore, our start(axiom) angle and position will always be included in our formula, and will remained unchanged.

With this Fractal Plant in Houdini you can create anything from seaweed, bushes, grass,etc. 

Koch Curve

Variables : F

Constants : + −

Axiom : F

Rules : (F = F+F−F−F+F)

 A basic Koch curve is special in the sense that it only uses right angles(90 degrees). Once again our variable F means draw forward, and our + and - mean draw left or right. 

 

Hold on, if our equation operates on right angles only, shouldn't that be stated along with our axiom and variables?

 

Well, that's a good question. When we have an equation of which we only have the + and - signs present, and there is no angle. The angle is automatically assumed to be 90 degrees. There can be Koch Curves with different angles present, but they will be stated.

Written down the growth of our Koch Curve looks something like this:

G 1 = F

G 2 = F+F−F−F+F

G 3 = F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F

And so on...

 

In Houdini, by default through the Gear Parameters of the L-System. You can access the L-System presets. So far the defaults are:

  • Branch

  • Bush

  • Cordate Leaf

  • Crack

  • Dandelion

  • Gnarly Tree

  • Gosper

  • Koch 1

  • Koch 2

  • Koch 3

  • Lightening

  • Lily

  • Monopodial Tree

  • Organic

  • 2D Plant A

  • 2D Plant B

  • 2D Plant C

  • 2D Plant D

  • 2D Plant E

  • 2D Plant F

  • Propeller

  • Roots

  • Sympodial Tree

  • Ternary Tree

  • Wheel

Some of them are fairly straight forward. However, a Koch or a Ternary Tree may not make a lot of sense. So feel free to explore the software, and understand what exactly they do.

This is a very basic breakdown of some of the many L-Systems in Houdini, and in Lindenmayer's Systems. But later on, in another page I will break down each of these curves/systems in a more complex and mathematical way. I would also recommend reading up on L-Systems yourself, as there are more existing ones that I have not broken down.