Grow - A Topiary Modeling Program

Topiary is the art of ornamental gardening. Usually plants are cut and trimmed into fanciful forms, as of animals, buildings, etc. In reality it takes a long time and a lot of work to create those pretty figures. A computer simulation can hasten things a lot (although, it still takes some time and work...).

The Problem

A plant is rather difficult to model with standard computer graphics methods. This is because standard computer graphics programs generate objects from various combinations of primitive geometric bodies such as spheres, cylinders, boxes etc. These programs are quite adequate for modeling artificial objects such as desks, chairs, screens, walls and so on because relatively few primitives are needed to create an appealing model. However, because of a plant's inherently complex structure (each plant is composed of a large number of branches, leaves, flowers etc.) it is necessary to model it using a relatively large number of primitives. In a conventional modelling program these primitives need to be positioned manually and because of their large number, modeling a plant is very hard.

The Solution

Our program essentially enables the user to simply specify the location of seeds from which plants will grow and a bounding object. Our program uses an environmentally sensitive L-System to model the growth and pruning of the plants (and thus frees the user of the burden of taking care of what can typically be millions of primitives). An environmentally sensitive L-System starts off with an initial word representing a seed and uses production rules to derive a new word from it. This process is repeated iteratively (in each iteration the productions are applied on the word derived in the previous one). Each iteration represents a time step in the growth of the plant. When all derivations are finished a 3-D "logo style" turtle is used to interpret the word and draw the plant. For a more thorough explanation of environmentally sensitive L-Systems please see our user manual. For an explanation of the specific L-System used to produce the pictures below click here.


These pictures were created with our program. The files needed for the creation of each picture can be found in the distribution. Rendering was done with povray 3.0.
On the left a topiary teapot on a yellow table drawing only the leaves. On the right a topiary teapot on a yellow table, drawing both leaves and branches.


On the left a topiary teapot on a grassy plane, set against a beautiful blue sky. Has 3 colors of leaves. On the right a topiary dinosaur on a grassy plane.


Source Code

In accordance with ISL policy we offer the program's source code for downloading. The program is written in C++ and was successfully compiled on these platforms: Linux 2.0.30, Sun (for all of the above platforms g++ 2.7.2 was used) Windows NT 4.0 using Visual Studio 97. Most of the parser code was generated using flex 2.5.4 and bison 1.2.5. The input files for these programs are included, as well as their output. Click here to download the sources.


Executables of the program are supplied for the following platforms:


The program uses Irit data files as its input and output graphic file formats. We also created some Irit functions (found in the Irit directory in each of the executable archives and in the source archive).


Click here to download some examples, including the ones that appear in this page.

HTML pages

Click here to download these web pages, which include the user's manual.
Click here for a reduced version (without the pictures).


See grow's user's manual.


The program is based on the paper "Synthetic Topiary" by Przemyslaw Prusinkiewicz and Radmoír Mech. The program was written by Erez Louidor, Adi Izkovitch and Ido Tal under the supervision of Dr. Gershon Elber.


If you have any questions, comments or bug reports please send mail to one of the following:
Adi Izkovitch
Erez Louidor
Ido Tal