Tree
Documentation of the tree components.
Introduction
The Tree cluster provides a series of components that generate parametric diagrams of tree systems, based on 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 arboriculture.
Early work on tree development was pioneered by Pierre Raimbault, whose two seminal papers The management of ornamental trees Part 1 Raimbault et al. (1993), Part 2 Raimbault et al. (1995) laid the foundation for analyzing and diagnosing the aerial parts of trees. His framework provided one of the first systematic approaches to describing tree growth patterns and structural organization.
Building on this foundation, Christophe Drénou has refined and advanced the understanding of tree development.(Drénou et al. (2015), Larrieu et al. (2022)) His model condenses the complex life history of trees into four key stages — young, adult, mature, and senescent — offering a more accessible yet rigorous way to represent tree growth and form.
This cluster provides both 2D tree and 3D tree generation components based on the Drénou Model, along with a forest component that considers interactions between trees. Together, they offer users a clear framework for generating parametric diagrams that reflect the major stages of tree development.
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.
Tree 2D - Drénou Model
This component is used to generate sectional tree diagrams based on the given plane, height and phase.
Version change: Starting from version 0.9.0, the base model for 2D tree generation has been updated to the Drénou Model, ensuring consistency with the 3D tree generation. In earlier versions (e.g., v0.8.7), the 2D tree component was based on the Raimbault Model. For documentation of the Raimbault model, please refer to Raimbault Model (Legacy).
Param. | Abbr. | I/O | Optional | Description |
---|---|---|---|---|
Plane | P | Yes | Base plane(s) where the tree(s) is drawn. | |
Height | H | No | Height of the tree. | |
Phase | phase | No | Phase of the tree. | |
Trunk | T | Tree trunk curves. | ||
CanopyCurve | CC | A curve on top of the tree that represents its canopy. | ||
SideBranch | SB | Tree side branch curves. | ||
TopBranch | TB | Tree top branch curves. | ||
TreeInfo | Tinfo | Information about the tree. |
Tree 2D
component to create a 2D single tree. 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.Tree Growth Phases Diagram
Forest 2D
The forest 2d section is an extension of the Tree 2D 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, 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.
Tree 2D
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.
Tree 2D - Raimbault Model(Legacy)
This model is deprecated and no longer available as of v0.9.0. It remains accessible only in earlier versions, such as v0.8.7.
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 - Raimbault Model (Legacy)
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.
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.
Tree 3D 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 component.
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 from phase 1 to phase 4 (young phase). In other phases, only top branches are shown. Users can toggle the visibility of the corresponding branches as needed.
Typical Growth Stages
Tree 3D 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. | ||
SideBranch | SB | Tree side branch curves (non-split). | ||
TopBranch | 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 SideBranch (SB)
and TopBranch (TB)
parameters on the output side—are structured into multiple levels for differentiation. SideBranch (SB)
curves are organized from bottom to top, while TopBranch (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.