Weber and Penn model
The Weber and Penn model is a procedural model for generating trees. It was developed by Weber and Penn in 1995 [WP95]. In contrast with previous model, this model is not based on L-systems. Instead, it is based on a recursive procedure that generates a tree by adding branches to a trunk. The model is based on a set of parameters that control the shape of the tree. These parameters, listed in the appendix, describe with precision the main characteristics of the tree. The model is able to generate a wide variety of trees, from conifers to deciduous trees. The model is also able to generate trees with different shapes, such as weeping willows, quaking aspens, and black tupelos.
The [tree diagram] below shows the structure of the model. The trunk is generated first, and then branches are added recursively. The radius of each stem is calculated with the following expresion


Appendix: Weber and Penn Parameter List
Parameter | Description | Quaking Aspen | Black Tupelo | Weeping Willow | CA Black Oak |
---|---|---|---|---|---|
Shape |
general tree shape id |
7 |
4 |
3 |
2 |
BaseSize |
fractional branchless area at tree base |
0.4 |
0.2 |
0.05 |
0.05 |
Scale, ScaleV, ZScale, ZScaleV |
size and scaling of tree |
13, 3, 1, 0 |
23, 5, 1, 0 |
15, 5, 1, 0 |
10, 10, 1, 0 |
Levels |
levels of recursion |
3 |
4 |
4 |
3 |
Ratio, RatioPower |
radius/length ratio, reduction |
0.015, 1.2 |
0.015, 1.3 |
0.03, 2 |
0.018, 1.3 |
Lobes, LobeDepth |
sinusoidal cross-section variation |
5, 0.07 |
3, 0.1 |
9, 0.03 |
5, 0.1 |
Flare |
exponential expansion at base of tree |
0.6 |
1 |
0.75 |
1.2 |
0Scale, 0ScaleV |
extra trunk scaling |
1, 0 |
1, 0 |
1, 0 |
1, 0 |
0Length, 0LengthV, 0Taper |
fractional trunk, cross-section scaling |
1, 0, 1 |
1, 0, 1.1 |
0.8, 0, 1 |
1, 0, 0.95 |
0BaseSplits |
stem splits at base of trunk |
0 |
0 |
2 |
2 |
0SegSplits, 0SplitAngle, 0SplitAngleV |
stems splits & angle per segment |
0, 0, 0 |
0, 0, 0 |
0.1, 3, 0 |
0.4, 10, 0 |
0CurveRes, 0Curve, 0CurveBack, 0CurveV |
curvature resolution and angles |
3, 0, 0, 20 |
10, 0, 0, 40 |
8, 0, 20, 120 |
8, 0, 0, 90 |
1DownAngle, 1DownAngleV |
main branch: angle from trunk |
60, -50 |
60, -40 |
20, 10 |
30, -30 |
1Rotate, 1RotateV, 1Branches |
spiraling angle, # of branches |
140, 0, 50 |
140, 0, 50 |
-120, 30, 25 |
80, 0, 40 |
1Length, 1LengthV, 1Taper |
relative length, cross-section scaling |
0.3, 0, 1 |
0.3, 0.05, 1 |
0.5, 0.1, 1 |
0.8, 0.1, 1 |
1SegSplits, 1SplitAngle, 1SplitAngleV |
stem splits per segment |
0, 0, 0 |
0, 0, 0 |
0.2, 30, 10 |
0.2, 10, 10 |
1CurveRes, 1Curve, 1CurveBack, 1CurveV |
curvature resolution and angles |
5, -40, 0, 50 |
10, 0, 0, 90 |
16, 40, 80, 90 |
10, 40, -70, 150 |
2DownAngle, 2DownAngleV |
secondary branch: angle from parent |
45, 10 |
30, 10 |
30, 10 |
45, 10 |
2Rotate, 2RotateV, 2Branches |
spiraling angle, # of branches |
140, 0, 30 |
140, 0, 25 |
-120, 30, 10 |
140, 0, 120 |
2Length, 2LengthV, 2Taper |
relative length, cross-section scaling |
0.6, 0, 1 |
0.6, 0.1, 1 |
1.5, 0, 1 |
0.2, 0.05, 1 |
2SegSplits, 2SplitAngle, 2SplitAngleV |
stem splits per segment |
0, 0, 0 |
0, 0, 0 |
0.2, 45, 20 |
0.1, 10, 10 |
2CurveRes, Curve, 2CurveBack, 2CurveV |
curvature resolution and angles |
3, -40, 0, 75 |
10, -10, 0, 150 |
12, 0, 0, 0 |
3, 0, 0, -30 |
3DownAngle, 3DownAangleV |
tertiary branch: angle from parent |
45, 10 |
45, 10 |
20, 10 |
45, 10 |
3Rotate, 3RotateV, 3Branches |
spiraling angle, # of branches |
77, 0, 10 |
140, 0, 12 |
140, 0, 300 |
140, 0, 0 |
3Length, 3LengthV, 3Taper |
relative length, cross-section scaling |
0, 0, 1 |
0.4, 0, 1 |
0.1, 0, 1 |
0.4, 0, 1 |
3SegSplits, 3SplitAngle, 3SplitAngleV |
stem splits per segment |
0, 0, 0 |
0, 0, 0 |
0, 0, 0 |
0, 0, 0 |
3CurveRes, 3Curve, 3CurveBack, 3CurveV |
curvature resolution and angles |
1, 0, 0, 0 |
1, 0, 0, 0 |
1, 0, 0, 0 |
1, 0, 0, 0 |
Leaves, LeafShape |
number of leaves per parent, shape id |
25, 0 |
6, 0 |
15, 0 |
25, 0 |
LeafScale, LeafScaleX |
leaf length, relative x scale |
0.17, 1 |
0.3, 0.5 |
0.12, 0.2 |
0.12, 0.66 |
AttractionUp |
upward growth tendency |
0.5 |
0.5 |
-3 |
0.8 |
PruneRatio |
fractional effect of pruning |
0 |
0 |
1 |
0 |
PruneWidth, PruneWidthPeak |
width, position of envelope peak |
0.5, 0.5 |
0.5, 0.5 |
0.4, 0.6 |
0.5, 0.5 |
PrunePowerLow, PrunePowerHigh |
curvature of envelope |
0.5, 0.5 |
0.5, 0.5 |
0.001, 0.5 |
0.5, 0.5 |