Main Raytraced Art Programs Technical
L-Systems
Excited yet?
Rose in Vase
This page tells how some of the ray-traced images on my Raytracing page were produced. To see slightly impressive/mildly amusing screenshots of the process of creating these images, visit this page.

L-Systems

L-Systems are a method for getting incredibly complex shapes from a simple set of typographical rules. Typographical, meaning you start with a string, and for each letter in the string you can either replace it with a rule corresponding to the letter or with nothing. It also operates on the principle of the Turtle, who for any of you who used computers in the "old" days, has the same function as the turtle in the LOGO program. You give it a set of instructions, and it moves where you want it to.

Small Bush A link or two is given at the end of this page for learning more about L-systems; enough has been written already that I don't really need to get into it! But to give an idea of what the code for one might look like, here's the code for the small bush (click on the image for a larger view):
6
22.5
20
A
A=c(12)[&FL!A]>>>>>[&FL!A]>>>>>>>[&FL!A]
F=S>>>>>F
S=FL
L=[^^{c(8)-f+f+f-|-f+f+f}]
@

For anyone really interested in L-systems, the book which everyone refers to on the matter is called the Algorithmic Beauty of Plants (©1990 Springer-Verlag, New York). It was co-authored by A. Lindenmayer, whom L-systems are named after.
The Images
My images (at least the ones which involve L-systems) use a number of different programs to get the finished product, links to which appear at the bottom of this page. Screenshots of some of these programs in action can be found on the Lab page. In order, the steps I take to create an image are:
  1. LParser - This program produces a DXF 3-D data file of any given L-system. This is the most powerful L-system processor I've yet come across, and it's quite easy to use once you understand the rules.
  2. 3DWIN - A simple converter between different 3-D file formats. In this case, I use it to convert between one DXF file to one POV-Ray INC file and one Moray UDO (User Defined Object) file.
  3. Moray - This is a 3-D modelling program which works with POV-Ray. With this I can take the plants produced by LParser, maneuver them where they need to go, add the necessary textures and lighting, and make up an entire scene involving the plant.
  4. POV-Ray - This produces the final rendered product. Probably one of the most advanced 3-D rendering tools available now, though it requires a good modeller to use every feature (unless you want to describe scenes from scratch in the language it understands).
And that's how it's done. For more specific information on each image, visit the Raytracing page.

Links
  1. L-Systems Manual A beginner's guide to L-Systems. Doesn't really cover 3-D L-systems if I remember correctly, but it tells the concept and has good pictures and examples.
  2. L-System Plant Geometry Generator More advanced page with some better rendered images of L-Systems, 2-D and 3-D. Everything you need to know and more.
  3. LParser Laurens Lapre has an amazing web page here with excellent pictures he's produced, L-system related and not. Should be visited if you enjoy art of any kind! LParser is available here.
  4. L-System 4.0 Finally, a Windows version of the DOS program LParser. Easy to use, doesn't require the DOS command line, has an on-screen symbol list...What more could you want?
  5. Moray A 3-D modeller for Windows '95 and DOS which creates files to use with POV-Ray.
  6. POV-Ray One of the most advanced 3-D rendering tools available today. Although they have versions of it for practically every operating system (Mac, DOS, Windows '95, Unix, etc.), you'll probably want to find a modeller for it which also runs on your system, unless you want to learn POV-Ray's scene description language.
  7. 3DWin Converts between many different 3-D file types; I use it to convert between DXF and POV-Ray INC/Moray UDO files. If you work with 3-D at all this comes in very handy. (Also comes with an OpenGL version for previewing imported objects before converting them.)

Return to the Index

This page created and maintained by Sean O'Malley.