Skip to Content

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 [@raimbault1993], Part 2 [@raimbault1995] 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.([@drenou2015, @larrieu2022]) 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 img

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).

2D tree component

Param.Abbr.I/OOptionalDescription
PlanePYesBase plane(s) where the tree(s) is drawn.
HeightHNoHeight of the tree.
PhasephaseNoPhase of the tree.
TrunkTTree trunk curves.
CanopyCurveCCA curve on top of the tree that represents its canopy.
SideBranchSBTree side branch curves.
TopBranchTBTree top branch curves.
TreeInfoTinfoInformation about the tree.
Example T1: 2D Tree

This example demonstrates the usage of the 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 tree phasing

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.

2D forest

Example T2: 2D Forest

This example demonstrates the usage of the 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. 2D forest GH

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

tree unitary

Non-Unitary

tree non-unitary

Param.Abbr.I/OOptionalDescription
PlanePYesBase plane or planes in which the tree is drawn, the default value is World-XY unless specified.
HeightHNoInput parameter that controls the height of the drawn tree diagrams.
PhasephaseNoThe growth phase ( [1, 12] ) of the tree, allowing adjustment of the maturity of the tree.
CircumferenceCCircumference ellipses that control the boundary of the tree.
TrunkTCurves that define the trunk of the tree.
CanopyCThe upper limit of the drawn branches of the tree.
SideBranchSBA list of curves that include branches that grow horizontally in respect to the tree trunk.
TopBranchTBA list of curves that grow from the upper portion of the trunk at different phases of tree growth.
BabyBranchBBA list of curves that are drawn to show the development of smaller branches in different phases of growth.
TreeInfoTinfoInformation 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 tree phasing

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.

tree forest Raimbault Model

Example (Legacy): 2D Forest (Raimbault Model)

This example demonstrates the usage of the 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. 2D forest

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.

drenou composer

Param.Abbr.I/OOptionalDescription
PlanePYesBase plane(s) where the tree(s) is drawn.
GlobalScaleglobalSYesGlobal scale of the tree.
TrunkScaletrunkSYesTrunk scale of the tree.
SpreadAngleMainangMainYesSpread angle of the primary tree branches.
SpreadAngleTopangTopYesSpread angle of the secondary tree branches (the top part).
PhasephaseNoPhase of the tree’s growth. Range: [1,12]. The parameter signifies the tree’s growth stage and influences its overall shape. There are 12 distinct phases, and typical phases include phase 2, 8, 10, and 12. Difference between phases is shown in section below.
SeedseedYesSeed for random number to vary the tree shape.
BranchRotationbrRotYesWhether to rotate the branches sequentially.
DuplicateNumberdupNumYesNumber of top side branches for duplicate branching. Range: [0,3].
IdidYesAn optional id of the tree or tree group, used for selecting trees in the same group in the renderer.
TreeObjectsTree_OutTree 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.

tree 3d brRot

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.

tree 3d dupNum

Different Growth Phases Diagram

We classify trees into 12 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 8.
  • The mature stage includes phases 9 and 10.
  • The senescent stage includes phases 11 and 12.
Stage
Youngyoung 1young 2young 3young 4
Adultadult 1adult 2adult 3adult 4
Maturemature 1mature 2
Senescentscene 1scene 2

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

typical phase

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/OOptionalDescription
Tree ObjectsTree_InPNoTree objects generated to render.
IdidYesAn optional id of the tree or tree group, used for selecting trees in the same group in the renderer.
TrunkTTree trunk curves.
SideBranchSBTree side branch curves (non-split).
TopBranchTBTree top branch and duplicated branch curves (splitted).
TreeInfoTInfoInformation about the tree.

drenou renderer

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.

branch structure

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.

Example T3: 3D Tree

This example demonstrates the usage of the Drénou Model composer and renderer components to create and visualize a single tree. 3D trees

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/OOptionalDescription
T -> InteractiontToInteractNoThe collection of tree objects in various species before interaction.
Interaction -> TtAfterInteractThe collection of tree objects in various species after interaction.

Tree 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 id

Example T4: 3D Forest

This example demonstrates the usage of the forest interaction component to create forests from regular grid points and random grid points. 3D forest

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.

energy canopy

Param.Abbr.I/OOptionalDescription
TrunkTNoTree trunk curves.
TrunkRadiusT-rYesTree trunk radius, for creating different sizes of trunks.
BranchesBNoTree branch curves.
EnergyVolumeEEnergy 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.

Alt text

Figure: A horse chestnut tree, shown with and without leaves. Adapted from [@Krause2021].

A guidance for setting the transmittance value for direct solar radiation is given below [@konarska2014]:

Tree Crown StateRecommended Transmittance ValueMean of Deciduous Trees
Foliated1.3% - 5.3%2.9%
Defoliated40.2% - 51.9%47.9%

Users can refer to the Showcase section to see its application.

References

Last updated on