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:

Tree

Trees

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:

Hilbert_curve

Hilbert_Curve

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 !

9 thoughts on “RABBIT 0.2 preview : 2d/3d LSystems + Turtle Interpretation

  1. Federico Escobar says:

    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?

  2. Michal Tartal says:

    congratulations, I am interested about L-systems.
    these pictures together with video look impresive.
    When will be the 0.2 released.
    Best regards

  3. morphocode says:

    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

  4. msgrom says:

    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

  5. morphocode says:

    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

  6. msgrom says:

    Thanks for your reply. Do you have a release date planned for the new version?
    Keep up the good work!

    Best,

    m

  7. kaktyc says:

    Hi, it is looked very interesting, but I cannot understand what component you are useing to generate this tree on video?…T Interpolater…?

  8. Pradeep Harikrishnan says:

    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?

Leave a Reply

Your email address will not be published. Required fields are marked *