Tree
Documentation of the tree components.
Introduction
The Tree cluster provides a series of components that generate parametric diagrams of multi-phased tree systems, both Unitary and Non-Unitary, based on the groundbreaking research in the stages of tree development. These components offer a powerful tool for understanding and visualizing the complex structures of trees, which have been the subject of extensive study in the field of arboriculture.
The study of the stages of the tree development has its roots in the pioneering work of Pierre Raimbault, who published a series of two seminal papers titled The management of ornamental trees Part 1 Raimbault et al. (1993), Part 2 Raimbault et al. (1995). These two papers laid the foundation for the analysis and diagnosis of the aerial parts of trees. Raimbault's work provided a framework for understanding the growth patterns and structural organization of trees, which has since been refined and expanded by subsequent researchers.
Building upon Raimbault's foundation, the most recent advances in the study of stages of tree development have been made by Christophe Drénou, whose research Drénou et al. (2015), Larrieu et al. (2022) represents the state-of-the-art in this field. Drénou's work has further developed the concept of different stages during tree's development and has provided new insights into the complex processes that shape tree growth and form.
This cluster incorporate the findings of both Raimbault and Drénou, allowing users to generate parametric diagrams based on two different architectural models: the Raimbault Model (10 phases) and the Drénou Model (4 key stages: young, adult, mature, senescent). These models provide a means of understanding and representing the multi-phased nature of tree growth, which involves the iterative development of new structural units over time.
Component Usage
Please refer to the following sections for each component from this cluster. While the information is not needed to generate the tree diagrams, information from the Soil, and Root clusters are required to complete the full diagram illustration.
Raimbault Model
This component is used to generate sectional tree diagrams based on the given plane, height and phase.
Unitary
Non-Unitary
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
Plane | P | Yes | Base plane or planes in which the tree is drawn, the default value is World-XY unless specified. | |
Height | H | No | Input parameter that controls the height of the drawn tree diagrams. | |
Phase | phase | No | The growth phase ( 1, 12 ) of the tree, allowing adjustment of the maturity of the tree. | |
Circumference | C | Circumference ellipses that control the boundary of the tree. | ||
Trunk | T | Curves that define the trunk of the tree. | ||
Canopy | C | The upper limit of the drawn branches of the tree. | ||
SideBranch | SB | A list of curves that include branches that grow horizontally in respect to the tree trunk. | ||
TopBranch | TB | A list of curves that grow from the upper portion of the trunk at different phases of tree growth. | ||
BabyBranch | BB | A list of curves that are drawn to show the development of smaller branches in different phases of growth. | ||
TreeInfo | Tinfo | Information about the growth of the tree that is used for tree root diagram generation. |
Context Menu: This component provides an additional option in the context menu choose between unitary or Non Unitary, due to the different tree forms. The selection will trigger different algorithm inside the component for drawing the corresponding diagram.
Tree Growth Phases Diagram
Forest 2D
The forest 2d section is an extension of the Raimbault model component, which allows for the automatic adjustment of each tree's width based on its proximity to neighboring trees. By modifying the spacing between trees within the Grasshopper file (.gh file), users can generate a diagram featuring a series of trees that are precisely adapted to their spatial relationships with one another. This extension leverages the capabilities of the tree component to create a more realistic and dynamic representation of a forest ecosystem.
Raimbault Model
component to create 2D forest. Note that the examples uses component from the add-on Human to define the width of curves. Users can install this package via the PackageManager
in Rhino.

