Welcome to TreeVigorate, a procedural parameter-driven foliage generator with artist control. We've built this Maya plugin tool for seamless integration into technical art pipelines. Simply hook the plugin into Maya, choose your tree genera, and edit your tree as you watch it grow in accelerated real time. For a quick video demo, just click the image above!
Eli Asimow : easimow@seas.upenn.edu, https://easimow.com
Avi Serebrenik : seravi@seas.upenn.edu, https://aviserebrenik.wixsite.com/cvsite
This tool is a direct implementation of the Siggraph paper Interactive Invigoration: Volumetric Modeling of Trees with Strands (2024), Li, B., Schwarz, N. A., Palubicki, W., Pirk, S., and Benes, B. https://dl.acm.org/doi/10.1145/3658206
To achieve this, we utilized a codebase from the researchers’ prior work in Rhizomorph: The Coordinated Function of Shoots and Roots.
Installation is straightforward. Simply add this .mll to Maya through the Plugin Manager, and either use the tree description files provided, choose a preset, or write a custom one. .mll download Tree Descriptions
Strands are a systemized representation of the arbor pathways that carry liquid and nutrients from the trunk of a tree to its tips. First modeled in Matthew Holton’s 1994 paper Strands, Gravity and Botanical Tree Imagery, they are the basis for our modeling approach here. The idea is that, by simulating those pathways, we can specifically recreate the growth groove patterns found in many common tree trunks.
We begin this process by initializing with three strand particles at the end nodes of the tree’s branches. Strand particles are then replicated in planar space at preceding tree nodes, merging into larger collections at each branch intersection point. We use standard distance constraint dynamics to adjust particle positions, and they are transposed down from their progenitors. By the root of the trunk, all strand particles have coalesced into a singular node’s plane.
Node Strand Planes, particles represented with vertices
We found our source paper’s Delauney-based meshing method lacking in edge cases. In the branch merging case, for instance, there was no guarantee of strand particle positional consistency. That is, when a joining left branch and right branch would translate all their corresponding particles into their parent node, their positions would become entangled. This meant that bridging the mesh between these three planes risked triangle intersection.
Initial Meshing algorithm with non-manifold geometry removed. Not quite right.
As one of our priorities was a usable, manifold mesh for artists, this problem proved untenable. Instead, we build Bernstein polynomial splines through the thread of each individual strand particle, and mesh them separately as long tubes. This delivers a manifold mesh while still keeping the grooved look of a strand-based tree. The only downside is that the finalized mesh requires some post-process cleanup.
Stress Testing our novel meshing approach. Even with high-variance branch twists, intersections resolve without error.
We wanted our tool to have interaction and artist participation rather than a simple grow and check system. The average artist will have a specific tree in mind; it’s our tool's job to bend its procedural growth to fit that mold as closely as possible. To achieve this, we empower the artist with explicit control over the procedural growth of the tree as well as different branches/subtrees. To enable this, we allow users to grow trees and subtrees for a desired amount, either watching them grow slowly, allowing for edits as they mature, or growing a large, discreet amount, skipping ahead to modifying a fully grown tree.
Tree growth controls |
Subtree controls |
- Invigoration taps directly into the underlying Rhizomorph growth logic, spurring growth from any designated node. Artists can use this like a paint brush, adding length and density where they see fit.
Pre-invigoration |
Post-invigoration (of the highlighted branch) |
- Pruning recursively removes all children of a selected branch node. This makes for easy selection and removal of lengthy undesirable paths.
Original branch |
Pruned branch |
- Sun direction controls the bias of the tree’s directionality. This can be updated ad hoc, shifting the desired growth path of a tree even mid-development.
- Modifiable Tree parameters. Starting from a collection of preconfigured tree species, the artist can tune the growth behavior of their tree to achieve drastically different results.
Once they are happy with their tree’s structure, an artist can use the "instance leaves" action to automatically generate a Maya instancer node, configured with the calculated positions and rotations of the tree's leaves. For convenience, there is also an export CSV option for use in other applications.
Tip: consider instancing a group with your leaf mesh as a child object, rather than instancing the leaf mesh itself. This allows for easy repositioning of the leaf pivot point.
We had a lot go wrong during this project. There are oh so many ways to crash Maya, and oh so many ways for a tree to not look right. Here are some of our highlights from that journey.














