1. Home
  2. Structure Generator Nodes
  3. Structure Generator Node

Structure Generator Node

This structure generator element is modeled after Unity’s Tree Creator component, so most of the properties here described should come familiar if you have used this tool before. The whole structure is described using level nodes in hierarchy, each node contains properties to generate the branches at the assigned level. The structure here generated is taken as a base to be modified by other nodes downstream in the pipeline, meshed and textured. Take this structure as the spatial data the tree will be build upon.

Main Node

Contains the properties to create the main branches (or trunks) that will sprout the subsequent branch levels.

Max frequency

The maximum number of main branches to generate as the upper range limit on randomization mode. Each main branch follows the hierarchical structure described by the nodes.

Min frequency

The minimum number of main branches to generate as the lower range limit on randomization mode. Each main branch follows the hierarchical structure described by the nodes.

Max Length

The maximum length value of any generated main branch as the upper range limit on randomization mode.

Min Length

The minimum length value of any generated main branch as the lower range limit on randomization mode.

Radius

Radius for the circular area where the main branches will sprout.

Branch generation with radius = 1.7 and frequency = 3

Branch Node

Contains the properties to create children branches along the length of a parent branch. Multiple level nodes could be applied to any level node or main node, creating a parent-child relationship on the hierarchy. It is possible to disable a level node while still maintaining it in the hierarchy, this will disable all other nodes derived from it as well.

Max Frequency

Similar to the root node frequency option establishes the upper range limit of branches to generate on the parent branch.

Min Frequency

Similar to the root node frequency option establishes the lower range limit of branches to generate on the parent branch.

Probability

Establishes the odd of occurrence on the structure level. A value of 1 means the structure level will always be processed, a value of 0 means no processing at all. The probability value is display on the structure nodes at the top-left corner.

Distribution

Sets the modality of branch distribution along the parent branch. These modes are based on Unity’s Tree Creator branch distribution options, so if you are familiar with it you’ll be with these modes. There are four modes to select from:

Alternative

Children branches begin at the tip of the parent branch and are position-spaced along the parent branch towards its base. Each subsequent child  branch takes the opposite direction of its predecessor branch.

Opposite

Branches come in pairs facing opposite direction  at the same length position on the parent branch. The first pair begins at the tip of the parent branch.

Whorled

Children branches are grouped on nodes with n number of branches each. The step property sets the number of branches per group. The first group begins at the tip of the parent branch.

Distribution Alternate

Alternative mode.

Distribution Opposite

Opposite mode.

Distribution Whorled (Step 3)

Whorled mode (step = 3).

Distribution Whorled (Step 4)

Whorled mode (step = 4).

Distribution Spacing Variance

Adds spacing variance between branches along their parent branch. This variance add randomization to the placing of branches so that they look less artificial and more natural.

Distribution Angle Variance

Adds angular variance around their parent branch. This variance add randomization to the angle of branches so that they look less artificial and more natural.

Distribution curve

This curves controls the spacing of children branches or groups of branches along the parent branch; on the x axis 0 represents the base of the parent branch and 1 the tip of it.

Linear distribution curve.

Distribution towards base.

Distribution towards top.

Twirl

Rotation value for the children branches accumulative along and taking as axis the parent branch.

Branches with twirl = 0

Branches with twirl = 0.15

Parallel Alignment (at Base, at Top, Curve)

Interpolates the direction of a child branch with its parent direction. When 1 the child branch points exactly to the same direction as its parent branch does (thus the parallel name). Parallel alignment value requires a property that tells how much interpolation is going to be applied when branches are positioned at base and at top of the parent branch, positions in between are obtained using the parallel align curve property. Negative values on the properties point to the opposite direction of the parent branch.

Branches with no alignment modifications.

Branches with parallel align at top = 1

Branches with parallel align at top = 1 and at base = 0.5

Gravity Alignment (at Base, at Top, Curve)

Interpolates the direction of a child branch with the vector against gravity (direction up). When value is set to 1 the child branch points up (by default the against gravity value is set to up). Gravity alignment value requires a property that tells how much interpolation is going to be applied when branches are positioned at base and at top of the parent branch, positions in between are obtained using the gravity align curve property. Negative values on the properties point to the gravity direction (down vector).

