This node implements an L-System. First, the node computes the system symbols from the initial axiom and set of rules, then, the symbols are used to construct a mesh based on the parameters of the node.
In each iteration of the system, the rules are applied on the symbol list that
is initially the input axiom symbol list. The rules are applied by replacing
the symbols on the left hand side by the symbols on the right hand side. The
symbols on the left hand side, called the Variables, can be any of A
, B
,
X
, Y
, or Z
in addition to the command symbols described below. The left
and right hand sides are separated by an equal sign. Spaces are ignored. For
instance, the following are some rules that can be used.
F = F--F
A = A+A/B\A-A
The system is modeled after a Tutle Graphics system, where a turtle moves in space and the generated geometry is a trace of its movements. In such systems, the turtle is a system state storing a location, an orientation, a step size, and a width. The grammar of the system defines how the symbols corresponds to turtle movements. Essentially, symbols change the state of the turtle and we call them commands.
The following are the list of supported commands.
Move the turtle forward along its local orientation creating geometry in the process. The magnitude of the movement is equal to the step size.
Move the turtle forward along its local orientation without creating geometry in the process. The magnitude of the movement is equal to the step size.
Start a new branch. A branch is a subsystem where the turtle move freely until the branch is terminated, in which case, the turtle reverts back to its state right before the branch started.
End the last started branch.
Scale the step size by the input Scale Step Size.
Scale the width by the input Scale Width.
Rotate the turtle by the input Angle along the local Y axis in the positive direction.
Rotate the turtle by the input Angle along the local Y axis in the negative direction.
Rotate the turtle by the input Angle along the local X axis in the positive direction.
Rotate the turtle by the input Angle along the local X axis in the negative direction.
Rotate the turtle by the input Angle along the local Z axis in the positive direction.
Rotate the turtle by the input Angle along the local Z axis in the negative direction.
Rotate the turtle by a random Euler whose components have a maximum magnitude of the input Random Angle.
Rotate the turtle in the global negative Z direction by the input Gravity. This simulate gravity during movement.
Append the current orientation of the turtle to the output J States list.
Append the current orientation of the turtle to the output K States list.
Append the current orientation of the turtle to the output M States list.
Ignored.
Ignored.
Ignored.
Ignored.
Ignored.
F
and f
commands.!
command."
command.T
command.~
command.J
command.K
command.M
command.