Procedural Flower Garden

A DirectX11 application showcasing a handful of procedural techniques with focus on L-Systems.

University Assignment | C++ | ~ 2 months

  • L-Systems
    L-Systems are responsible for rewriting a string according to the assigned production rules. Each flower type has its own ruleset and interpretation of the current state of the L-System.
  • Terrain Faulting
    A technique inspired by the movement of continental plates to convert a flat plane into uneven terrain. The plane is randomly cut in two halves, in which one is elevated and the other declined for multiple iterations.
  • Perlin Noise
    Used for placing the flowers across the terrain. This puts them into clean groups and creates some clear pathways but preserves the possibility for variation.
  • ImGui
    A library for a graphical user interface that allows the user to control parameters of objects in the scene.

Behind the Scenes

Background

This project was developed as part of the „Procedural Methods“ course module at Abertay University, which explored the theory and application of various forms of procedural content generation for terrains, dungeons, plants, cities, and more.

The primary focus of this project was to delve deeper into L-Systems, a method for modeling biological growth, and apply this knowledge to generate a small variety of plants with increasing complexity. This work also incorporates terrain generation and noise for object placement.

The Process

Throughout the project, I drew heavily on literature from Astrid Lindenmeyer and Przemyslaw Prusinkiewicz, specifically „The Algorithmic Beauty of Plants“ (1990), which introduced this method for modeling biological growth. 

Initially, deterministic L-Systems were used to create the first flowers based on examples and production rules from the book. Stochastic production rules were later added for more complexity, and the final two flower types were built entirely from reference images using my own set of production rules derived from scratch.

More Projects!

Procedural Flowers
Bachelor Project
Networking Project
Unreal Project
Graphics Programming
Networking Project