L-system trees¶
Tree definition¶
treedef={
axiom, --string initial tree axiom
rules_a, --string rules set A
rules_b, --string rules set B
rules_c, --string rules set C
rules_d, --string rules set D
trunk, --string trunk node name
leaves, --string leaves node name
leaves2, --string secondary leaves node name
leaves2_chance,--num chance (0-100) to replace leaves with leaves2
angle, --num angle in deg
iterations, --num max # of iterations, usually 2 -5
random_level, --num factor to lower number of iterations, usually 0 - 3
trunk_type, --string single/double/crossed) type of trunk: 1 node,
-- 2x2 nodes or 3x3 in cross shape
thin_branches, --boolean true -> use thin (1 node) branches
fruit, --string fruit node name
fruit_chance, --num chance (0-100) to replace leaves with fruit node
seed, --num random seed, if no seed is provided, the engine will create one.
}
Key for special L-System symbols used in axioms¶
G
: move forward one unit with the pen upF
: move forward one unit with the pen down drawing trunks and branchesf
: move forward one unit with the pen down drawing leaves (100% chance)T
: move forward one unit with the pen down drawing trunks onlyR
: move forward one unit with the pen down placing fruitA
: replace with rules set AB
: replace with rules set BC
: replace with rules set CD
: replace with rules set Da
: replace with rules set A, chance 90%b
: replace with rules set B, chance 80%c
: replace with rules set C, chance 70%d
: replace with rules set D, chance 60%+
: yaw the turtle right byangle
parameter-
: yaw the turtle left byangle
parameter&
: pitch the turtle down byangle
parameter^
: pitch the turtle up byangle
parameter/
: roll the turtle to the right byangle
parameter*
: roll the turtle to the left byangle
parameter[
: save in stack current state info]
: recover from stack state info
Example¶
Spawn a small apple tree:
pos = {x=230,y=20,z=4}
apple_tree={
axiom="FFFFFAFFBF",
rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
trunk="default:tree",
leaves="default:leaves",
angle=30,
iterations=2,
random_level=0,
trunk_type="single",
thin_branches=true,
fruit_chance=10,
fruit="default:apple"
}
core.spawn_tree(pos,apple_tree)