"Creation and Rendering of Realistic Trees"

Jason Weber, Joseph Penn. ACM SIGGRAPH '95 Conference Proceedings, pp. 119-128.

Note: This is new page which I should've made a long time ago. I'll add new answers as people ask new questions.

Frequently Asked Questions

(1) Where's the source code?

The US Army Research Lab owns the source code and has not made it available for public viewing. I believe there are issues concerning the core engine's capability to produce infrared and radar-related imagery.

(2) Where's the paper online?

Normally, ACM papers are copyrighted by ACM and are not available except through them. However, this is a work of the US Government and, by US Code Title 17 Chapter 1 Section 105, presumably cannot be copyrighted.

A standard web search should turn up several copies. I'll leave it to the reader to determine if they can read it legally.

The color plates are commonly lost in any online version, but you can find them here on my server.

(3) How are diagrams in Figure 1 supposed to line up?

They don't. There are four diagrams compressed into one figure.

(4) For stem splits, how do the stems spread out?

There are two angles, the angle away from the prior segment's z axis and an angle about that same axis. The first segment in the set attached to the prior segment is just the same mesh continued. It bends away from that z axis, but not around it. That's because it's attached to the old mesh.

The rest of these segments are the actual splits. They first bend away from that z axis just like the primary one, then they also spin around that z axis at a even distribution (180 degrees apart for SegSplits=1, 120 degrees for 2, etc).

There is an additional effect that can be confusing. The idea is to allow for clumps similar to what is exhibited by the acacia. Nearly vertical branches can split in a strongly opposing direction that would be ridiculous for a nearly horizontal branches. Imagine a new miniature tree spawned halfway along a major branch. It grows with little regard to the angle of the previous segment.

(5) On page 121, nBranches is the number of children for a particular level. Is that the population for that level or branches from that level?

nBranches is the quantity of stems at that level. 1Branches is the number of level 1 stems that come out of level 0 stems (the number of primary branches that grow from the trunk.

The line should read: "nBranches defines the maximum number of child sub-stems that a particular level of stems can create over the length of all its parent's segments.", with emphasis on the word "parent's".

(6) How does alternating branching work (negative nRotate)?

This is used for Plate 1v and for the weeping willow. The idea is to create fanlike branching with a V-like form. It is the nRotate that rotates positive and negative. The 180 in the formula doesn't appear to be appropriate. For a negative nRotate, the absolute value of nRotate is the angle away from the parent's y axis, on alternating sides.

(7) Why are you referring to the "viewing transform"?

Please translate to local segment transform. The reason that we were still using this term is that the original system drew the model by actually manipulating the IrisGL viewing transform as it traversed the tree. We also implemented display lists to accelerate the rendering.

(8) The example Black Tupelo has 1Branches=50, but I only see 35 or so main branches. Where did they go?

The number of main branches represents the density of branches along the entire length of the trunk. The value of BaseSize strips off a certain number of branches from the bottom of the trunk. In this case, a BaseSize of 0.2 eliminates 10 of the 50 branches (20%). Assuming that a few branches are hidden parallel to the line of sight, this comes really close to the count of 35.

(9) Where can I find similar work?

Arbaro
TReal
TreeDesigner
Shrek