Branches with no alignment modifications.

Branches with gravity align at top = 1

Branches with gravity align at top = 1 and at base = 0.5

Length (at Base, at Top, Curve)

Controls the length of the children branches. A length value is required at the top (1) and at the base (0) position of the parent branch, any value in between is interpolated using the length curve property.

Branches with length at base = 1 and length at top = 1

Branches with length at base = 1 and length at top = 3

Branches with length at base = 3, length at top = 1 and length curve applied.

Girth Scale

Lets you assign scaling to the girth value of the spawn branches relative to their parent branch. This way you can create branches that look younger by making them skinnier.

Range & Mask

These options lets you specify the range the level branches are going to be sprout along the parent branch. With the mask value spawn elements falling out of this range are discarded from the parent structure. The range value spawns the elements only within the assigned range, instead of the whole parent branch length (0 to 1). The mask value is represented by a green bar at the left of the level node on the canvas view; the bottom of the bar represents the base of the parent branch and the top the tip of it. Level nodes action ranges can overlap on a parent; ideally it lets you have a higher degree of control on the level or detail or the topology of a tree. For example, in some cases you might want to have more detailed branches at the tree base level (near ground) and lower or more scarce branches at the top of it.

Level 1 nodes sharing 50% of the parent branch length.

Two different offspring on the parent branch.

Root Node


Contains the properties to create children roots from the tree main trunk. Roots are a variation of branches, and as such share the same options to customize them. Each root node can only have other root nodes as children.

 

Max Frequency, Min Frequency, Probability, Distribution, Distribution Curve, Twirl, Parallel Align (at Base, at Top, Curve), Gravity Align (at Base, at Top, Curve), Range, Mask

The same parameter effects on branches apply to roots generation.

Sprout Node


Contains the properties to create children sprouts along the length of a parent branch. In order to visualize sprouts on the scene view and apply a mesh to them, the node must be assigned to a sprout group; the assigned group is visible with a colored square on the bottom-right corner of the node. The sprout node is considered a terminal level on the tree structure hierarchy and is possible to disable it while still maintaining it in the hierarchy.

Sprout Group

Assigns the generated sprouts to a sprout group, this is required for all sprouts to enable meshing and mapping on them.

Max Frequency, Min Frequency, Probability, Distribution, Distribution Curve, Twirl, Parallel Align (at Base, at Top, Curve), Gravity Align (at Base, at Top, Curve), Range, Mask

The same parameter effects on branches apply to sprout generation.

Branch Customization

Branches are modeled after bezier curves, Broccoli Tree Creator offers you the option to further tune the length and shape of a branch by editing its bezier curve manually.
Right after you select the Structure Generator Node the preview tree switches materials to better visualize the tree structure and displays editor gizmos to customize the branches.

When on structure view the sprouts of the tree are rendered semi-transparent. Branches are rendered using colors depending on their state:

  1. White: non customized branch, susceptible to change by randomization if a new version of the tree is generated.
  2. Gray: customized (locked) branch, this means the bezier curve of the branch has been modified so that it is guaranteed it will be kept on the tree structure with the same length and shape after generating new tree previews.
  3. Light blue: highlights branches that belong to a selected branch node, this lets you tune these branches using the bezier curve gizmos. 

In order to tune branches you need to select the level structure node the branch belongs to and then click on any of the bezier nodes of the branch. Modifying the node position or its handles is an undoable operation (using ctrl or cmd + z). Tuning also includes editing the branch girth scale, which is shown with a slider on the Structure Generator Node inspector; this scale is applied to all the descending branches of the tuned branch.

After a branch has been tuned it becomes ‘locked’ with all of its parents down to the root of the tree (locking the parents ensures all the lineage of branches gets spawned up to the tuned branch). Tuned branches can be brought back to randomized ones by clicking the “Unlock Branch” on the Structure Generator Node inspector.

Was this article helpful to you? Yes No

How can we help?