PlantVR is software to generate plant development. It is based on bracket Lindenmayer system (L-systems). It is working on Windows 95/98/NT system. The user can see plant development in 3 dimensional space. The L-system is used for plant shape definition. Plant development is controlled by mathematical function corresponding to time in their life cycle. The user can export their animation to gif animation file format and the frames of their development.

========================
How to use PlantVR software.
========================
This software is used to create the plant model and animation correspond to time t. We define the symbol in the L-system as follow:
I : the internode or petiole of the plant,
i : the short internode or short petiole of the plant,
P : the petiole of the plant,
p : the short petiole of the plant,
L : the leaf of the plant,
A : the apex of the plant,
F : the flower of the plant.

The orientation symbol is given below.
+ : Roll counterclockwise by angle dz, using rotation matrix Rz(dz)
- : Roll clockwise by angle dz, using rotation matrix Rz(-dz)
& : Roll counterclockwise by angle dy, using rotation matrix Ry(dy)
^ : Roll clockwise by angle dy, using rotation matrix Ry(-dy)
\ : Roll counterclockwise by angle dx, using rotation matrix Rx(dx)
/ : Roll clockwise by angle dx, using rotation matrix Rx(-dx)
| : Roll back, using rotation matrix Ry(180)
[ : Push the current state of the turtle onto a pushdown stack to create a new branch
] : Pop a state from the stack and make it the current state of the turtle to close the branch


-------------------------------------
The L-system structure
-------------------------------------
The L-system description of a plant consists of a set of iterations, set of directional and sizing parameters, initial string, a set of production rules, and a set of terminating productions. The statement

Plant_Name {
Iterations=N
Angle=d
Diameter=D
Axiom=w
Production 1
Production 2

Production n
Endrule
Endproduction 1
Endproduction 2

Endproduction m
}

is the format of L-system.

The meaning of each keyword is given as follows:
----------------------------------------------------------------------------------

Plant_Name
Plant_Name is a name of plant module.

Iterations=N
This input sets the number of iterations for selecting and rewriting the production rules. Each production rule is selected according to the appearance of the symbols in the current string. N is an integer greater than -1.

Angle=d
This angle(d) is used to set the angle of a the branch. For example, '-' is to turn right by an angle d, '^' is to pitch up by an angle d, and '/' is to roll right by an angle d degree.

Diameter=D
This diameter is used to set the diameter of the first internode. The other diameter of internodes and petioles are set follow by the equation of first internode. The unit of D is centimeters.

Axiom=w
This string is used to set the start status of the plant. Every start stem is located at the origin (0,0,0), and pointed towards the positive Y axis. The three angles for a 3-dimensional space (ax,ay,az) are set to zero for the first internode.

Production 1… Production n
Each production consists of a predecessor and a successor. The format of production is given below. Predecessor=Successor The predecessor is a symbol and the successor is a symbol string. The symbol is a set of character, and the symbol string is a set of character string.

Endrule
To terminate the rewriting of a production rule, a terminating symbol must be substituted to the corresponding symbol used by the previous production rule. The substitution rules are defined in the endproduction 1 to the endproduction m. The endproduction rules are called at the Nth iteration.

Endproduction 1 ... Endproduction m
The format of endproduction is the same as the production. The endproduction is a symbol that used to specify special plant symbols. These symbols are not defined in the above L-system symbol.

Character "{" and "}"
The character "{" and "}" are the begining and the end of L-systems structure, respectively.

---------------------------------------

+++++++++++++++++++++++++++++++++++++
+ The algorithm to generate the plant model +
+++++++++++++++++++++++++++++++++++++

1. Select the L-system page.
1.1 Enter the L-system code and adjust all parameter.
1.2 Click "Compile L-system" button to compile the L-system code.
1.3 Click "Generate Plant" button to interpret the L-system symbol string.

2. Select the growth function page.
2.1 Select the function of each component that you have the data correspond to the L-system symbol string in the L-system page.
2.2 Click "Read Data" button to open the data file, and the data will show in the Actual Data block. (example "data1.txt","data2.txt",etc)
2.3 Click "Fit Curve" button to fit the growth curve and approximate the the growth function of that component.
2.4 Select another function follow 2.1, 2.2, 2.3, and so on.

3. Select the component page.
3.1 Click "Open 3D Surface" to open the leaf and flower library. (example "3dleaf.sur")
3.2 Click "Leaf Surface" radio button to select the leaf library. ("leafds.exe" is executed)
3.3 Select the leaf type in the combo box, the shape of leaf will be shown on the image, and adjust the appropriate paratmeter such as the size, angle.
3.4 Select "Flower Surface" radio button, if the symbol "F" is member in your L-system string.
3.5 Select the flower type in the combo box, the shape of leaf will be shown on the image, and adjust the appropriate paratmeter such as the size, angle, the number of petal.
3.6 If you want to create the new surface of leaf or flower, click "New Surface" to open the LeafDS software to create the new surface.

4. Select the animation page.
4.1 Click "Animation Show" or "Play" to show the plant model.
4.2 Adjust the rotation, translation, zoom, velocity, scale to show the appropriate plant model.
4.3 You can use mouse point to rotate the plant model on the "Plant Visualization" window.
4.4 If you get an appropriate model, you can export your model to the frame of animation and gif animation for the web.

5. Select the parameter page.
If you get the unappropriate model, you can adjust the parameter such as the stem length, the node diameter, the petiole length, the petiole bit angle, the internode reduce, the petiole reduce, the leaf reduce, the flower reduce, etc.

6. Select the material page.
This page is use to set the color of each component, you can select the component at the radio button and adjust their color. A special case for leaf, you can add the texture to the leaf surface, click the check box "Set Leaf Texture" and select the texture library or click the image to open the new texture of your design. Note that the texture must be sized 2^n pixels by 2^m pixels, where n,m = 3,4,5,6,7,8.

7. About the text editor page.
This page shows your prefered the L-system code. You will store it in this page for the future working.

Note that, you can change all parameter of each page, the plant model will show you as real time.

If you found any problem, please let me know to fix the bug.
email : Somporn.ChuaiAree@iwr.uni-heidelberg.de
Web : http://www.iwr.uni-heidelberg.de/~schuai



















Plant gallery created by "PlantVR"
Plant animations gallery created by "PlantVR"

Download PlantVR1.0
Download PlantVR1.0 Manual (main program)
Download LeafDS Manual (Leaf Design Surface)

Send your comments and suggestions Here