Branch Object and Root Object

Branch object defines how a plant grows using a number of growth parameters. It generates a set of sub branches once per 'year'. Age is a relative concept here; you can consider the units as days, if the plant grows rapidly. Sub branches follow the same growth rules as their parent, unless child branch objects are present. In other words, plant's sub hierarchy defines the structure of the generated geometry in a natural way.

A branch object can have multiple child branches. When a branch decides to grow a sub branch, it seeks for active sub branches, and only one (the first active) sub branch is invoked to grow. For example, a certain sub branch type 'leaf branch' may be active during the first 10 age units, after which another sub branch 'flower branch' becomes active.

The plant root object is identical with the branch object, except that it grows to the opposite direction. As the name suggests, it adds roots to the plant.

Complex nested sub branching structure

Model Type: Defines the type of the generated geometry. The options are:

Own Hierarchy: If set, the branch geometry generated by the selected object is placed into a folder dedicated for this branch type. You can then place texture maps and other material attributes, which are specific to this branch type, into the same folder.

Active by Cut: If set, the branch starts growing only when the parent branch is abnormally truncated by its Tail Cut Age or Rnd Cuts attributes. Many trees start growing a new trunk from one or two biggest branches if the actual trunk becomes cut in a storm. The new trunk usually has some special properties, such as a strong desire to grow upwards.

A spruce with a forking trunk

Activation: The age when this branch type becomes active. Inactive branches do not grow. The first active sibling branch defines the growth parameters for a new branch.

Deactivation: The end of active growth period.

Rnd Activation: Probability that the activation of the branch fails.

Age: The maximum age of this branch type. A branch's age cannot exceed the remaining growth age of its parent after the branching event. A negative value -1 automatically sets an age, which is exactly the remaining growth age of the parent after branching. Real world trees grow this way. However, it is often necessary to limit the age of sub branches of old trees, because the complexity grows exponentially by age.

Rnd Age: Randomizes branch age. The value 1.0 will set a random age between 0 ... Age.

Branching Age: The length of the branchless section in the beginning of the branch. If the value is zero, the branch starts growing sub branches immediately at its root. Some trees, such as pine, grow a long trunk, which has sub branches only at the topmost part, because oldest branches die and fall down. Use this parameter to simulate such trees.

An old pine tree has only the top branches left. Branchless value of the trunk is 8 years.

Tail Cut Age: Cuts the branch tail after the given number of years.

Rnd Cuts: The probability that the branch ends at a branching point. Only the sub branches continue their growth. This kind of growth happens when a branch gets damaged for some reason (gardener cuts the branch, a disease or insect kills it etc.)

The tree on the right has a high Random Cuts value. Its branches often split into two or three side branches.

Sub Count: The number of sub branches, which start growing from a branching point.

Rnd Count: Randomizes the count. Value 1.0 selects a random number from the interval 0 .. Sub Count.

Sub Thickness: The relative thickness of a branch vs. its parent.

Rnd Thickness: Randomizes the relative thickness value.

Thickness/Age: Changes the relative thickness by the age when branching happens. If the value is high, the relative thickness of oldest branches is smallest. For example, a spruce has a thick trunk. Even the strongest main branches are thin compared to the trunk. However, the trunk gets thinner towards the top, and the upmost branches are quite as thick as the trunk from which they grow.

Bumpiness: Moves the points of SDS modeled plants randomly, making the surface appear bumpy. Other geometry types are more limited with respect to this attribute: Analytic and Particle modeled trees allow only rapid variation of the diameter. Nurbs trees do not currently support Bumpiness.

Bumpy SDS branch

Density: Defines how densely the growth parameters are evaluated and new geometry added to the tree. The smaller the value, the stronger bends branches can make because of gravity and other deformation factors. The drawback is that densely evaluated geometry consumes more memory.

Length: Defines the growth speed of the branch. The value is relative to the length of the parent branch: if Length equals 1, the sub branch grows the same length per year as its parent branch.

