..GDesign 1.0
Home - Gallery - Download - Pedagogy - Contact - Links

Generative design with L-Systems

Manual and FAQ - Updated July 2009.
Go to the download page to get the full GDesign manual.

This software was originally developed as my Computer Science master tesis at PUCP, Lima, Peru in 2007.
I have been using an old implementation of GDesign in my generative design classes at the Architecture Faculty
of the San Martin de Porres University in Lima, Peru.
Actually, the main use of the software is for investigation, research and to experiment with generative processes.
It has some minor bugs and inconsistencies, that will be fixed soon:
.....Some rules options can't be saved, such as stochastic and context sensitive rules.
.....Rotations are not allowed in SubSystems (not a really bad limitation, though).
.....POVRays' blob objects can't be used with other objects.
Despite this, GDesign works well.
I assume that you already know how LSystems work. If not, download the tutorial in the download page.

Install GDesign 2.0 or GDesign 2.1
Download and unzip GDesign 2.0 or 2.1 into drive C.
Inside GDesign main dir there are 3 subdirectories: Objects, Maxscripts and Grammars.
Objects is used to store .pov files, Maxscripts .ms files and Grammars .cad and .sub GDesign file formats.

GDesign Workflow
01. Open the Grammar window, where you build your generative grammars and specify 2D and 3D objects.
02. Save the grammar before exiting, and set export options. Press Launch.
03. Choose iterations, object size, angle and decay. Default are 50, 5 and 30 degrees.
04. Choose standard or stocastic or context sensitive LSystems (Only standard rules are saved, though).
05. Change viewports or parameters, or go back to the grammar window to edit your LSystem.
06. To render your model, enter in POVRay or 3DSMax (without exiting GDesign) and run the scripts.

Grammar Design
01. Write the axiom, with any combination of legal symbols. Click a symbol of the dictionary for more help.
02. Write the rules for each symbol. You can set different rules for every iteration, up to 7.
03. If you want to use stocastic rules click "expand" and write the rule in the text field for each iteration.
04. If you want context sensitive rules click "context", then set the left and right tokens for each symbol and the rule.
05. You can set and reset context rules at any time.
06. If you want to use macros and functions, define the strings and other parameters, then use M R or S symbols as usual.
07. If you want to use SubSystems, first create a valid LSystems and run the system with save subsystem checkbox checked.
......Then create a new LSystem, and load the SubSystem (.sub) in symbol A or B. Use them as usual.
......Remember that SubSystems do not recognize rotations, so do not use them when creating one.
08. To use maps, load a .TGA file and use it as a ZBuffer. Objects will follow the brightness values of the image.
09. Special symbols @, :, |, = , !, $
......@ lets set a random rotation angle, positive or negative. The max rnd value is set by Angle control parameter.
......: decrease the object size by a fised % value, set with the decay parameter.
......| increase the object size by a fised % value, set with the decay parameter.
......= blocks the symbol for 1 iteration, == for 2 iterations, etc. Lets set when a symbol will grow.
......! Inverts rotation (clockwise to countercw and viceversa)
......$ Inverts dierction (default is left right, bottom up, far near)
10. Branches are created with [ and terminated with ].
11.New! In GDesign 2.1 there is an interactive rule, symbol i. You have to input the rule interactively during runtime.
11.New! Symbol g. This symbols doubles itself automathically.
12.New! Automatic decrease/increase angle and size. Very useful for tree objects! Grammar, Options.

You can load a RGB 24 bit raster image in TGA format, to use as a Z buffer.
Load the image and display it in the Canvas window. In the Grammar window, open Options and check the option.
Adjust the position and the size of the system to match the image as you like.

a,b,p are just symbols. The parser translate these symbols into graphic objects that are defined by users.
To set a graphic object for a and b symbols, choose from the list under the rules.
Some objects are actually complex scripts in POVRay or 3DMax scripting languages. These objects are displayed as cubes.
Users can redefine the ladder .pov and .ms scripts with their own functions. Just save the old library and enter your code.
See the MyLib2.pov and

Intelligent SubSystems. (July 2009)
New! A and B symbols represent full LSystems strings that can be used as objects inside other LSystems.
To create a subsystem, create a normal LSystem and check the save subsystem option.
SubSystems have their own size, independent from the main system. SubSystems are context sensitive, they can be modified
using the symbol * inside the subsystems string. You can set the rule for this symbol checking the left symbol befor A or B.
Example: aA or bA. The * rule can be set in the option window for the a and b case up to 5 different options.

Controls and parametric design
01. Iterations. Sets how many steps the system is growing (how many recursive substitutions)
02. Size. Sets the object size. Press A or B to set the subsystem' size
03. Decay. Sets the amount of % scaling of objects' size. It is the value of : and | symbols.
04. Angle. sets the angle of rotations in degrees. Press A or B to set the angle of subsystems.
Some options can be set in the grammar window, options.

Examples: The Snowflake and a sample 2D tree.
Design: DOL, stochastic and context-sensive parametric LSystems.
Experiments: systems that autoadjust. (I'm working on it)

.grm (.cad) = the standard GDesign 2.1 (2.0) text file format. Stores rules and objects of the user grammar.
.lsm (.sub) = this is a text file that store the LSystem full string. It can be used as a subsystem, 3D rotations will be ignored
.tga = the standard Truevision bitmap file format to store truecolor 24 bits images
.pov = the POVRay text file for scripts (Objects directory)
.ms = the 3DSMax text file for scripts (MaxScipts directory)

Please send your questions here, I will reply as soon as possible.
send a FAQ