UMBERTO RONCORONI
..GDesign 1.0
GENERATIVE DESIGN - LSYSTEMS - CELLULAR AUTOMATA
Home - Gallery - Download - Pedagogy - Contact - Links




Generative design with L-Systems

Manual and FAQ - Updated April 2008.
Go to the download page to get the full GDesign manual.

Introduction
This software was developed as my Computer Science master tesis at PUCP, Lima, Peru.
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 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 inside SubSystems (not a really bad limitation, though).
.....I have to figure out how to align with SubSystems, now symbols match the last symbol of the current SubSystem (not always good)
.....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
Download and unzip GDesign 2.0 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.
10. Branches are created with [ and terminated with ]. But you can use the special ( ) branches that pop and push
.....only the object size data. This simple idea makes possible some nice effects. () can be nested, even inside [].


Maps
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.


Objects
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 functAndamio.ms.


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.


Tools
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)


Files
.cad = the standard GDesign text file format. Stores rules and objects of the user grammar.
.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)


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


Top