PlanetCreator | ||
.gitignore | ||
README.md |
Grafika2023
Nazwa Projektu: Planet Creator
Skład grupy: Dominik Piasecki, Dzianis Drobysh, Maryia Sauko
Opis: Projekt "Planet Creator" to interaktywny edytor, który umożliwia użytkownikowi kontrolowanie roślinności na planecie. Głównym celem projektu jest zapewnienie narzędzi do projektowania i eksperymentowania z różnymi wzorami roślinnymi, które są generowane przy użyciu L-systemów. Użytkownik może wpływać na wygląd planety poprzez ustawienie parametrów wilgotności i temperatury.
Techniki:
L-systemy
(generowanie różnych wzorów roślin) modele powstały za pomocą wstępnej generacji w programie Lpy (format .ply), dalej przetwarzania modeli w programie Blender (inicjalizacja uv-koordynat, podłączenie tekstur do odpowiednich trójkątów modelu i utworzenie plików .obj i .mtl). pliki .mtl odczytywane są za pomocą odpowiedniej funkcji (wczytywanie parametrów modelu i przekazanie do shaderów).
model PBR (realistyczne oświetlenie obiektów)
interpretowany z plików material (.mtl).
Cube Map
tło sceny
bloom
dodatkowe oświetlenie jasnych punktów
instancing
rysowanie obiektów o takim samym meshu za pomocą jednego wywołania funkcji, co znacząco poprawia wydajność.
interfejs użytkownika
umożliwia dodanie planiety i ustawienie jej parametrów przez użytkownika. powstał przy użyciu biblioteki IMGui
##Przykład działania: W programie zadeklarowane zostały 12 różnych modeli (z uwzględnieniem etapów wzrostu) rośliny i ulubionych wartościach temperatury i wilgotności opisanych przez średnią i odchylenie standardowe. Na potrzeby prostoty przykładu wszystkie parametry w przykładzie mają odchylenie standardowe równe 5 a każda roślina ma taką samą średnią temperatury i wilgotności. Prawdopodobieństwo wystąpienia danej rośliny zależy od wartości funkcji gęstości rozkładu Gaussa przyjmującej dwa argumenty. Na kolejnych zrzutach ekranu widać 4 przypadki : ulubione warunki każdej z roślin, warunki pośrednie, warunki nieakceptowalne przez żadną z roślin Zrzut ekrana z wieloma planetami (inna tekstura skyboxa):