Correct branching structures of trees and shrubs is very difficult
to simulate with common methods used for generation of 3D trees like L-System
or procedural. With those methods we can get realistic compact shapes of
tree crowns, but then branching structure must use little variability and
it looks unnatural, or with more variability we get more realistic branching,
but tree crown becomes very chaotic, in some parts there are too many branches,
in other unnatural empty spaces. (check images on right side). Simply standard
algorithms are blind. They don't know about presence of other branches,
nor about availability of light.
This demonstrates how far from reality are procedural and L-System methods.
Real trees are shaped by constant competition for light & empty space.
Branches grow where is available space and enough light. Branches which
don't receive enough light stop to grow, die and drop. On real trees branches
are locally arranged in very irregular manner, almost impossible to describe,
however from this chaos emerge well defined, often compact shape of tree
A this moment simulation of such natural growth process is implemented
only in scientific VLAB / L-Studio software, developed by prof. Prusinkiewicz
from University of Calgary. No commercial software is yet capable of running
Simulation of tree growth is done in many iteration steps. In each iteration
step, for every bud environmental algorithm estimates availability of space
and light and calculates the vector for optimal shoot growth.
On next step bud fate is calculated - if it is going to grow on next step
and how much, or die. For this step initial assumption must be made on kind
of dominating branching of the plant (ex. all buds are equal, or bud at
the top of branch dominates, or buds on sides will grow, while top bud will
die). On this step algorithm also estimates resources available for a bud
which are related to light which was available to bud.
You can find detailed information on the method in scientific paper by
Wojciech Pałubicki : Self-organizing
tree models for image synthesis
Branching structures resulting from this method look more realistic than
ones from procedural models :