music: “The Slackers”
Exploring LSystems in 3D
MORPHOCODE is working on the new release of RABBIT – our plug-in for Rhino & Grasshopper. The upcoming release contains new powerful tools: LSystem component and a 3D Turtle Interpreter component.
With RABBIT 0.2 by MORPHOCODE you would be able to create different types of LSystems: (deterministic, stochastic, context-free, parametric) and visualize them as geometry structures.
Few images produced with RABBIT 0.2:
What is an LSystem?
In Brief: LSystem is a parallel string rewriting system. A string rewriting system consists of an initial string, called the seed, and a set of rules for specifying how the symbols in a string are rewritten as (replaced by) strings. Let’s have a look at a simple LSystem:
seed: A
rules:
A = AB
B = BA
The LSystem starts with the seed ‘A’ and iteratively rewrites that string using the production rules. On each iteration a new word is derived.
n is the derivation length = the number of iterations
n=0: A
n=1: AB
n=2: ABBA
n=3: ABBABAAB
n=4: ABBABAABBAABABBA
…
All these words form the language of the LSystem.
Application of LSystems
Since their original formulation, L-systems have been adapted to modelling a wide range of phenomena including:
- herbaceous plants
- neural networks
- the procedural design of cities
- generative art
- generative music
There exist different types of LSystems: deterministic, stochastic, context-free, context-sensitive, parametric, timed-depending on the rules and the way they are applied by the LSystem.
For more info about LSytems, we strongly suggest the following resources:
- The Algorithmic Beauty of Plants & other papers
- Designing with L-Systems Series by Griswold, Ralph E. – Part 1
- Design by Evolution: Advances in Evolutionary Design (Natural Computing Series)
- LSystems in architecture by Michael Hansmayer
- Wikipedia LSystems
What is a Turtle Interpreter?
In Brief:
The derivation strings of developing L-systems can be interpreted as a linear sequence of instructions (with real-valued parameters in the case of parametric L-systems) to a ‘turtle’, which interprets the instructions as movement and geometry building actions. The historical term turtle interpretation comes from the early days of computer graphics, where a mechanical robot turtle (either real or simulated), capable of simple movement and carrying a pen, would respond to instructions such as ‘move forward’, ‘turn left’, ‘pen up’ and ‘pen down’. Each command modifies the turtle’s current position, orientation and pen position on the drawing surface. The cumulative product of commands creates the drawing.
RABBIT 0.2 provides a 3d Turtle Interpreter: the “turtle” moves and draws graphics in 3d. The TurtleInterpreter could be used by itself or together with the LSystem component giving you the opportunity to explore new designs.
Feel free to comment here !
Hey guys, congratulations! Looks like a very powerful and useful plugin for GH.
Do you think that in a close future you will be able to create a plugin which manages the parameters of a “Real time-virtual enviroment” which interacts with the objects,generating artificial life and emergent patterns?
congratulations, I am interested about L-systems.
these pictures together with video look impresive.
When will be the 0.2 released.
Best regards
Hi guys,
Glad you like it 🙂
@Federico Escobar
It is a powerful tool because the LSystem, as a rewriting system is very powerful. The grammar of the LSystem – the axiom and the rules drive the whole system, that makes it very easy to modify it and play around…
About “The Real-time virtual environment”:
With RABBIT 0.2 the user can play with the rules and explore the new generations of the LSystem, which display emerging patterns. A timer can be used to automatically observe the growth of the system. At the moment you cannot modify the rules of the LSystem during the growth process, if that was what you meant. But hopefully we’ll manage to do that in a close future, if there’s an interest in the community…
@Michal Tartal
Happy to hear that you’re interested in RABBIT 0.2 and find the images impressive.
We hope to release it within a few weeks.
Best,
morphocode
Hi.
Is it possible to set up a determined initial condition with rabbit and evolving from there? I cant seem to manage as it is but maybe im missing something? For example being able to feed a boolean list to create a CA module.
Thanks and good work,
M
Hi msgrom,
At the moment you can only explore random or pre-defined initial configurations.
With the upcoming RABBIT 0.2 you’ll be able to define an initial configuration of the CA
Best
Thanks for your reply. Do you have a release date planned for the new version?
Keep up the good work!
Best,
m
We’re still working on some issues. We plan to release it within a week or two.
Best
Hi, it is looked very interesting, but I cannot understand what component you are useing to generate this tree on video?…T Interpolater…?
Can any one please help me with 3D plant modelling.
I need to generate a tree using a grammar and couple of production rules to form the branches.
I don’t have a good idea.
So, can anyone please suggest me some grammar with couple of production rules?
Is context sensitive code applicable here? for example, will writing B>B work?