The definitions demonstrate how to create 3D Branching Structures using Rabbit. How to control parameters: angle, thickness, length.
More about Branching Structures:

The meanings of the symbols:

F move forward at distance L(Step Length) and draw a line
f move forward at distance L(Step Length) without drawing a line
+ turn left A(Default Angle) degrees
turn right A(Default Angle) degrees
\ roll left A(Default Angle) degrees
/ roll right A(Default Angle) degrees
^ pitch up A(Default Angle) degrees
& pitch down A(Default Angle) degrees
| turn around 180 degrees
J insert point at this position
multiply current length by dL(Length Scale)
! multiply current thickness by dT(Thickness Scale)
[ start a branch(push turtle state)
] end a branch(pop turtle state)
A/B/C/D.. placeholders, used to nest other symbols

Get 3D Branching Structures #1 Get 3D Branching Structures #2

27 thoughts on “L-Systems: Creating 3D Branching Structures

  1. morphocode says:

    Hi yaser,

    You can’t control the growth of the L-System using a vector. The turtle is unaware of external vectors during the interpretation of the L-System symbols. You can specify initial position and orientation but after that the Turtle will move according to the growth rules. If you want to make the L-system grow in some direction, you need to experiment with the production rules and the angle increment.

    probably Galapagos can be helpful in this case…

    Best Regards,

  2. tnarch says:


    thanks for a great release. what’s is the string for multiply current angle by dA? thanks.


  3. morphocode says:

    Hi there,

    the symbol is ; but it’s not implemented in this version of Rabbit.
    If you want to vary with the angle, you can use a smaller angle.. say ’15’ and then use a single or multiple rotation commands depending on whether you need to turn 15,30,45,… degrees.


  4. dasha says:

    Hi there. Thanks for creating this and for updating it! I’ve been trying to use the tube settings in Rabbit to create scaled tubes along a 2d branching structure. However, I’ve been having trouble making the profile curve rotate to the “edge line” at the start point of the “edge line” rather than at its end point. Because of this, the loft is uneven. Is there a way within the turtle to alter this? I’m happy to post images if necessary. Thanks so much!!

  5. Agneesh says:

    Hi there,

    In this tutorial, Axiom and production code is exactly the same for each example, still the outputs are different. Could you please explain me what am I missing here? Moreover, it might be slightly dumb question, what are the parameters to generate any production rule?

  6. Agneesh says:


    I’m working with Rabbit L-Systems to create a branching structure. I want to vary the thickness of the limbs as the structure grows, such that it is thickest at the base (just like the pink coloured structure on Morphocde’s Rabbit’s download page)

    When i use simple series + scale, i do not get the desired output (see attached). I have tried grafting and flattening the output before applying scaling.

    However, it seems to be more complex than that. If I’m not mistaken, this may be achieved by taming the data structure. I’m not a pro at it. Can some-1 help me please?

    Thank you,

  7. Agneesh says:

    Thank you so much. That helped a lot.

    One more query, I’m sure it is easier said than done. Is it possible to limit the branching to only one at a time ie. avoiding a split into three branches from a single point?


  8. morphocode says:


    Probably you can use multiple placeholders: A, B, C and define different production rules for each of them so that only A and B produce splitting of the branches, while C defines other behavior(ie. does not split the branch).

    In this scenario a timed parametric L-System would be helpful, but Rabbit 0.3 does not support this type of systems yet.


  9. stefanation says:

    I’m trying to download the 3D branching structures 1 and 2. The main pages are hieroglyphics and codes, and they are not working. Whats going on?

  10. says:


    I’m trying to use this to model mangrove roots, can you offer any help with this?


  11. Jean says:


    I’m currently using your Rabbit program on grasshopper for building a tree and I would need your help concerning two problems I’ve encountered.

    The main parameters of the tree are:

    axiom: F
    rule 1: F=F[!”+//F] F[!”-//F]
    angle increment “A” for the turtle = 37.5

    1) I’m trying to build a dichotomous tree (2 branches per generation) that has an angle of 37.5° between two branches but an angle between two generation of 90°. Basically, I couldn’t set 2 different angles for the turtle.

    I’ve tried to disconnect the “Angle increment” from the turtle and wright “rule1″ as F=F[!”+(37.5)/(90)F] [!”-(37.5)/(90)F] but it doesn’t work… Any ideas?

    2) I’ve been trying to build the tree with “n”= 23 (number of generations or rewriting) but it seems that the program fails to do so. I’m using a quite powerful computer with a lot of memory so I don’t understand. How could I overcome this problem?



  12. says:

    Is it possible to use Rabbit to model a drooping tree like a Weeping Willow using the 3d Branches GH file? So far I have been unable to simulate the organic/catenary nature of a Willow tree’s branch structure.

Leave a Reply

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