Drénou Model Composer
This component generates tree objects following the Drénou Model based on the given plane
and various control parameters, including tree and trunk size
, spread angle
, and growth phase
. Notably, the output is tree object(s), which require further processing for visualization with the renderer component or for tree interaction with the forest interaction components.
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
Plane | P | Yes | Base plane(s) where the tree(s) is drawn. | |
GlobalScale | globalS | Yes | Global scale of the tree. | |
TrunkScale | trunkS | Yes | Trunk scale of the tree. | |
SpreadAngleMain | angMain | Yes | Spread angle of the primary tree branches. | |
SpreadAngleTop | angTop | Yes | Spread angle of the secondary tree branches (the top part). | |
Phase | phase | No | Phase of the tree's growth. Range: [1,13]. The parameter signifies the tree's growth stage and influences its overall shape. There are 13 distinct phases, and typical phases include phase 2, 8, 10, and 13. Difference between phases is shown in section below. | |
Seed | seed | Yes | Seed for random number to vary the tree shape. | |
BranchRotation | brRot | Yes | Whether to rotate the branches sequentially. | |
DuplicateNumber | dupNum | Yes | Number of top side branches for duplicate branching. Range: [0,3]. | |
Id | id | Yes | An optional id of the tree or tree group, used for selecting trees in the same group in the renderer. | |
TreeObjects | Tree_Out | Tree objects that can be passed to renderer or interaction components. |
Branch rotation
The BranchRotation (brRots)
parameter on the input side determines if side branches at varying heights rotate sequentially. Setting this parameter to True
can enhance the tree's appearance in 3D views by giving it a more natural look. Conversely, setting it to False
could be beneficial in 2D representations, as it helps maintain a cleaner, more organized appearance.
Duplicate Number
The DuplicateNumber (dupNum)
parameter on the input side determines the number of top branches that will undergo duplicate branching. If the value is set to 0, the top branch will include only a single main branch. If the value is set to 1, in addition to the main top branch, one extra branch will undergo duplicate branching, as shown below.
Different Growth Phases Diagram
We classify trees into 13 distinct phases, which are grouped into 4 developmental stages: young, adult, mature, and senescent.
- The young stage includes phases 1 to 4.
- The adult stage includes phases 5 to 9.
- The mature stage includes phases 10 and 11.
- The senescent stage includes phases 12 and 13.
Stage | |||||
---|---|---|---|---|---|
Young | ![]() | ![]() | ![]() | ![]() | |
Adult | ![]() | ![]() | ![]() | ![]() | ![]() |
Mature | ![]() | ![]() | |||
Senescent | ![]() | ![]() |
Visibility of Branch: Here, we only display side branches (output SingleBranch
) from phase 1 to phase 4 (young phase). In other phases, only split branches (output SplitBranch
) are shown. Users can toggle the visibility of the corresponding branches as needed.
Typical Growth Stages
Drénou Model Renderer
This component renders tree objects obtained from the composer component or the forest interaction component. Specifically, it generates tree trunks and branches as curves and organizes tree information.
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
Tree Objects | Tree_InP | No | Tree objects generated to render. | |
Id | id | Yes | An optional id of the tree or tree group, used for selecting trees in the same group in the renderer. | |
Trunk | T | Tree trunk curves. | ||
SingleBranch | SB | Tree side branch curves (non-split). | ||
SplitBranch | TB | Tree top branch and duplicated branch curves (splitted). | ||
TreeInfo | TInfo | Information about the tree. |
Data structure of tree branches
The tree branch curves—represented by the SingleBranch (SB)
and SplitBranch (TB)
parameters on the output side—are structured into multiple levels for differentiation. SingleBranch (SB)
curves are organized from bottom to top, while SplitBranch (TB)
curves are arranged from the inside out (from the trunk to the canopy) as shown in the example below.
Notably, when multiple trees are present, the tree branch structure follows the structure of the tree objects input. If all tree objects are in the same data path (e.g., flattened), tree branch curves are only differentiated by branch levels, not by tree levels. However, if tree objects are organized into separate data path (e.g., grafted), tree branch curves will be differentiated by both tree and branch levels.
Forest Interaction
This component simulates interactions between trees within a forest based on spatial relationships, shading effects, and other environmental factors. It helps model tree status, competition, and growth dynamics.
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
T -> Interaction | tToInteract | No | The collection of tree objects in various species before interaction. | |
Interaction -> T | tAfterInteract | The collection of tree objects in various species after interaction. |
Tree id
When different types of trees are combined using the forest interaction
component—for example, interacting pine and birch as shown in the example below—all trees will be placed in the same data path. To visualize each type individually, users can assign a group name using the id
parameter in the composer
component, and then selectively render them by specifying the same id
in the renderer
component.

Tree Energy Canopy
This component uses the trunk and the branches of the 3D tree to generate the energy canopy that can be used for energy analysis. It outputs a mesh-type water-tight volume that can be used as a "shade" for energy analysis.
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
Trunk | T | No | Tree trunk curves. | |
TrunkRadius | T-r | Yes | Tree trunk radius, for creating different sizes of trunks. | |
Branches | B | No | Tree branch curves. | |
EnergyVolume | E | Energy volume for energy analysis. |
Transmittance
In energy analysis, tree crown density and foliage play key roles in blocking sunlight and heat from reaching the ground. To integrate this feature into the energy analysis, we rely on the control of the transmittance
parameter of the canopy mesh in the analysis software.
Figure: A horse chestnut tree, shown with and without leaves. Adapted from Krause (2021).
A guidance for setting the transmittance
value for direct solar radiation is given below Konarska et al. (2014):
Tree Crown State | Recommended Transmittance Value | Mean of Deciduous Trees |
---|---|---|
Foliated | 1.3% - 5.3% | 2.9% |
Defoliated | 40.2% - 51.9% | 47.9% |
Users can refer to the Showcase section to see its application.