|
1 | | -[Architecture docs](/docs/architecture.md) |
| 1 | +# L-System Plant Generator |
2 | 2 |
|
3 | | -### Running |
| 3 | +Generating and rendering 3D fractal plants using L-systems using OpenGL. |
| 4 | + |
| 5 | +## Features |
| 6 | +* Loading fractal base geometry from .obj files |
| 7 | +* Loading floor model geometry and material from .obj and .mtl files |
| 8 | +* Selection of fractal base models |
| 9 | +* Selection of predefined L-systems for plant generation |
| 10 | +* Custom L-system input via GUI |
| 11 | +* Phong, Gouraud or Flat shading selectable via GUI |
| 12 | +* Perspective camera with keyboard and mouse controls |
| 13 | +* Randomized placement of plants in a defined area |
| 14 | +* Interpolating plant color based on height |
| 15 | + |
| 16 | +## Authors |
| 17 | +* Mikołaj Garbowski |
| 18 | +* Maksym Bieńkowski |
| 19 | +* Jędrzej Grabski |
| 20 | + |
| 21 | +## Installation |
| 22 | +* Install [Rust](https://rust-lang.org/tools/install/) |
| 23 | +* Install [Just](https://github.com/casey/just) for running utility scripts |
| 24 | + |
| 25 | +## Running |
4 | 26 | Clone, `just run`. Check out `just -l` for recipes. |
5 | 27 |
|
6 | | -### Controls |
| 28 | +## Controls |
7 | 29 | * Move using WASD/HJKL |
8 | 30 | * Space to move up, z to move down |
9 | 31 | * Mouse to look around |
10 | 32 | * Press `Esc` to enter menu |
11 | 33 |
|
12 | | -## Specification |
13 | | - |
14 | | -W ramach projektu należy stworzyć program, który będzie umożliwiał two- |
15 | | -rzenie roślin z wykorzystaniem L-systemów. |
16 | | -W tym celu należy zaimplementować: |
17 | | -1. [x] wsparcie dla podstawowego typu plików wejściowych z modelem 3D: obj |
18 | | - - ewentualna baza dla rośliny i podłoże |
19 | | -2. [x] cieniowanie Phonga |
20 | | -3. interpretację właściwości materiału: diffuse |
21 | | -4. [x] kamerę perspektywiczną - możliwość poruszania się po scenie oraz obrotu |
22 | | -5. możliwość generacji roślin: |
23 | | - - możliwość wyboru 3 różnych predefiniowanych roślin |
24 | | - - możliwość podania swoich zasad generacji |
25 | | - - rozsiewanie modeli w zadanym obszarze - należy pamiętać, o transformacjach, żeby roślinność nie wyglądała zbyt sztucznie |
26 | | -6. zmienny kolor rośliny w zależności od jej wysokości |
| 34 | + |
| 35 | +## References |
| 36 | +* [L-System - Wikipedia](https://en.wikipedia.org/wiki/L-system) |
| 37 | +* The Algorithmic Beauty of Plants, P. Prusinkiewicz, A. Lindenmayer |
| 38 | +* Real-Time Rendering 4th Edition, T. Akenine-Möller, E. Haines, N. Hoffman, A. Pesce, M. Iwanicki, S. Hillaire |
| 39 | +* [Learn OpenGL](https://learnopengl.com/) |
0 commit comments