Rnd Length: Random variation in the length. A value 0.5 changes the length -50% .... +50 % randomly.

Length By Age: Defines how much shorter/longer the branch segments get every year. The value is multiplies the length, meaning that the factor 1.0 keeps the length the same. Many plants first grow rapidly higher to reach the light from the shadow of bigger plants. When they reach a sufficient amount of light, they target their growth energy to spread branches sideways.

Angle: The angle between the branch and its parent.

Rnd Angle: Random variation of the branch/parent angle.

Angle/Age: Angle reduction by age. Usually oldest branches have a greater angle with the trunk as the younger branches at the top, because the weight of the big branches bends them down.

Twist: Rotates sub branch directions around the branch. Twist option creates spiral wise branching patterns.

Rnd Twist: Randomizes the twist parameter.

The lower branch twists sub branches around itself

Gravity: Guides the branch orientation by gravity. The direction of gravity is defined by the plant's root object's z axis (blue axis line). The higher the gravity, the more branches will hang down. A negative gravity value makes branches to grow upwards (to simulate light attraction etc.).

Gravity/Age: Defines how the effect of gravity changes by the age. The actual gravity is the sum of Gravity and Gravity/Age parameters. For example, a branch end may seek light and grow upwards, whereas a branch start can bend down because of the total mass of the branch.

Positive and negative gravity

Side Shift: Turns the branch end to the side. By combining Twist and Side Shift Parameters, you can create spiral-like growth behaviors.

Deformation: Bends the branch randomly. All natural plants have some deformation. High value such as 3 bends the branch strongly.

Deform Scale: Defines how rapidly deformation bends occur. The higher the value, the quicker deformation turns growth direction. A low deform scale value will bend neighbor branches in a similar way.

Side shift = 0.5, Twist=1.0, some deformation

Horizontal Spread: Guides the branch to spread out horizontally around its parent branch. Horizon direction taken from the blue z axis of the object space of the plant root level. Many plants grow this way: the purpose is to catch as much light as possible. Note that will full horizontal spreading level 1.0 and Sub Count greater than 2, branches may overlap.

The branches of the tree on the left grow to random directions. Horizontal spreading makes the branches of the tree on the right to grow sideways.

Spread by Age: Changes the horizontal spread by the age when the branch started to grow. The actual spread parameter is the sum of the constant spread and the age dependent spread. If Horiz. Spread=0, Spread by Age=1.0, full horizontal spreading is achieved at the end of each branch. If Horizontal Spread is 1 and Spread by Age -1.0, spreading reduces towards the ends of branches.

Branch Profile Attributes

These attributes define how the diameter of the branch changes towards it end point. You can define the profile using a constant tapering factor with some randomization, or using a profile curve, or as a combination of both controls, in which case the tapering factor is the product of the two controls.

Note: NURBS curves do not support pointwise attributes in the current program version. Branch diameter control is limited to the start and end points with this geometry type.

Tapering: Defines how much each branch section gets thinner during one age unit (from a branching point to the next branching point). Tapering factor 0.2 means that the end radius is 20 % less than radius at the start.

Rnd Taper: Randomized tapering. A value 0.1 changes the radius randomly -10 % ... +10 % at every age step.

Profile Curve: The diameter profile of the branch (excluding the effect of the tapering factor). With the curve, you can define accurately the shape of a tree trunk, or the branches of a cactus tree, which branches actually thicken after the branching point.

A cactus has an unusual branch thickness curve. Branches are thickest in the middle.
Leaf Density Attributes

U: The leaf density around the branch.

V: The leaf density per age unit along the branch.

Density Curve: The density of leaves by age. This curve controls all leaf types in a deterministic manner; the density is the product of U and V factors and the curve value. Leaf objects have another curve, which controls the density of each individual leaf type by defining a stochastic distribution for it.

Flowers are more rare than ordinary leaves