Procedural displacement and diffuse shaders for more realistic tree bark


There is a large body of work focused on procedurally generating botanical geometry. Most of these systems rely on a recursive growth process that makes broad assumptions about the general shape of plant elements [1]. In particular, these systems which are known as L-Systems, assume that the geometry can be defined by a tree of radially symmetric polygons. For example, a stack of truncated cones is used to construct the trunk and branches (see fig 1. from [1]).

This approach yields great results from afar and on trees with very thin trunks and branches, but when examined up close, the over-regular trunks appear synthetic. Furthermore, trees with thick trunks such as oak trees simply appear too cylindrical. Certain features such as those depicted in the figure 1 shows that not all trunks can be effectively with the L-System method.

Figure 1. Photographs from the Golden State Bonsai Foundation’s North Garden demonstrated the naturally peculiar and nature of naturally grown plants [2].

Figure 2. The overall structure of the generated tree (right) is strikingly similar to the photograph on the left. However, the red highlight outlines the are where this type of procedural generation system clearly fails (from [3]).

The authors of [3] developed a very effective system for generating bonsai tree geometry. However, as figure 2 shows, they failed to model the complex interaction of the tree with the soil. Also, the complex variations in the trunk structure are grossly simplified by the cone-shaped sections that comprise the body.

The aim of this project is to develop a system for more effectively rendering the natural features of trees, particularly as they pertain to the bark and leaf structure of bonsai trees.


Firstly, I'll be using a procedural geometry generation method which is uniquely different than other procedural methods in common use today (i.e. L-Systems). Instead, a triangular mesh hull will be built iteratively mimicking the cellular functions of plant growth. The seed of a plant consists of two meristems, or, in our system, two unbounded growth frontiers. As they produce new geometry, they predictably alter their orientation and branch at regular intervals, with some probability. Once the meristem has produced the long thin growth of braches, they slowly grow laterally, thus widening the trunk.

I'll be extending the procedural shaders included in PBRT to support a bark-like displacement and diffuse surface shader. This will be a lot more difficult than it sounds since the surface of the bark should be properly aligned with the growth of the meristems. This means that although the branched wind through the air, the streaks of the bark are always oriented with the growth direction of the branch. The leafs should also have sub-surface scattering to look like an accurate rendering.

I'll wrap this all up with a simple scene depicting the bonsai embeded in soil in a large traditional pot.


[1] Weber, J. and Penn, J. 1995. Creation and rendering of realistic trees. In Proceedings of the 22nd Annual Conference on Computer Graphics and interactive Techniques S. G. Mair and R. Cook, Eds. SIGGRAPH '95. ACM Press, New York, NY, 119-128. DOI=

[2] Photos from GSBF website

[3] Frederic Boudon, Przemyslaw Prusinkiewicz, Pavol Federl, Christophe Godin and Radoslaw Karwowski. Interactive design of bonsai tree models. Proceedings of Eurographics 2003: Computer Graphics Forum 22 (3), pp. 591-599.