LSystems

Introduction

LSystems are the invention of biologist Aristid Lindenmayer, and are used to describe natural shapes which exhibit fractal geometry, such as plants.
LSystems define shapes with strings of text, which grow by applying production rules to them.

Simple LSystem in action:

Starting string : "A"

Rule 1 : Replace A with B
Rule 2 : Replace B with AB

The string will expand, or grow as follows:

Generation 0 : A
Generation 1 : B
Generation 2 : AB
Generation 3 : BAB
Generation 4 : ABBAB
Generation 5 : BABABBAB
Generation 6 : ABBABBABABBAB

These symbols can be replaced with ones which describe 3d graphic models, and certain ways of changing them, ie rotation and scaling etc, and can be used to create plant shapes, and other stranger creations.


A couple of simple L System models

Application

I have written a small application which creates LSystems in an easy to use manner, and adds the feature of allowing sound to animate the properties of the models.
The application uses a genetic interface, this is the perfect way to hide the complex internal workings of the replacement rules, and allow the user to make decisions based purely on aesthetic appeal.

The user is given a choice of four variations of a shape, and is allowed to choose one of these. The chosen shape is kept, and three replacements are generated from the chosen one. You can easily browse through successive generations, making decisions as you go.

The added factor not represented in these static screenshots, is that if you are playing a CD, or have live input coming into the soundcard, the shapes will be dancing in time to the music. This allows you to select shapes which animate best to the sound.
The program actually analyses the incoming sound and extracts information on the type of sound (timbre, pitch and volume), so the animation can look quite appropriate.

A gallery of some of the shapes produced by the program. These are all screen shots of the realtime MesaGL rendering. BRMT/Renderman support is included, but I havent got any decent renders lying around at the moment.