diff --git a/7_Centaurea_cyanus.jpg b/7_Centaurea_cyanus.jpg deleted file mode 100644 index c46851a..0000000 Binary files a/7_Centaurea_cyanus.jpg and /dev/null differ diff --git a/Anabaenaflosaquae_EPA.jpg b/Anabaenaflosaquae_EPA.jpg deleted file mode 100644 index 395e38b..0000000 Binary files a/Anabaenaflosaquae_EPA.jpg and /dev/null differ diff --git a/Screenshot 2021-03-13 at 14.29.10.png b/Screenshot 2021-03-13 at 14.29.10.png deleted file mode 100644 index 28535d1..0000000 Binary files a/Screenshot 2021-03-13 at 14.29.10.png and /dev/null differ diff --git a/Screenshot 2021-03-14 at 07.32.36.png b/Screenshot 2021-03-14 at 07.32.36.png deleted file mode 100644 index 25db776..0000000 Binary files a/Screenshot 2021-03-14 at 07.32.36.png and /dev/null differ diff --git a/Screenshot 2021-03-14 at 07.32.56.png b/Screenshot 2021-03-14 at 07.32.56.png deleted file mode 100644 index 1d71131..0000000 Binary files a/Screenshot 2021-03-14 at 07.32.56.png and /dev/null differ diff --git a/Screenshot 2021-03-14 at 07.33.17.png b/Screenshot 2021-03-14 at 07.33.17.png deleted file mode 100644 index 12ff339..0000000 Binary files a/Screenshot 2021-03-14 at 07.33.17.png and /dev/null differ diff --git a/Treść zadań/L-System-2.html b/Treść zadań/L-System-2.html new file mode 100644 index 0000000..fd42909 --- /dev/null +++ b/Treść zadań/L-System-2.html @@ -0,0 +1,127 @@ + + + + + + + L-System-2 + + + + + + +

Filotaksja (Ulistnienie)

+

Regularne ułożenie bocznych (lateralnych) elementów roślin (liści, gałęzi, płatków kwiatów, kolce na róży itd) jest istotnym aspektem kształtu rośliny, znaną jako filotaksja. Jest to zagadnienie dogłębnie badane przez biologów jak i matematyków. W trakcie zajęć skupimy się na dwóch modelach, pozwalających na otrzymanie realistycznych obrazów kwiatów i owoców, w których pojawia się spirala filotaktyzna.

+

Pierwszy z nich opisuje rozmieszczenie na płaszczyźnie, został pierwszy raz wykorzystany przez Vogela do opisu struktury słonecznika. Natomiast drugi redukuje filotakcję do upakowania na cylindrze.

+

Model planarny

+

Do opisu wzorców w słoneczniku Vogel zaproponował następujące reguły

+

\[ \phi = n * 137.5^\circ ,\quad r=c\sqrt{n}\]

+

gdzie:

+ +

Efekt wygląda następująco: Vogel

+

Zadanie

+

Zaproponuj L-System, który opisze poniższy model (będzie przypominał poniższy obrazek), możesz skorzystać ze znaków +(a), który obraca o kąt a, f(w) który przesuwa o w do przodu oraz S, który rysuje sferę. Wyświetl go za pomocą sceny LSystem3D.

+
+

Podpowiedź: wszystkie elementy mogą być dzieckiem jednego głównego znaku odpowiadającego za centrum

+
+

w otrzymanym wzorcu możemy zaobserwować 2 spirale, jedna obraca się zgodnie z ruchem wskazówek zegara, druga w przeciwną (znajdują się na rysunku poniżej ) znane też jako parastichy. Okazuje się,że liczba ramion w jednej i drugiej spirali jest zawsze równa dwóm kolejnym liczbom fibonacciego.

+

parastichy parastichy

+

Zadanie

+

Zmień kąt \(\phi\) kolejno na 137.4 i 137.6 stopni jaką różnicę zauważasz?

+

Modelowanie słonecznika

+

słonecznik słonecznik Oczywiście sama spirala, chociaż oddaje wzór filotaksji, to nie przypomina za bardzo słonecznika. Słoneczniki mają kwiatostan typu koszyczek, to znaczy duży kwiatostan widoczny widoczny na zdjęciu składa się tak na prawdę z wielu małych kwiatów. Od zewnątrz mamy kwiaty języczkowe, to te, które kończą się dużymi płatkami, wewnątrz są drobniejsze kwiaty rurkowe. Kwiaty zaczynają swój żywot w środku kwiatostanu, następnie są “spychane” na zewnątrz, dlatego możemy zaobserwować, że w środku są zielone świeże pąki, które żółkną im dalej są od środka, żeby następnie przejść w otwarte kwiaty.

+

By oddać ten efekt wystarczy dla większych wartości N wziąć różne obiekty, by zwiększyć realizm można też dodać także wygięcie widoczne na drugim obrazku

+

Zadanie

+

Zmodyfikuj L-System i definicję żółwia z poprzedniego zadania tak, żeby otrzymać słonecznik. skorzystaj z modeli, które znajdują się w folderze Models/Sunflower. Przyjmij liczbę kroków koło 650.

+

Zmodyfikuj koszyk tak by był trochę wypukły, jak na drugim zdjęciu.

+

Zadanie domowe

+

Napisz L-System i interpretację, która zamodeluje kwiat róży, zrób w wybranym programie graficznym lub znajdź kilka wariantów płatków, które wykorzystasz do reprezentowania różnych etapów rozwoju. `

+

Filotaksja Liści

+

Przez filotaksję rozumiemy także rozmieszczenie liści na łodydze. Wyróżniane są różne typy filotaksji, część z nich jest pokazana na poniższym obrazku.

+
+rose +
+

L-Systemy Kontekstowe

+

Dotychczasowe L-Systemy były systemami bezkontaktowymi, to znaczy reguły produkcyjne zależały wyłącznie od przepisywanego znaku. Jednak w modelowaniu procesów biologicznych przydatne będzie, żeby organy rośliny komunikowały się między sobą. W tym celu wykorzystamy L-Systemy kontekstowe.

+

Kontekst oznaczamy poprzez znaki < i >, gdzie A < B oznacza, że przepisany będzie B, jeżeli jego poprzednikiem jest A. Natomiast C > D oznacza, że przepisany zostanie C jeżeli jego następnikiem jest D.

+

Przykładowo poniższy L-System prezentuje przekazywanie sygnału od lewej do prawej

+
#axiom
+BAAAAAAAA
+#rules
+B<A -> B
+B -> A
+#end rules
+

Kolejne kroki będą wyglądać następująco

+
ABAAAAAAA
+AABAAAAAA
+AAABAAAAA
+...
+AAAAAAAAB
+AAAAAAAAA
+

Możesz to zobaczyć w scenie Context, ładując L-System Context1.txt.

+

Powyższy L-System nie jest specjalnie użyteczny, sygnał pochodzi znikąd i idzie donikąd. Można go z łatwością rozbudować tak, żeby po lewej był odbiornik, po prawej i przekaźnik po lewej.

+
#axiom
+C(5,5)AAAAAAAAD(0)
+#rules
+C(a,b) > A : b<5 -> C(a,b+1)
+C(a,b) > A : b>=5 -> C(a-1,0)
+C(a,b) < A : b>=5 -> B
+B<D(a) -> D(a+1)
+B<A -> B
+B -> A
+#end rules
+

Ten L-System znajduje się w Context2.txt. Zauważ jak obiekt po prawej rośnie a po lewej się kurczy wraz z przesyłaną informacją. Można w ten sposób przekazywać informację pomiędzy organami rośliny. Poniższy obrazek prezentuje jak sygnał może być propagowany w dół (akropetalnie) i w górę (basipetalnie).

+
+propagacja +
+

Propagacja sygnału jest jednym z narzędzi do wprowadzenia samoorganizacji w modelu rośliny, poprzez uzależnienie od siły sygnąłu siły decyzji jak dany organ ma się dalej zachować.

+

W dotychczasowych L-Systemach pojawiały symbole, które nie są częścią struktury rośliny, jedynie odpowiadają za geometrię (takie jak + albo -). Będą one przeszkadzać w komunikacji poprzez kontekst, w tym celu należy użyć słowa kluczowego #ignore, które mówi, żeby pominąć znaki które są wymienione po nim. Muszą one być wymienione w teh samej linii po spacji. Przykładowo zmodyfikowany powyższego LSystemu z dodanymi zgięciami. Będzie on działał dokładnie tak samo.

+
#ignore + -
+#axiom
+C(5,5)A+A+AA-A-AA-AD(0)
+#rules
+C(a,b) > A : b<5 -> C(a,b+1)
+C(a,b) > A : b>=5 -> C(a-1,0)
+B(1)<D(a) -> D(a+1)
+B(a)<A -> B(a)
+B(a) -> A
+#end rules
+

Zadanie

+

Bazując na L-Systemie powyżej napisz L-System, który będzie przekazywał w L-Systemie sygnał z korzenia do zalążków. W zależności od rodzaju sygnału powinien sie pojawić kwiat, liść lub nowe rozgałęzienie. To jakie sygnały wysyła może być losowe.

+

Zadanie domowe

+

Wykorzystaj Pozyskaną wiedzę na temat filotaksji i propagacji informacji w L-Systemach do stworzenia modelu rozwoju róży. Użyj propagacji do sterowania wzrostem rośliny zgodnie ze schematem, jako kwiaty użyj wyników modelu z poprzedniego zadania (nie musisz wizualizować ich rozwijania się, wystarczy, że będą się pojawiać i znikać)

+

Schemat rozwoju róży

+

Róża składa się z łodyg, kwiatów i liści. Częścią, która rośnie jest jest czubek łodygi, który będziemy nazywać wierzchołkiem.

+

Liście wyrastają bezpośrednio z łodygi, w filotaksji spiralnej. Każdy liść składa się z nieparzystej liczby liści rosnących na przeciwlegle.

+

rose rose

+

Cykl rozwoju róży podzielimy na 4 etapy wzorowane na porach roku.

+

Wiosna

+

W miejscu starych liści pojawiają się zalążki nowych liści, w tym etapie każdy z nich ma szansę stać się wierzchołkiem nowej łodygi. Istniejące wierzchołki rosną i wytwarzają nowe zalążki liści.

+

Lato

+

Obecne wierzchołki kontynuują swój wzrost. Na tym etapie nowe łodygi mogą wyrosnąć tylko z nowych zalążków, które pojawiają się w wyniku rozwoju łodyg, ale szansa na ich pojawienie jest większa. W trakcie tego etapu wierzchołek może zmienić się w kwiat.

+

Jesień

+

Wzrost rośliny się zatrzymuje, kwiaty zamieniają się w owoce, nie powstają nowe liście ani zalążki.

+

Zima

+

Roślina czeka na nową wiosnę, powstałe owoce są obrywane przez okoliczne zwierzęta szukające pożywienia. Pojedyńcze elementy łodygi mogą zostać uśpione lub uszkodzone i w niektórych miejscach nie wyrosną nowe liście lub wierzchołek przestanie funkcjonować.

+
+

Poniżej znajduje się symboliczna reprezentacja zasad

+
+rose +
+ + diff --git a/Treść zadań/L-System-2.md b/Treść zadań/L-System-2.md new file mode 100644 index 0000000..3899b79 --- /dev/null +++ b/Treść zadań/L-System-2.md @@ -0,0 +1,167 @@ +# Filotaksja (Ulistnienie) + +Regularne ułożenie bocznych (lateralnych) elementów roślin (liści, gałęzi, płatków kwiatów, kolce na róży itd) jest istotnym aspektem kształtu rośliny, znaną jako filotaksja. Jest to zagadnienie dogłębnie badane przez biologów jak i matematyków. W trakcie zajęć skupimy się na dwóch modelach, pozwalających na otrzymanie realistycznych obrazów kwiatów i owoców, w których pojawia się spirala filotaktyzna. + +Pierwszy z nich opisuje rozmieszczenie na płaszczyźnie, został pierwszy raz wykorzystany przez Vogela do opisu struktury słonecznika. Natomiast drugi redukuje filotakcję do upakowania na cylindrze. + +## Model planarny + + + +Do opisu wzorców w słoneczniku Vogel zaproponował następujące reguły + +$$ \phi = n * 137.5^\circ ,\quad r=c\sqrt{n}$$ + +gdzie: + +* $n$ to indeks elementu kwiatu, +* $\phi$ to kąt między między ustalonym kierunkiem odniesienia a kierunkiem od centrum do danego elementu, gwarantuje, że kąt między dwoma kolejnymi elementami był 137.5 stopni. Można też o tym myśleć jak o kącie we współrzędnych kierunkowych, +* $r$ to promień - odległość od centrum, +* $c$ - ustalona stała. + +Efekt wygląda następująco: +![Vogel](\Vogel.jpg) + +### Zadanie +Zaproponuj L-System, który opisze poniższy model (będzie przypominał poniższy obrazek), możesz skorzystać ze znaków `+(a)`, który obraca o kąt `a`, `f(w)` który przesuwa o `w` do przodu oraz `S`, który rysuje sferę. Wyświetl go za pomocą sceny **LSystem3D**. + +> Podpowiedź: wszystkie elementy mogą być dzieckiem jednego głównego znaku odpowiadającego za centrum + +w otrzymanym wzorcu możemy zaobserwować 2 spirale, jedna obraca się zgodnie z ruchem wskazówek zegara, druga w przeciwną (znajdują się na rysunku poniżej ) znane też jako parastichy. Okazuje się,że liczba ramion w jednej i drugiej spirali jest zawsze równa dwóm kolejnym liczbom fibonacciego. + +![parastichy](\parastichy1.jpg) +![parastichy](\parastichy2.jpg) + +### Zadanie +Zmień kąt $\phi$ kolejno na 137.4 i 137.6 stopni jaką różnicę zauważasz? + +### Modelowanie słonecznika + +![słonecznik](\sunflower1.jpg) +![słonecznik](\sunflower2.jpg) +Oczywiście sama spirala, chociaż oddaje wzór filotaksji, to nie przypomina za bardzo słonecznika. Słoneczniki mają kwiatostan typu koszyczek, to znaczy duży kwiatostan widoczny widoczny na zdjęciu składa się tak na prawdę z wielu małych kwiatów. Od zewnątrz mamy kwiaty języczkowe, to te, które kończą się dużymi płatkami, wewnątrz są drobniejsze kwiaty rurkowe. Kwiaty zaczynają swój żywot w środku kwiatostanu, następnie są "spychane" na zewnątrz, dlatego możemy zaobserwować, że w środku są zielone świeże pąki, które żółkną im dalej są od środka, żeby następnie przejść w otwarte kwiaty. + +By oddać ten efekt wystarczy dla większych wartości N wziąć różne obiekty, by zwiększyć realizm można też dodać także wygięcie widoczne na drugim obrazku + +### Zadanie +Zmodyfikuj L-System i definicję żółwia z poprzedniego zadania tak, żeby otrzymać słonecznik. skorzystaj z modeli, które znajdują się w folderze Models/Sunflower. Przyjmij liczbę kroków koło 650. + +Zmodyfikuj koszyk tak by był trochę wypukły, jak na drugim zdjęciu. + +## Zadanie domowe +Napisz L-System i interpretację, która zamodeluje kwiat róży, zrób w wybranym programie graficznym lub znajdź kilka wariantów płatków, które wykorzystasz do reprezentowania różnych etapów rozwoju. ` + +## Filotaksja Liści +Przez filotaksję rozumiemy także rozmieszczenie liści na łodydze. Wyróżniane są różne typy filotaksji, część z nich jest pokazana na poniższym obrazku. + + +![rose](phyllotaxy_leaf.png) + +# L-Systemy Kontekstowe + +Dotychczasowe L-Systemy były systemami bezkontaktowymi, to znaczy reguły produkcyjne zależały wyłącznie od przepisywanego znaku. Jednak w modelowaniu procesów biologicznych przydatne będzie, żeby organy rośliny komunikowały się między sobą. W tym celu wykorzystamy L-Systemy kontekstowe. + +Kontekst oznaczamy poprzez znaki `<` i `>`, gdzie `A < B` oznacza, że przepisany będzie `B`, jeżeli jego poprzednikiem jest `A`. Natomiast `C > D` oznacza, że przepisany zostanie `C` jeżeli jego następnikiem jest `D`. + +Przykładowo poniższy L-System prezentuje przekazywanie sygnału od lewej do prawej +``` +#axiom +BAAAAAAAA +#rules +B B +B -> A +#end rules +``` +Kolejne kroki będą wyglądać następująco +``` +ABAAAAAAA +AABAAAAAA +AAABAAAAA +... +AAAAAAAAB +AAAAAAAAA +``` + +Możesz to zobaczyć w scenie `Context`, ładując L-System `Context1.txt`. + +Powyższy L-System nie jest specjalnie użyteczny, sygnał pochodzi znikąd i idzie donikąd. Można go z łatwością rozbudować tak, żeby po lewej był odbiornik, po prawej i przekaźnik po lewej. + + +``` +#axiom +C(5,5)AAAAAAAAD(0) +#rules +C(a,b) > A : b<5 -> C(a,b+1) +C(a,b) > A : b>=5 -> C(a-1,0) +C(a,b) < A : b>=5 -> B +B D(a+1) +B B +B -> A +#end rules +``` + + +Ten L-System znajduje się w `Context2.txt`. Zauważ jak obiekt po prawej rośnie a po lewej się kurczy wraz z przesyłaną informacją. Można w ten sposób przekazywać informację pomiędzy organami rośliny. Poniższy obrazek prezentuje jak sygnał może być propagowany w dół (akropetalnie) i w górę (basipetalnie). + +![propagacja](signal_propagation.jpg) + +Propagacja sygnału jest jednym z narzędzi do wprowadzenia samoorganizacji w modelu rośliny, poprzez uzależnienie od siły sygnąłu siły decyzji jak dany organ ma się dalej zachować. + +W dotychczasowych L-Systemach pojawiały symbole, które nie są częścią struktury rośliny, jedynie odpowiadają za geometrię (takie jak `+` albo `-`). Będą one przeszkadzać w komunikacji poprzez kontekst, w tym celu należy użyć słowa kluczowego `#ignore`, które mówi, żeby pominąć znaki które są wymienione po nim. Muszą one być wymienione w teh samej linii po spacji. Przykładowo zmodyfikowany powyższego LSystemu z dodanymi zgięciami. Będzie on działał dokładnie tak samo. + +``` +#ignore + - +#axiom +C(5,5)A+A+AA-A-AA-AD(0) +#rules +C(a,b) > A : b<5 -> C(a,b+1) +C(a,b) > A : b>=5 -> C(a-1,0) +B(1) D(a+1) +B(a) B(a) +B(a) -> A +#end rules +``` +### Zadanie + +Bazując na L-Systemie powyżej napisz L-System, który będzie przekazywał w L-Systemie sygnał z korzenia do zalążków. W zależności od rodzaju sygnału powinien sie pojawić kwiat, liść lub nowe rozgałęzienie. To jakie sygnały wysyła może być losowe. + +## Zadanie domowe + +Wykorzystaj Pozyskaną wiedzę na temat filotaksji i propagacji informacji w L-Systemach do stworzenia modelu rozwoju róży. Użyj propagacji do sterowania wzrostem rośliny zgodnie ze schematem, jako kwiaty użyj wyników modelu z poprzedniego zadania (nie musisz wizualizować ich rozwijania się, wystarczy, że będą się pojawiać i znikać) + + +### Schemat rozwoju róży + +Róża składa się z **łodyg**, **kwiatów** i **liści**. Częścią, która rośnie jest jest czubek łodygi, który będziemy nazywać **wierzchołkiem**. + +Liście wyrastają bezpośrednio z łodygi, w filotaksji spiralnej. Każdy liść składa się z nieparzystej liczby liści rosnących na przeciwlegle. + + +![rose](Rose\3.jpg) +![rose](Rose\2.jpg) + +Cykl rozwoju róży podzielimy na 4 etapy wzorowane na porach roku. + +#### Wiosna + +W miejscu starych liści pojawiają się **zalążki** nowych liści, w tym etapie każdy z nich ma szansę stać się **wierzchołkiem** nowej łodygi. Istniejące **wierzchołki** rosną i wytwarzają nowe zalążki liści. + +#### Lato + +Obecne **wierzchołki** kontynuują swój wzrost. Na tym etapie nowe łodygi mogą wyrosnąć tylko z nowych **zalążków**, które pojawiają się w wyniku rozwoju łodyg, ale szansa na ich pojawienie jest większa. W trakcie tego etapu **wierzchołek** może zmienić się w **kwiat**. + +### Jesień + +Wzrost rośliny się zatrzymuje, kwiaty zamieniają się w owoce, nie powstają nowe liście ani zalążki. + +### Zima + +Roślina czeka na nową wiosnę, powstałe owoce są obrywane przez okoliczne zwierzęta szukające pożywienia. Pojedyńcze elementy łodygi mogą zostać uśpione lub uszkodzone i w niektórych miejscach nie wyrosną nowe liście lub wierzchołek przestanie funkcjonować. + +--- + +Poniżej znajduje się symboliczna reprezentacja zasad + + +![rose](Rose\rose_diagram.png) + diff --git a/Treść zadań/Rose/1.jpg b/Treść zadań/Rose/1.jpg new file mode 100644 index 0000000..24f263d Binary files /dev/null and b/Treść zadań/Rose/1.jpg differ diff --git a/Treść zadań/Rose/2.jpg b/Treść zadań/Rose/2.jpg new file mode 100644 index 0000000..ec91435 Binary files /dev/null and b/Treść zadań/Rose/2.jpg differ diff --git a/Treść zadań/Rose/3.jpg b/Treść zadań/Rose/3.jpg new file mode 100644 index 0000000..d1f0aa0 Binary files /dev/null and b/Treść zadań/Rose/3.jpg differ diff --git a/Treść zadań/Rose/rose_diagram.png b/Treść zadań/Rose/rose_diagram.png new file mode 100644 index 0000000..060f2f0 Binary files /dev/null and b/Treść zadań/Rose/rose_diagram.png differ diff --git a/Treść zadań/Vogel.jpg b/Treść zadań/Vogel.jpg new file mode 100644 index 0000000..1982772 Binary files /dev/null and b/Treść zadań/Vogel.jpg differ diff --git a/im_bracketed-5640616.jpg b/Treść zadań/im_bracketed.JPG similarity index 100% rename from im_bracketed-5640616.jpg rename to Treść zadań/im_bracketed.JPG diff --git a/Treść zadań/parastichy.JPG b/Treść zadań/parastichy.JPG new file mode 100644 index 0000000..3d73a3e Binary files /dev/null and b/Treść zadań/parastichy.JPG differ diff --git a/Treść zadań/parastichy1.jpg b/Treść zadań/parastichy1.jpg new file mode 100644 index 0000000..c252cf5 Binary files /dev/null and b/Treść zadań/parastichy1.jpg differ diff --git a/Treść zadań/parastichy2.jpg b/Treść zadań/parastichy2.jpg new file mode 100644 index 0000000..b265b2b Binary files /dev/null and b/Treść zadań/parastichy2.jpg differ diff --git a/Treść zadań/phyllotaxy_leaf.png b/Treść zadań/phyllotaxy_leaf.png new file mode 100644 index 0000000..1417904 Binary files /dev/null and b/Treść zadań/phyllotaxy_leaf.png differ diff --git a/Treść zadań/signal_propagation.jpg b/Treść zadań/signal_propagation.jpg new file mode 100644 index 0000000..d99a036 Binary files /dev/null and b/Treść zadań/signal_propagation.jpg differ diff --git a/Treść zadań/style.css b/Treść zadań/style.css new file mode 100644 index 0000000..cf42427 --- /dev/null +++ b/Treść zadań/style.css @@ -0,0 +1,107 @@ +html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } + +body{ +color:#444; +font-family:Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif; +font-size:12px; +line-height:1.5em; +padding:1em; +margin:auto; +max-width:42em; +background:#fefefe; +} + +a{ color: #0645ad; text-decoration:none;} +a:visited{ color: #0b0080; } +a:hover{ color: #06e; } +a:active{ color:#faa700; } +a:focus{ outline: thin dotted; } +a:hover, a:active{ outline: 0; } + +::-moz-selection{background:rgba(255,255,0,0.3);color:#000} +::selection{background:rgba(255,255,0,0.3);color:#000} + +a::-moz-selection{background:rgba(255,255,0,0.3);color:#0645ad} +a::selection{background:rgba(255,255,0,0.3);color:#0645ad} + +p{ +margin:1em 0; +} + +img{ +max-width:100%; +} + +h1,h2,h3,h4,h5,h6{ +font-weight:normal; +color:#111; +line-height:1em; +} +h4,h5,h6{ font-weight: bold; } +h1{ font-size:2.5em; } +h2{ font-size:2em; } +h3{ font-size:1.5em; } +h4{ font-size:1.2em; } +h5{ font-size:1em; } +h6{ font-size:0.9em; } + +blockquote{ +color:#666666; +margin:0; +padding-left: 3em; +border-left: 0.5em #EEE solid; +} +hr { display: block; height: 2px; border: 0; border-top: 1px solid #aaa;border-bottom: 1px solid #eee; margin: 1em 0; padding: 0; } +pre, code, kbd, samp { color: #000; font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 0.98em; } +pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } + +b, strong { font-weight: bold; } + +dfn { font-style: italic; } + +ins { background: #ff9; color: #000; text-decoration: none; } + +mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } + +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } +sup { top: -0.5em; } +sub { bottom: -0.25em; } + +ul, ol { margin: 1em 0; padding: 0 0 0 2em; } +li p:last-child { margin:0 } +dd { margin: 0 0 0 2em; } + +img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } + +table { +border-collapse: collapse; +border-spacing: 0; +width: 100%; +} +th { border-bottom: 1px solid black; } +td { vertical-align: top; } + +@media only screen and (min-width: 480px) { +body{font-size:14px;} +} + +@media only screen and (min-width: 768px) { +body{font-size:16px;} +} + +@media print { + * { background: transparent !important; color: black !important; filter:none !important; -ms-filter: none !important; } + body{font-size:12pt; max-width:100%;} + a, a:visited { text-decoration: underline; } + hr { height: 1px; border:0; border-bottom:1px solid black; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } + pre, blockquote { border: 1px solid #999; padding-right: 1em; page-break-inside: avoid; } + tr, img { page-break-inside: avoid; } + img { max-width: 100% !important; } + @page :left { margin: 15mm 20mm 15mm 10mm; } + @page :right { margin: 15mm 10mm 15mm 20mm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3 { page-break-after: avoid; } +} \ No newline at end of file diff --git a/Treść zadań/sunflower1.jpg b/Treść zadań/sunflower1.jpg new file mode 100644 index 0000000..b2d8115 Binary files /dev/null and b/Treść zadań/sunflower1.jpg differ diff --git a/Treść zadań/sunflower2.jpg b/Treść zadań/sunflower2.jpg new file mode 100644 index 0000000..08fb982 Binary files /dev/null and b/Treść zadań/sunflower2.jpg differ diff --git a/Turtle-animation-20210312091611500.gif b/Turtle-animation-20210312091611500.gif deleted file mode 100644 index 2d01b87..0000000 Binary files a/Turtle-animation-20210312091611500.gif and /dev/null differ diff --git a/Turtle-animation-20210312091653497.gif b/Turtle-animation-20210312091653497.gif deleted file mode 100644 index 2d01b87..0000000 Binary files a/Turtle-animation-20210312091653497.gif and /dev/null differ diff --git a/Turtle-animation-20210313140337212.gif b/Turtle-animation-20210313140337212.gif deleted file mode 100644 index 2d01b87..0000000 Binary files a/Turtle-animation-20210313140337212.gif and /dev/null differ diff --git a/Turtle-animation-20210313143359379.gif b/Turtle-animation-20210313143359379.gif deleted file mode 100644 index 2d01b87..0000000 Binary files a/Turtle-animation-20210313143359379.gif and /dev/null differ diff --git a/Turtle-animation.gif b/Turtle-animation.gif deleted file mode 100644 index 2d01b87..0000000 Binary files a/Turtle-animation.gif and /dev/null differ diff --git a/Unityscreen.png b/Unityscreen.png deleted file mode 100644 index 4667355..0000000 Binary files a/Unityscreen.png and /dev/null differ diff --git a/Von_Koch_curve.gif b/Von_Koch_curve.gif deleted file mode 100644 index 817590c..0000000 Binary files a/Von_Koch_curve.gif and /dev/null differ diff --git a/Wirtualne światy ĆW1.html b/Wirtualne światy ĆW1.html deleted file mode 100644 index 817ccaf..0000000 --- a/Wirtualne światy ĆW1.html +++ /dev/null @@ -1,1419 +0,0 @@ - - - - -Wirtualne światy ĆW1 - - -

Ćwiczenia 14.03

Hello World w Unity

(Pliki https://git.wmi.amu.edu.pl/andkok/Unity_artifitial_world/src/branch/cw1/materiałyHelloWorld )

  1. Utwórz nowy projekt

    • Otwórz Unity Hub

    • Wybierz NEW

    • 3D, wpisz nazwę i wybierz lokalizacje na twoim komputerze. Zatwierdź klikając CREATE

  2. Import materiałów, tworzenie terenu i prostych krztałtów

    Po środku ekranu jest podgląd sceny (karta Scene). Żeby się w nim przemieszczać klikamy Q i wtedy możemy przesuwać obraz myszką (kliknięcie na prawy przycisk myszy do obracania widoku). Klawisz W zmienia w tryb przesuwania obiektów, a klawisz E jest do obracania obiektów i R zmiany rozmiarów.

    W dolnej części ekranu, w karcie Project przechowujemy wszystkie modele, tekstury, skrypty i inne potrzebne elementy

    • W folderze Assets kliknij prawym przyciskiem myszy i z menu wybierz Create -> Folder. Nazwij folder tekstury

    • Otwórz ten folder i przeciągnij do niego wcześniej pobrane tekstury

      Po lewej stronie jest karta Hierarchy. W niej znajdują się wszystkie obiekty, które są w tworzonej scenie. Tam się dodaje nowe elementy sceny i ustawia zależności pomiędzy elementami

      Teren

    • Kliknij prawym przyciskiem myszy w polu Hierarchy i wybierz 3D Object -> Terrain

      Po prawej stronie mamy karte inspector w której są ustawienia zaznaczonego obiektu

    • Dodaj teksturę terenu

      • W Inspektorze przy zakładce Terrain wybierz drugą opcje (ikonka pędzelka)

      • Wybierz z menu Paint Texture

      • Kliknij Edit Terrain Layers -> Create Layer

      • Dodaj trzy tekstury

      • Urozmaić teren zaznaczając tekstury i malując przy pomocy wybranych poniżej pędzli

    • Zmień wysokości terenu

      • W Inspektorze przy zakładce Terrain wybierz drugą opcje (ikonka pędzelka)

      • Wybierz z menu Raise or Lower Terrain

      • Podnosi się teren "malując" po obiekcie terenu, żeby teren obniżyć należy trzymać wciśnięty shift

      Proste kształty

    • W karcie Hierarchy kliknij prawym przyciskiem myszy i wybierz 3D Object -> Sphere

    • żeby nadać kuli koloru utwórz materiał

      • Dodaj teksture SphereNormals do tekstur i Inspektorze wybierz texture type: Normal Map, zaznacz create from grayscale, wrap mode: mirror

      • W folderze Assets utwórz folder Materiały i kliknij prawym przyciskiem myszy i wybierz Create -> Material

      • Wybierz kolor Albedo i dodaj teksture do "Normal Map"

      • Przeciągnij materiał na kulę

    • żeby na kulę działała grawitacja i kolizja dodajemy do niej Rigid Body (Add Component -> Rigidbody), i w Constrains - Freeze rotation zaznacz wszystkie (żeby nam się kula nie stoczyła)

  3. Dodawanie skryptu C#

    W Unity za większość akcji i różnych interakcji odpowiadają skrypty C#

    • Utwórz folder skrypty i w nim Create -> C# Script, nazwij go Player.

    • Otwórz ten skrypt i Przed funkcją Start dodaj zmienne:

    • wewnątrz funkcji Update wklej:

    • Zamień wartości wektora ruchu i funkcji obrotu

    • Przeciągnij skrypt na object Player lub w Inspektorze obiektu Player wybierz Add Component i dodaj Player

  4. Ustawianie oświetlenia (globalne)

    • Ustawienia oświetlenia są w Window -> Rendering -> Ligthning, można je sobie przypiąć w dowolnym miejscu (ja przesuwam je koło inspektora)

    • Dodajemy nowe ustawienia (New Ligthning Settings)

    • Można zmienić Ligthmapper na Progressive GPU

    • Po dostosowaniu ustawień klikamy Generate Lightning (to może chwilę potrwać, nawet do kilku minut)

  5. Tworzenie wielu elementów skryptem z ustawianiem ich za pomocą macierzy (Clock)

    • Utwórz objekt tarczy zegara (tekstura , zamień przy tworzeniu materiału Rendering mode na Transparent)

    • Utwórz obiekt, który posłuży jako szablon wskazówek zegara

    • Dodaj kod ustawiający zegar do obiektu tarczy zegara

    • Zaznacz w inspektorze przy Clock Hand wcześniej przygotowany objekt

    • Dodaj odpowiednie przekształcenia, tak aby duży zegar pokazywał czas i mały zegar pokazywał czas od uruchomienia aplikacji

L-System

W tej części zajęć skupimy się na tworzeniu L-Systemów i wykorzystaniu ich do reprezentacji zjawisk przyrodniczych.

Przypomnienie -L-System to system przepisywania i gramatyka formalna. Składa się z: symboli, które tworzą ciągi znaków; reguł produkcyjnych, które opisują na co należy przepisać dany znak; aksjomatu, czyli początkowego ciągu znaków; i mechanizmu, który tłumaczy ciąg znaków na reprezentacje geometryczną

Bazą dla tych zajęć jest książka Algorithmic Beauty of Plants dostępna za darmo pod linkiem lub w wyższej jakości

Składnia L-Systemów

Projekt zawiera bibliotekę, która interpretuje L-Systemy. Ich definicję pobiera z oddzielnego pliku. Ich składnie opisuję definicja L-Systemu opisującego rozwój bakterii Anabaena znajduje się w projekcie pod ścieżką Assets\LSystem\Anabaena.txt i wygląda następująco:

Plik należy zacząć od linii #axiom, następnie w następnej linii zamieścić ciąg początkowy. Później pomiędzy liniami #rules i #end rules umieścić instrukcje przepisywania według zasady: -<znak przepisywany>-><wynik przepisania> -każdy znak przed strzałką i po strzałce (z wyjątkiem reguł o których później) jest traktowany jako następny symbol. W przypadku kilku reguł, które dotyczą tego samego symbolu wykona się ta, która jest wyżej w pliku. Między reguły można dodawać komentarze, znakiem komentującym jest #. Jeżeli znak nie posiada żadnej reguły, która by go opisywała, to nie jest on zmieniany.

Odpal scenę LSystemFromFile, zaznacz LSystemController w panelu po prawej. Po lewej w polu L System Path wpisz Assets\LSystem\Anabaena.txt kliknij Load File, by załadować LSystem. Następnie Evaluate, by wykonać przepisanie. W scenie wyświetlą się obiekty reprezentujące symbole a w konsoli wyświetli się wynik przepisania.

Składnia wszystkich rozszerzeń jest zaprezentowana w pliku SampleLSystem.txt w tej chwili niektóre reguły mogą byc niezrozumiałe, ale może się on przydać później jako wzorzec.

Turtle Graphics

Turtle Graphics jest metodą tworzenia grafiki komputerowej, wykorzystuje kursor (tytułowego żółwia) wykonujący instrukcje w przestrzeni lokalnej.

https://en.wikipedia.org/wiki/Turtle_graphics

L-Systemy można interpretować za pomocą Turtle Graphics, poprzez przypisanie każdemu symbolowi instrukcji jaką ma wykonać żółw. Następnie żółw będzie wykonywał kolejne instrukcje czytając napis od lewej do prawej.

Na początek zaczniemy od prostej reprezentacji, gdzie + będzie oznaczał w kierunku zgodnym z ruchem wskazówek zegara o wskazany kąt, natomiast - w przeciwnym. Kąt zwyczajowo oznacza się grecką literą $\delta$. Każdy inny symbol będzie oznaczał idź prosto o 1.

Odpal Scenę LSystem2D, załaduj plik Sierpinski.txt, ustaw kąt na 60 stopni i wykonaj kilka kroków.

Zadanie

napisz Lsystem, który będzie rysował gwiazdkę kocha

  1. Krzywa kocha:

Opis:

  1. Podziel linię na 3 równę części
  2. Przy środkowej części narysuj równoboczny trójkąt zwrócony na zewnątrz
  3. Usuń środkową część pierwotnej lini

Musimy z jednej lini zrobić 4 nowe, z czego pierwsza i ostatnia idą w tym samym kierunku, a dwie środkowe idą pod innym kątem (podpowiedź: dając dwa razy + lub - możesz zwiększyć kąt)

  1. W pierwszym kroku L-Systemu utwórz trójkąt

Bracketed L-systems

W podstawowej wersji L-Systemy są pojedyńczym ciągiem znaków, by uzyskać możliwość tworzenia rozgałęzień wprowadzamy dwa specjalne znaki [ oraz ] pierwszy mówi, żeby zapamiętać obecny stan, drugi oznacza by wrócić do stanu zapamiętanym przy ostatnim znaku [. Przykładowo ciąg symboli F[+FFF][-F]FF dla $\delta=90$ będzie reprezentowany następująco -obraz

Zadanie

Stwórz systemy a i e:

Screenshot 2021-03-13 at 14.29.06 Screenshot 2021-03-13 at 14.29.10

Pisanie własnej interpretacji LSystemów

Wróćmy do sceny LSystemFromFile W tej scenie zamiast kresek pojawiają się figury reprezentujące komórki (czerwona lewa, zielona prawa, niska młoda, wysoka dorosła). Otwórz skrypt AnabeanaTurtle.cs, który odpowiada za rysowanie. Zawiera on klasę AnabeanaTurtle dziedziczącą po TurtleLSystem. TurtleLSystem jest klasą abstrakcyjną, wymaga zdefiniowania funkcji initLiteralInterpretation, w której należy opisać jak interpretować symbole.

Żeby tego dokonać należy uzupełnić słownik turtleInterpretation, którego kluczami są opisywane symbole jako stringi. Natomiast wartościami są funkcje, które przyjmują jako argument tablicę parametrów danego symbolu (o tym później) a zwracają Krotkę, której pierwszym elementem jest rysowany obiekt, natomiast drugim transformacja, jaką wykona żółw. Powyższym przykładzie obiekty są czytane z modeli a transformacja zawsze jest taka sama, czyli translacja o wektor (0.1,0,0) i skalowanie o wektor (0.1,0.1,0.1). (Skalowania nie są pamiętane przez żółwia)

Te funkcje są wykorzystywane przez żółwia do interpretacji ciągu symboli. Przykładowo LRr zostanie zinterpretowany następująco:

Zadanie

Jak wyszukasz w internecie obrazki Anabaeny, zobaczysz, że są one często powykręcane, dodaj do macierz przekształceń obroty w osi Y o losowy kąt pomiędzy -20 a 20 stopni.

Parametryczne L-Systemy

Parametryczne L-Systemy operują na symbolach parametrycznych znakach, czyli takich, które posiadają 0 lub więcej parametrów rzeczywistych. Pozwala to przechowywać różne wewnętrzne stany obiektów. Przykładowo dla modelu Anabeany powyżej rozróżniamy tylko 2 stany, młody i dorosły. Dzięki parametrycznym L-Systemom możemy opisać wiek w sposób bardziej ciągły. Przykładowo poniższy L-System komórki która rośnie i jak osiągnie odpowiedni wiek rozdziela się na dwie młode komórki

Parametry zapisuje się wewnątrz nawiasów po przecinku. W aksjomacie muszą one mieć wartości liczbowe. Po lewej stronie trzeba nadać parametrom nazwy (mogą mieć one więcej niż jeden znak). Symbole są identyfikowane po nazwie i liczbie znaków. Po dwukropku można podać warunki logiczne jakie musi spełnić symbol. można w tym umieszczać operacje matematyczne, dozwolone jest mnożenie, dzielenie, dodawanie i odejmowanie. podobnie w parametrach po prawej stronie

Zadanie

Napisz dla parametrycznej wersji Anabeny taką interpretację, żeby komórki rosły wraz z wiekiem.

Stochastyczne L-Systemy

Niektóre procesy biologiczne są zbyt skomplikowane albo niedostatecznie zbadane, żeby można je było je zasymulować lub zwyczajnie nie mamy potrzeby symulować mechanizmów tak dokładnie. Zamiast tego możemy skorzystać z losowości, która przybliży zachowanie natury.

Przykładowo możemy losowo decydować czy w roślinie wyrośnie boczna gałąź czy nie. Co realizuje poniższy L-System (znajduje się on także w pliku stochastic.txt)

W powyższym przypadku mamy symbol B, który symbolizuje merystem (część rośliny zdolną do rozwoju); F oznacza rozwiniętą gałąź. B może rozwinąć łodygę, wytworzyć gałąź po prawej, wytworzyć gałąź po lewej lub zaprzestać rozwój.

Odpal scenę LSystem2D załaduj stochastic.txt i odpal kilka razy od początku (żeby zresetować, kliknij Load File).

Reguły stochastyczne należy zacząć od słowa #stochastic. Następnie po linijce wypisać wyniki, poprzedzając je frazą p=W, gdzie W to waga danego wyniku. Wagi mogą być dowolną dodatnią liczbą rzeczywistą. Interpreter na podstawie wag przydzieli prawdopodobieństwo kolejnym wynikom. Przykładowo w powyższym L-Systemie reguły zostaną wykonane następująco:

Screenshot 2021-03-14 at 07.32.36Screenshot 2021-03-14 at 07.32.56 Screenshot 2021-03-14 at 07.33.17

zadanie

Obecnie zdarza się tak, że L-System wchodzi w ostatnią regułę na samym początku i nic nie wyrasta. Innym razem wyrasta bardzo dużo odgałęzień i całość wymyka się spod kontroli a na pewno przestaje przypominać roślinę. Pomyśl jak można zaradzić tym dwóm problemom, zmodyfikuj L-System tak, by ich uniknąć. Możesz dodać nowe symbole lub/i wykorzystać symbole parametryczne.

Zadanie domowe

Scena LSystem3D jest kopią sceny LSystem2D, korzysta ona ze skryptu Turtle3D zamiast Turtle2D (chociaż są one na razie identyczne). Dodaj do Turtle3D obsługę obrotów w trzech wymiarach za pomocą znaków:

Poza tym dla symboli L i F dodaj interpretacje kolejno jako liść i kwiat. W folderze Models są gotowe modele, ale możesz ściągnąć własne.

Wykorzystaj dotychczasową wiedzę i powyższą interpretację, by stworzyć L-System generujący roślinę polną jak poniższy chaber.

rysunek chabra z wikipedii

- - \ No newline at end of file diff --git a/Wirtualne światy ĆW1.md b/Wirtualne światy ĆW1.md deleted file mode 100644 index 7d4c5c6..0000000 --- a/Wirtualne światy ĆW1.md +++ /dev/null @@ -1,342 +0,0 @@ -# Ćwiczenia 14.03 - -## Hello World w Unity - -(Pliki [https://git.wmi.amu.edu.pl/andkok/Unity_artifitial_world/src/branch/cw1/materiałyHelloWorld](https://git.wmi.amu.edu.pl/andkok/Unity_artifitial_world/src/branch/cw1/materiałyHelloWorld) ) - -1. ### Utwórz nowy projekt - - - [ ] Otwórz Unity Hub - - [ ] Wybierz NEW - - [ ] 3D, wpisz nazwę i wybierz lokalizacje na twoim komputerze. Zatwierdź klikając CREATE - -2. ### Import materiałów, tworzenie terenu i prostych krztałtów - - - - Po środku ekranu jest podgląd sceny (karta Scene). Żeby się w nim przemieszczać klikamy Q i wtedy możemy przesuwać obraz myszką (kliknięcie na prawy przycisk myszy do obracania widoku). Klawisz W zmienia w tryb przesuwania obiektów, a klawisz E jest do obracania obiektów i R zmiany rozmiarów. - - W dolnej części ekranu, w karcie Project przechowujemy wszystkie modele, tekstury, skrypty i inne potrzebne elementy - - - [ ] W folderze Assets kliknij prawym przyciskiem myszy i z menu wybierz Create -> Folder. Nazwij folder tekstury - - - [ ] Otwórz ten folder i przeciągnij do niego wcześniej pobrane tekstury - - Po lewej stronie jest karta Hierarchy. W niej znajdują się wszystkie obiekty, które są w tworzonej scenie. Tam się dodaje nowe elementy sceny i ustawia zależności pomiędzy elementami - - #### Teren - - - [ ] Kliknij prawym przyciskiem myszy w polu Hierarchy i wybierz 3D Object -> Terrain - - Po prawej stronie mamy karte inspector w której są ustawienia zaznaczonego obiektu - - - - - [ ] Dodaj teksturę terenu - - - [ ] W Inspektorze przy zakładce Terrain wybierz drugą opcje (ikonka pędzelka) - - [ ] Wybierz z menu Paint Texture - - [ ] Kliknij Edit Terrain Layers -> Create Layer - - [ ] Dodaj trzy tekstury - - [ ] Urozmaić teren zaznaczając tekstury i malując przy pomocy wybranych poniżej pędzli - - - [ ] Zmień wysokości terenu - - - [ ] W Inspektorze przy zakładce Terrain wybierz drugą opcje (ikonka pędzelka) - - [ ] Wybierz z menu Raise or Lower Terrain - - [ ] Podnosi się teren "malując" po obiekcie terenu, żeby teren obniżyć należy trzymać wciśnięty shift - - #### Proste kształty - - - [ ] W karcie Hierarchy kliknij prawym przyciskiem myszy i wybierz 3D Object -> Sphere - - - [ ] żeby nadać kuli koloru utwórz materiał - - - [ ] - - [ ] Dodaj teksture SphereNormals do tekstur i Inspektorze wybierz texture type: Normal Map, zaznacz create from grayscale, wrap mode: mirror - - [ ] W folderze Assets utwórz folder Materiały i kliknij prawym przyciskiem myszy i wybierz Create -> Material - - [ ] - - [ ] Wybierz kolor Albedo i dodaj teksture do "Normal Map" - - [ ] Przeciągnij materiał na kulę - - - [ ] żeby na kulę działała grawitacja i kolizja dodajemy do niej Rigid Body (Add Component -> Rigidbody), i w Constrains - Freeze rotation zaznacz wszystkie (żeby nam się kula nie stoczyła) - - - [ ] - -3. ### Dodawanie skryptu C# - - W Unity za większość akcji i różnych interakcji odpowiadają skrypty C# - - - [ ] Utwórz folder skrypty i w nim Create -> C# Script, nazwij go Player. - - - [ ] Otwórz ten skrypt i Przed funkcją Start dodaj zmienne: - - ```c# - public float speed = 0.1f; - public float rotationSpeed = 0.1f; - ``` - - - [ ] wewnątrz funkcji Update wklej: - - ```c# - float move = Input.GetAxis("Vertical") * speed; // Pobierz dane od użytkownika (klawisze strzałek lub joystick) i przeskaluj wcześniej podaną wartością (przód tył) - float rotate = Input.GetAxis("Horizontal") * rotationSpeed; // Pobierz dane od użytkownika (klawisze strzałek lub joystick) i przeskaluj wcześniej podaną wartością (obrót) - Vector3 moveVector = new Vector3(PODAJ_X,PODAJ_Y,PODAJ_Z); // Wektor przesuwający objekt DO EDYCJI - gameObject.GetComponent().Translate(moveVector, Space.Self); // Funkcja przesuwająca objekt - gameObject.GetComponent().Rotate(PODAJ_X,PODAJ_Y,PODAJ_Z, Space.Self); // Funkcja obracająca objekt DO EDYCJI - ``` - - - [ ] Zamień wartości wektora ruchu i funkcji obrotu - - - [ ] Przeciągnij skrypt na object Player lub w Inspektorze obiektu Player wybierz Add Component i dodaj Player - -4. ### Ustawianie oświetlenia (globalne) - - - [ ] Ustawienia oświetlenia są w Window -> Rendering -> Ligthning, można je sobie przypiąć w dowolnym miejscu (ja przesuwam je koło inspektora) - - [ ] - - [ ] Dodajemy nowe ustawienia (New Ligthning Settings) - - [ ] Można zmienić Ligthmapper na Progressive GPU - - [ ] Po dostosowaniu ustawień klikamy Generate Lightning (to może chwilę potrwać, nawet do kilku minut) - -5. ### Tworzenie wielu elementów skryptem z ustawianiem ich za pomocą macierzy (Clock) - - - - - [ ] Utwórz objekt tarczy zegara (tekstura , zamień przy tworzeniu materiału Rendering mode na Transparent) - - - [ ] Utwórz obiekt, który posłuży jako szablon wskazówek zegara - - - [ ] Dodaj kod ustawiający zegar do obiektu tarczy zegara - - ```c# - using System.Collections; - using System.Collections.Generic; - using System; - using UnityEngine; - public class Clock : MonoBehaviour - { - public GameObject clockHand; // szablon wyglądu wskazówki zegara - void Start() - { - } - void Update() - { - - DateTime centuryBegin = new DateTime(2001, 1, 1); - DateTime currentDate = DateTime.Now; - long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks; - TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); - - float stopWatchTime = Time.unscaledTime; // Czas w sekundach od startu aplikacji (mały zegar) - float nowTime = (float)(((int)(elapsedSpan.TotalSeconds)) % 86400); // Czas w sekundach od początku doby (0:00) (duży zegar) - // Stop Watch Time: - - float swHour = 0.0f; - float swMinute = 0.0f; - float swSecond = 0.0f; - // Global Time: - float hour = 0.0f; - float minute = 0.0f; - float second = 0.0f; - // Ustaw pozycje, rozmiar i obrót wskazówek zegara z wykorzystaniem przekształceń macierzowych: - // (Matrix4x4.Translate, Matrix4x4.Scale, Matrix4x4.Rotate) dwa pierwsze przyjmują Vector3, a obroty przyjmują Quaternion.Euler( X, Y, Z) (już bez new, bo to funkcja) - - var transformationHsw = Matrix4x4.Translate(new Vector3(0, 0, 0)); - var transformationMsw = Matrix4x4.Translate(new Vector3(0, 0, 0)); - var transformationSsw = Matrix4x4.Translate(new Vector3(0, 0, 0)); - - var transformationH = Matrix4x4.Translate(new Vector3(0, 0, 0)); - var transformationM = Matrix4x4.Translate(new Vector3(0, 0, 0)); - var transformationS = Matrix4x4.Translate(new Vector3(0, 0, 0)); - - // Create game objects instances - - Graphics.DrawMeshInstanced(clockHand.GetComponent().mesh, 0, clockHand.GetComponent().material, new Matrix4x4[6]{transformationHsw, transformationMsw, transformationSsw, transformationH, transformationM, transformationS}); - - } - - } - ``` - - - [ ] Zaznacz w inspektorze przy Clock Hand wcześniej przygotowany objekt - - - [ ] Dodaj odpowiednie przekształcenia, tak aby duży zegar pokazywał czas i mały zegar pokazywał czas od uruchomienia aplikacji - -# L-System - -W tej części zajęć skupimy się na tworzeniu L-Systemów i wykorzystaniu ich do reprezentacji zjawisk przyrodniczych. - -> **Przypomnienie** -> **L-System** to system przepisywania i gramatyka formalna. Składa się z: symboli, które tworzą ciągi znaków; reguł produkcyjnych, które opisują na co należy przepisać dany znak; aksjomatu, czyli początkowego ciągu znaków; i mechanizmu, który tłumaczy ciąg znaków na reprezentacje geometryczną - -Bazą dla tych zajęć jest książka Algorithmic Beauty of Plants dostępna za darmo pod [linkiem](http://algorithmicbotany.org/papers/abop/abop.lowquality.pdf) lub [w wyższej jakości](http://algorithmicbotany.org/papers/abop/abop.pdf) - -## Składnia L-Systemów - -Projekt zawiera bibliotekę, która interpretuje L-Systemy. Ich definicję pobiera z oddzielnego pliku. Ich składnie opisuję definicja L-Systemu opisującego rozwój bakterii Anabaena znajduje się w projekcie pod ścieżką `Assets\LSystem\Anabaena.txt` i wygląda następująco: - -``` -#axiom -L -#rules -L->lR -R->Lr -l->L -r->R -#end rules -``` - -Plik należy zacząć od linii `#axiom`, następnie w następnej linii zamieścić ciąg początkowy. Później pomiędzy liniami `#rules` i `#end rules` umieścić instrukcje przepisywania według zasady: -```-> ``` -każdy znak przed strzałką i po strzałce (z wyjątkiem reguł o których później) jest traktowany jako następny symbol. W przypadku kilku reguł, które dotyczą tego samego symbolu wykona się ta, która jest wyżej w pliku. Między reguły można dodawać komentarze, znakiem komentującym jest `#`. Jeżeli znak nie posiada żadnej reguły, która by go opisywała, to nie jest on zmieniany. - -Odpal scenę **LSystemFromFile**, zaznacz **LSystemController** w panelu po prawej. Po lewej w polu **L System Path** wpisz `Assets\LSystem\Anabaena.txt` kliknij **Load File**, by załadować LSystem. Następnie Evaluate, by wykonać przepisanie. W scenie wyświetlą się obiekty reprezentujące symbole a w konsoli wyświetli się wynik przepisania. - -Składnia wszystkich rozszerzeń jest zaprezentowana w pliku `SampleLSystem.txt` w tej chwili niektóre reguły mogą byc niezrozumiałe, ale może się on przydać później jako wzorzec. - -## Turtle Graphics - -Turtle Graphics jest metodą tworzenia grafiki komputerowej, wykorzystuje kursor (tytułowego żółwia) wykonujący instrukcje w przestrzeni lokalnej. - -![https://en.wikipedia.org/wiki/Turtle_graphics](Turtle-animation-20210313143359379.gif) - -L-Systemy można interpretować za pomocą Turtle Graphics, poprzez przypisanie każdemu symbolowi instrukcji jaką ma wykonać żółw. Następnie żółw będzie wykonywał kolejne instrukcje czytając napis od lewej do prawej. - -Na początek zaczniemy od prostej reprezentacji, gdzie `+` będzie oznaczał w kierunku zgodnym z ruchem wskazówek zegara o wskazany kąt, natomiast `-` w przeciwnym. Kąt zwyczajowo oznacza się grecką literą $\delta$. Każdy inny symbol będzie oznaczał idź prosto o 1. - -Odpal Scenę LSystem2D, załaduj plik `Sierpinski.txt`, ustaw kąt na 60 stopni i wykonaj kilka kroków. - -### Zadanie - -napisz Lsystem, który będzie rysował gwiazdkę kocha - -1. #### Krzywa kocha: - - - - - -Opis: - -1. Podziel linię na 3 równę części -2. Przy środkowej części narysuj równoboczny trójkąt zwrócony na zewnątrz -3. Usuń środkową część pierwotnej lini - -Musimy z jednej lini zrobić 4 nowe, z czego pierwsza i ostatnia idą w tym samym kierunku, a dwie środkowe idą pod innym kątem (podpowiedź: dając dwa razy + lub - możesz zwiększyć kąt) - -2. #### W pierwszym kroku L-Systemu utwórz trójkąt - - ![](Von_Koch_curve.gif) - -## Bracketed L-systems - -W podstawowej wersji L-Systemy są pojedyńczym ciągiem znaków, by uzyskać możliwość tworzenia rozgałęzień wprowadzamy dwa specjalne znaki `[` oraz `]` pierwszy mówi, żeby zapamiętać obecny stan, drugi oznacza by wrócić do stanu zapamiętanym przy ostatnim znaku `[`. Przykładowo ciąg symboli `F[+FFF][-F]FF` dla $\delta=90$ będzie reprezentowany następująco -![obraz](im_bracketed-5642437.jpg) - -### Zadanie - -Stwórz systemy a i e: - -Screenshot 2021-03-13 at 14.29.06 ![Screenshot 2021-03-13 at 14.29.10](Screenshot 2021-03-13 at 14.29.10.png) - -## Pisanie własnej interpretacji LSystemów - -Wróćmy do sceny LSystemFromFile W tej scenie zamiast kresek pojawiają się figury reprezentujące komórki (czerwona lewa, zielona prawa, niska młoda, wysoka dorosła). Otwórz skrypt AnabeanaTurtle.cs, który odpowiada za rysowanie. Zawiera on klasę `AnabeanaTurtle` dziedziczącą po `TurtleLSystem`. `TurtleLSystem` jest klasą abstrakcyjną, wymaga zdefiniowania funkcji `initLiteralInterpretation`, w której należy opisać jak interpretować symbole. - -```CS - protected override void initLiteralInterpretation() { - turtleInterpretation = new Dictionary>>(); - //turtleInterpretation - var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3 (0.05f, 0.1f, 0.05f)); - - turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); - turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); - - //Wildcard how to represent any other symbol - turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); - } - -``` - -Żeby tego dokonać należy uzupełnić słownik `turtleInterpretation`, którego kluczami są opisywane symbole jako stringi. Natomiast wartościami są funkcje, które przyjmują jako argument tablicę parametrów danego symbolu (o tym później) a zwracają Krotkę, której pierwszym elementem jest rysowany obiekt, natomiast drugim transformacja, jaką wykona żółw. Powyższym przykładzie obiekty są czytane z modeli a transformacja zawsze jest taka sama, czyli translacja o wektor (0.1,0,0) i skalowanie o wektor (0.1,0.1,0.1). (Skalowania nie są pamiętane przez żółwia) - -Te funkcje są wykorzystywane przez żółwia do interpretacji ciągu symboli. Przykładowo `LRr` zostanie zinterpretowany następująco: - -* żółw przesuwa się o 0.1 w osi X umieszcza bigL w punkcie (0.1,0,0) -* żółw przesuwa się o 0.1 w osi X umieszcza bigR w punkcie (0.2,0,0) (ponieważ (0.1,0,0)+(0.1,0,0)=(0.2,0,0) ) -* żółw przesuwa się o 0.1 w osi X umieszcza bigL w punkcie (0.3,0,0) - -### Zadanie - -Jak wyszukasz w internecie obrazki Anabaeny, zobaczysz, że są one często powykręcane, dodaj do macierz przekształceń obroty w osi Y o losowy kąt pomiędzy -20 a 20 stopni. - -## Parametryczne L-Systemy - -Parametryczne L-Systemy operują na symbolach parametrycznych znakach, czyli takich, które posiadają 0 lub więcej parametrów rzeczywistych. Pozwala to przechowywać różne wewnętrzne stany obiektów. Przykładowo dla modelu Anabeany powyżej rozróżniamy tylko 2 stany, młody i dorosły. Dzięki parametrycznym L-Systemom możemy opisać wiek w sposób bardziej ciągły. Przykładowo poniższy L-System komórki która rośnie i jak osiągnie odpowiedni wiek rozdziela się na dwie młode komórki - -``` -#axiom -B(1) -#rules -B(a) : a<2 -> B(a+0.1) -B(a) : a>=2 -> B(1)B(1) -#end rules -``` - -Parametry zapisuje się wewnątrz nawiasów po przecinku. W aksjomacie muszą one mieć wartości liczbowe. Po lewej stronie trzeba nadać parametrom nazwy (mogą mieć one więcej niż jeden znak). Symbole są identyfikowane po nazwie i liczbie znaków. Po dwukropku można podać warunki logiczne jakie musi spełnić symbol. można w tym umieszczać operacje matematyczne, dozwolone jest mnożenie, dzielenie, dodawanie i odejmowanie. podobnie w parametrach po prawej stronie - -### Zadanie - -Napisz dla parametrycznej wersji Anabeny taką interpretację, żeby komórki rosły wraz z wiekiem. - -## Stochastyczne L-Systemy - -Niektóre procesy biologiczne są zbyt skomplikowane albo niedostatecznie zbadane, żeby można je było je zasymulować lub zwyczajnie nie mamy potrzeby symulować mechanizmów tak dokładnie. Zamiast tego możemy skorzystać z losowości, która przybliży zachowanie natury. - -Przykładowo możemy losowo decydować czy w roślinie wyrośnie boczna gałąź czy nie. Co realizuje poniższy L-System (znajduje się on także w pliku `stochastic.txt`) - -``` -#axiom -B -#rules -B -> #stochastic -p=3 FB -p=1 [+FB]FB -p=1 [-FB]FB -p=1 F -#stochastic end -#rules end - -``` - -W powyższym przypadku mamy symbol B, który symbolizuje merystem (część rośliny zdolną do rozwoju); F oznacza rozwiniętą gałąź. B może rozwinąć łodygę, wytworzyć gałąź po prawej, wytworzyć gałąź po lewej lub zaprzestać rozwój. - -Odpal scenę `LSystem2D` załaduj `stochastic.txt` i odpal kilka razy od początku (żeby zresetować, kliknij *Load File*). - -Reguły stochastyczne należy zacząć od słowa `#stochastic`. Następnie po linijce wypisać wyniki, poprzedzając je frazą `p=W`, gdzie `W` to waga danego wyniku. Wagi mogą być dowolną dodatnią liczbą rzeczywistą. Interpreter na podstawie wag przydzieli prawdopodobieństwo kolejnym wynikom. Przykładowo w powyższym L-Systemie reguły zostaną wykonane następująco: - - * FB z prawdopodobieństwem $\frac{3}{6}$ - * [+FB]FB z prawdopodobieństwem $\frac{1}{6}$ - * [+FB]FB z prawdopodobieństwem $\frac{1}{6}$ - * F z prawdopodobieństwem $\frac{1}{6}$ - -Screenshot 2021-03-14 at 07.32.36Screenshot 2021-03-14 at 07.32.56 Screenshot 2021-03-14 at 07.33.17 - -### zadanie - -Obecnie zdarza się tak, że L-System wchodzi w ostatnią regułę na samym początku i nic nie wyrasta. Innym razem wyrasta bardzo dużo odgałęzień i całość wymyka się spod kontroli a na pewno przestaje przypominać roślinę. Pomyśl jak można zaradzić tym dwóm problemom, zmodyfikuj L-System tak, by ich uniknąć. Możesz dodać nowe symbole lub/i wykorzystać symbole parametryczne. - -## Zadanie domowe - -Scena `LSystem3D` jest kopią sceny `LSystem2D`, korzysta ona ze skryptu `Turtle3D` zamiast `Turtle2D` (chociaż są one na razie identyczne). Dodaj do `Turtle3D` obsługę obrotów w trzech wymiarach za pomocą znaków: - -* `&` obrót do góry (pitch), czyli obrót względem osi X o kąt $\delta$ -* `^` obrót do góry (pitch), czyli obrót względem osi X o kąt $-\delta$ -* `\` obrót do obrót w prawo (roll), czyli obrót względem osi Y o kąt $-\delta$ -* `/` obrót do obrót w lewo (roll), czyli obrót względem osi Y o kąt $\delta$ - -Poza tym dla symboli `L` i `F` dodaj interpretacje kolejno jako liść i kwiat. W folderze Models są gotowe modele, ale możesz ściągnąć własne. - -Wykorzystaj dotychczasową wiedzę i powyższą interpretację, by stworzyć L-System generujący roślinę polną jak poniższy chaber. - -![rysunek chabra z wikipedii](7_Centaurea_cyanus.jpg) \ No newline at end of file diff --git a/Wirtualne światy ĆW1.pdf b/Wirtualne światy ĆW1.pdf deleted file mode 100644 index 82f8c4c..0000000 Binary files a/Wirtualne światy ĆW1.pdf and /dev/null differ diff --git a/clock.png b/clock.png deleted file mode 100644 index a992411..0000000 Binary files a/clock.png and /dev/null differ diff --git a/im_bracketed-5642437.jpg b/im_bracketed-5642437.jpg deleted file mode 100644 index 5e055e3..0000000 Binary files a/im_bracketed-5642437.jpg and /dev/null differ diff --git a/im_bracketed.jpg b/im_bracketed.jpg deleted file mode 100644 index 5e055e3..0000000 Binary files a/im_bracketed.jpg and /dev/null differ diff --git a/materiałyHelloWorld/.DS_Store b/materiałyHelloWorld/.DS_Store deleted file mode 100644 index 0d0f8fd..0000000 Binary files a/materiałyHelloWorld/.DS_Store and /dev/null differ diff --git a/materiałyHelloWorld/Grass-025.jpg b/materiałyHelloWorld/Grass-025.jpg deleted file mode 100644 index 537a065..0000000 Binary files a/materiałyHelloWorld/Grass-025.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_AmbientOcclusion.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_AmbientOcclusion.jpg deleted file mode 100644 index ad0097a..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_AmbientOcclusion.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Color.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Color.jpg deleted file mode 100644 index 618b089..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Color.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Displacement.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Displacement.jpg deleted file mode 100644 index 57f6fa7..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Displacement.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_IdMask.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_IdMask.jpg deleted file mode 100644 index e5ba8a1..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_IdMask.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Normal.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Normal.jpg deleted file mode 100644 index c830857..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Normal.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Roughness.jpg b/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Roughness.jpg deleted file mode 100644 index dcbaf57..0000000 Binary files a/materiałyHelloWorld/Gravel020_1K-JPG/Gravel020_1K_Roughness.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_AmbientOcclusion.jpg b/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_AmbientOcclusion.jpg deleted file mode 100644 index b5bdadb..0000000 Binary files a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_AmbientOcclusion.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Color.jpg b/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Color.jpg deleted file mode 100644 index a6ef317..0000000 Binary files a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Color.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Displacement.jpg b/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Displacement.jpg deleted file mode 100644 index 4f5c8bf..0000000 Binary files a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Displacement.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Normal.jpg b/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Normal.jpg deleted file mode 100644 index 9f3c872..0000000 Binary files a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Normal.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Roughness.jpg b/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Roughness.jpg deleted file mode 100644 index b04b4f6..0000000 Binary files a/materiałyHelloWorld/Ground019_1K-JPG/Ground019_1K_Roughness.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_AmbientOcclusion.jpg b/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_AmbientOcclusion.jpg deleted file mode 100644 index 9f36e2e..0000000 Binary files a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_AmbientOcclusion.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Color.jpg b/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Color.jpg deleted file mode 100644 index b388450..0000000 Binary files a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Color.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Displacement.jpg b/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Displacement.jpg deleted file mode 100644 index 312346a..0000000 Binary files a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Displacement.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Normal.jpg b/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Normal.jpg deleted file mode 100644 index 7f694af..0000000 Binary files a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Normal.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Roughness.jpg b/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Roughness.jpg deleted file mode 100644 index 8f81c4b..0000000 Binary files a/materiałyHelloWorld/Ground037_1K-JPG/Ground037_1K_Roughness.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_AmbientOcclusion.jpg b/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_AmbientOcclusion.jpg deleted file mode 100644 index ea9b0d3..0000000 Binary files a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_AmbientOcclusion.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Color.jpg b/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Color.jpg deleted file mode 100644 index b2b2a4b..0000000 Binary files a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Color.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Displacement.jpg b/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Displacement.jpg deleted file mode 100644 index fe75d59..0000000 Binary files a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Displacement.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Normal.jpg b/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Normal.jpg deleted file mode 100644 index 52e616f..0000000 Binary files a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Normal.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Roughness.jpg b/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Roughness.jpg deleted file mode 100644 index afdcd7c..0000000 Binary files a/materiałyHelloWorld/Ground042_1K-JPG/Ground042_1K_Roughness.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_AmbientOcclusion.jpg b/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_AmbientOcclusion.jpg deleted file mode 100644 index 6e5a533..0000000 Binary files a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_AmbientOcclusion.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Color.jpg b/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Color.jpg deleted file mode 100644 index b98da29..0000000 Binary files a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Color.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Displacement.jpg b/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Displacement.jpg deleted file mode 100644 index 1269fd1..0000000 Binary files a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Displacement.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Normal.jpg b/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Normal.jpg deleted file mode 100644 index c3ac026..0000000 Binary files a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Normal.jpg and /dev/null differ diff --git a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Roughness.jpg b/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Roughness.jpg deleted file mode 100644 index 7b96e41..0000000 Binary files a/materiałyHelloWorld/Moss002_1K-JPG/Moss002_1K_Roughness.jpg and /dev/null differ diff --git a/materiałyHelloWorld/clock.png b/materiałyHelloWorld/clock.png deleted file mode 100644 index a992411..0000000 Binary files a/materiałyHelloWorld/clock.png and /dev/null differ diff --git a/ph00001.png b/ph00001.png deleted file mode 100644 index f94261e..0000000 Binary files a/ph00001.png and /dev/null differ diff --git a/ph00002.png b/ph00002.png deleted file mode 100644 index 93fda98..0000000 Binary files a/ph00002.png and /dev/null differ diff --git a/ph00003.png b/ph00003.png deleted file mode 100644 index 7fc9f12..0000000 Binary files a/ph00003.png and /dev/null differ diff --git a/ph00004.png b/ph00004.png deleted file mode 100644 index 18ccddc..0000000 Binary files a/ph00004.png and /dev/null differ diff --git a/ph00005.png b/ph00005.png deleted file mode 100644 index a72a535..0000000 Binary files a/ph00005.png and /dev/null differ diff --git a/ph00006.png b/ph00006.png deleted file mode 100644 index 6e65633..0000000 Binary files a/ph00006.png and /dev/null differ diff --git a/ph00007.png b/ph00007.png deleted file mode 100644 index 4ac9908..0000000 Binary files a/ph00007.png and /dev/null differ diff --git a/ph00008.png b/ph00008.png deleted file mode 100644 index 2275e7e..0000000 Binary files a/ph00008.png and /dev/null differ diff --git a/ph00009.png b/ph00009.png deleted file mode 100644 index b784481..0000000 Binary files a/ph00009.png and /dev/null differ diff --git a/unity_artifitial_world-st/.gitignore b/unity_artifitial_world-st/.gitignore index 63f7e81..72c27e4 100644 --- a/unity_artifitial_world-st/.gitignore +++ b/unity_artifitial_world-st/.gitignore @@ -1,4 +1,3 @@ -# ---> Unity # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore @@ -9,6 +8,10 @@ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data /[Mm]emoryCaptures/ # Asset meta data should only be ignored when the corresponding asset is also ignored @@ -54,9 +57,15 @@ sysinfo.txt # Builds *.apk +*.aab *.unitypackage # Crashlytics generated file crashlytics-build.properties +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* diff --git a/unity_artifitial_world-st/.vsconfig b/unity_artifitial_world-st/.vsconfig new file mode 100644 index 0000000..aade28f --- /dev/null +++ b/unity_artifitial_world-st/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/unity_artifitial_world-st/Assets/LSystem/Context1.txt b/unity_artifitial_world-st/Assets/LSystem/Context1.txt new file mode 100644 index 0000000..3bfe3f9 --- /dev/null +++ b/unity_artifitial_world-st/Assets/LSystem/Context1.txt @@ -0,0 +1,6 @@ +#axiom +BAAAAAAAA +#rules +B B +B -> A +#end rules \ No newline at end of file diff --git a/unity_artifitial_world-st/Assets/New Material.mat.meta b/unity_artifitial_world-st/Assets/LSystem/Context1.txt.meta similarity index 52% rename from unity_artifitial_world-st/Assets/New Material.mat.meta rename to unity_artifitial_world-st/Assets/LSystem/Context1.txt.meta index d3c32d3..c291c17 100644 --- a/unity_artifitial_world-st/Assets/New Material.mat.meta +++ b/unity_artifitial_world-st/Assets/LSystem/Context1.txt.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 15df3041f931a4b3189530813766d6c2 -NativeFormatImporter: +guid: be5ad6dd490499346864520994d87d16 +TextScriptImporter: externalObjects: {} - mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/LSystem/Context2.txt b/unity_artifitial_world-st/Assets/LSystem/Context2.txt new file mode 100644 index 0000000..c265dec --- /dev/null +++ b/unity_artifitial_world-st/Assets/LSystem/Context2.txt @@ -0,0 +1,10 @@ +#ignore + - +#axiom +C(5,5)AA++AA-AAAAD(0) +#rules +C(a,b) > A : b<5 -> C(a,b+1) +C(a,b) > A : b>=5 ; a>0 -> C(a-1,0) +C(a,b) < A : b>=5 ; a>0 -> B +B D(a+1) +B B +B -> A \ No newline at end of file diff --git a/unity_artifitial_world-st/Assets/LSystem/Context2.txt.meta b/unity_artifitial_world-st/Assets/LSystem/Context2.txt.meta new file mode 100644 index 0000000..aab9c1c --- /dev/null +++ b/unity_artifitial_world-st/Assets/LSystem/Context2.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b68957a73e29454ba7ca0abdea2acde +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt b/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt new file mode 100644 index 0000000..172a42a --- /dev/null +++ b/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt @@ -0,0 +1,5 @@ +#axiom +XA +#rules +A -> [&(90)f(0.5)S]f(0.0353)/(137.5)A +#end rules \ No newline at end of file diff --git a/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt.meta b/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt.meta new file mode 100644 index 0000000..50b027f --- /dev/null +++ b/unity_artifitial_world-st/Assets/LSystem/VanIterson.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fd09fbaf9088cfb4aaf82cf05584624b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/Sphere.prefab b/unity_artifitial_world-st/Assets/Models/Sphere.prefab new file mode 100644 index 0000000..16283ee --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/Sphere.prefab @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1137365859699674365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 470298788318060321} + - component: {fileID: 6709748349633369705} + - component: {fileID: 3471709009777093184} + - component: {fileID: 6945590706105838025} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &470298788318060321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6709748349633369705 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3471709009777093184 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -876546973899608171, guid: ca516c08d816f5f4d8454c64e6d9eeab, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &6945590706105838025 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1137365859699674365} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} diff --git a/unity_artifitial_world-st/Assets/Models/Sphere.prefab.meta b/unity_artifitial_world-st/Assets/Models/Sphere.prefab.meta new file mode 100644 index 0000000..f848dd4 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/Sphere.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5d2f08ecbb69120459626c90d120bbb7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/leaf.fbx b/unity_artifitial_world-st/Assets/Models/leaf.fbx index 7ef55b8..128022f 100644 Binary files a/unity_artifitial_world-st/Assets/Models/leaf.fbx and b/unity_artifitial_world-st/Assets/Models/leaf.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/rose_petal.fbx b/unity_artifitial_world-st/Assets/Models/rose_petal.fbx new file mode 100644 index 0000000..e44cdeb Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/rose_petal.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/rose_petal.fbx.meta b/unity_artifitial_world-st/Assets/Models/rose_petal.fbx.meta new file mode 100644 index 0000000..8060057 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/rose_petal.fbx.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: e26181f9304ac9044842d6648db420ce +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: + - first: + 74: -5187248419258813496 + second: Plane|PlaneAction + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx b/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx new file mode 100644 index 0000000..fff10d2 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx.meta b/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx.meta new file mode 100644 index 0000000..0783683 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/rose_petal1.fbx.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 813ff6c1c544b3644b274822464a92a7 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: + - first: + 74: -5187248419258813496 + second: Plane|PlaneAction + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower.meta b/unity_artifitial_world-st/Assets/Models/sunflower.meta new file mode 100644 index 0000000..d7a348b --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 910391d0ba4ce6c449458137a48292ec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx b/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx new file mode 100644 index 0000000..ad4a919 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx.meta b/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx.meta new file mode 100644 index 0000000..b17f4f7 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/bud.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 0ce8fd4d46eb7c04fb6b357ad5d32398 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx b/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx new file mode 100644 index 0000000..b444d58 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx.meta b/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx.meta new file mode 100644 index 0000000..e803509 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/flower_old.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 0d744d7a694a1b34aa665e6fa85c38a2 +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx b/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx new file mode 100644 index 0000000..98fa014 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx.meta b/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx.meta new file mode 100644 index 0000000..98432ad --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/flower_young.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 183ebc02eb02ee14eaeeacc7bbffb22a +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx b/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx new file mode 100644 index 0000000..00fb8fd Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx.meta b/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx.meta new file mode 100644 index 0000000..babe40d --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/petal.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: d1875180159e234448d5f19b60ecf63f +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/textures.meta b/unity_artifitial_world-st/Assets/Models/sunflower/textures.meta new file mode 100644 index 0000000..f1aff51 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc30390a6e981f747bb5d9b8c5739d3d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg b/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg new file mode 100644 index 0000000..4cdc2e8 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta b/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta new file mode 100644 index 0000000..1263027 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/textures/Material.001 Base Color.jpg.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: ed1b71ffb41fa3a409b86d963a94d755 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png b/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png new file mode 100644 index 0000000..7226fa1 Binary files /dev/null and b/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png differ diff --git a/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png.meta b/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png.meta new file mode 100644 index 0000000..8ef5a21 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Models/sunflower/textures/old.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: eacb8bdb1d23f964d9106065c5f5fb75 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/New Material.mat b/unity_artifitial_world-st/Assets/New Material.mat deleted file mode 100644 index 8505456..0000000 --- a/unity_artifitial_world-st/Assets/New Material.mat +++ /dev/null @@ -1,85 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: New Material - m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _SUNDISK_SIMPLE - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _AtmosphereThickness: 0 - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _Exposure: 1.3 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _SunDisk: 1 - - _SunSize: 0.074 - - _SunSizeConvergence: 5 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _GroundColor: {r: 0, g: 0, b: 0, a: 1} - - _SkyTint: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/unity_artifitial_world-st/Assets/Scenes/LSystem3D.unity b/unity_artifitial_world-st/Assets/Scenes/LSystem3D.unity index 188d62f..c7688ed 100644 --- a/unity_artifitial_world-st/Assets/Scenes/LSystem3D.unity +++ b/unity_artifitial_world-st/Assets/Scenes/LSystem3D.unity @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 0} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +118,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -197,6 +199,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &755131159 @@ -245,6 +248,7 @@ MonoBehaviour: LSystemPath: Assets\LSystem\Sierpinski.txt steps: 1 obj: {fileID: 3132964252630352729, guid: 537804071d025f14d907bbea26a5b603, type: 3} + sphere: {fileID: 1137365859699674365, guid: 5d2f08ecbb69120459626c90d120bbb7, type: 3} angle: 60 --- !u!4 &1466590777 Transform: diff --git a/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity b/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity new file mode 100644 index 0000000..2ed8e89 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity @@ -0,0 +1,346 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &755131157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 755131159} + - component: {fileID: 755131158} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &755131158 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &755131159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 755131157} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1466590775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1466590777} + - component: {fileID: 1466590776} + m_Layer: 0 + m_Name: LSystemController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1466590776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b3646e56500f82b478deb4552fc2bc85, type: 3} + m_Name: + m_EditorClassIdentifier: + LSystemPath: Assets\LSystem\Context1.txt + steps: 1 +--- !u!4 &1466590777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1466590775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2076165847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2076165850} + - component: {fileID: 2076165849} + - component: {fileID: 2076165848} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2076165848 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 +--- !u!20 &2076165849 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2076165850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2076165847} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -1.525} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity.meta b/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity.meta new file mode 100644 index 0000000..fe558a0 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Scenes/LSystemContext.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0fcee03301fc17b49b6f5ce1507ddf81 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs b/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs new file mode 100644 index 0000000..09908b9 --- /dev/null +++ b/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using ConsoleLSystem; +using System; + +public class ContextTurtle : TurtleLSystem { + + protected override void initLiteralInterpretation() { + + turtleInterpretation = new Dictionary>>(); + //turtleInterpretation + //loading required objects + var path = "Assets/Models/{0}.fbx"; + var bigL = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigL"), typeof(GameObject)); + var bigR = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "bigR"), typeof(GameObject)); + var l = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "l"), typeof(GameObject)); + var r = (GameObject)AssetDatabase.LoadAssetAtPath(String.Format(path, "r"), typeof(GameObject)); + + //creating functions that are used for interpretation + turtleInterpretation.Add("A", (float[] args) => new Tuple(l, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("B", (float[] args) => new Tuple(r, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f, 0.1f)))); + turtleInterpretation.Add("D", (float[] args) => new Tuple(bigR, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f * (args[0] * 0.2f + 0.01f), 0.1f)))); + turtleInterpretation.Add("C", (float[] args) => new Tuple(bigR, Matrix4x4.Translate(new Vector3(0.1f, 0, 0)) * Matrix4x4.Scale(new Vector3(0.1f, 0.1f * (args[0] * 0.2f + 0.01f), 0.1f)))); + } +} + \ No newline at end of file diff --git a/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs.meta b/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs.meta new file mode 100644 index 0000000..244549e --- /dev/null +++ b/unity_artifitial_world-st/Assets/Scripts/ContextTurtle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3646e56500f82b478deb4552fc2bc85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/unity_artifitial_world-st/Assets/Scripts/Turtle3D.cs b/unity_artifitial_world-st/Assets/Scripts/Turtle3D.cs index acc6a70..6cf6f87 100644 --- a/unity_artifitial_world-st/Assets/Scripts/Turtle3D.cs +++ b/unity_artifitial_world-st/Assets/Scripts/Turtle3D.cs @@ -8,15 +8,49 @@ using System; public class Turtle3D : TurtleLSystem { public GameObject obj; + public GameObject sphere; public float angle; + private Func _roation(Vector3 axis) { + Matrix4x4 f(float[] args) { + if (args.Length == 0) { + return Matrix4x4.Rotate(Quaternion.AngleAxis(angle, axis)); + } + else { + return Matrix4x4.Rotate(Quaternion.AngleAxis(args[0], axis)); + } + } + return f; + } + protected override void initLiteralInterpretation() { turtleInterpretation = new Dictionary>>(); //turtleInterpretation var transformation = Matrix4x4.Translate(new Vector3(0.0f, 0.1f, 0)) * Matrix4x4.Scale(new Vector3 (0.05f, 0.1f, 0.05f)); - turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); - turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); + //turtleInterpretation.Add("+", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, -angle)))); + //turtleInterpretation.Add("-", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, 0, angle)))); + + //turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, -angle, 0)))); + //turtleInterpretation.Add("/", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(0, angle, 0)))); + + //turtleInterpretation.Add("^", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(-angle, 0, 0)))); + //turtleInterpretation.Add("&", (float[] args) => new Tuple(null, Matrix4x4.Rotate(Quaternion.Euler(angle, 0, 0)))); + + turtleInterpretation.Add("+", (float[] args) => new Tuple(null, _roation(Vector3.back)(args) )); + turtleInterpretation.Add("-", (float[] args) => new Tuple(null, _roation(Vector3.forward)(args))); + + turtleInterpretation.Add("\\", (float[] args) => new Tuple(null, _roation(Vector3.down)(args))); + turtleInterpretation.Add("/", (float[] args) => new Tuple(null, _roation(Vector3.up)(args))); + + turtleInterpretation.Add("^", (float[] args) => new Tuple(null, _roation(Vector3.left)(args))); + turtleInterpretation.Add("&", (float[] args) => new Tuple(null, _roation(Vector3.right)(args))); + + + turtleInterpretation.Add("f", (float[] args) => new Tuple(null, Matrix4x4.Translate(Vector3.up * args[0]))); + + turtleInterpretation.Add("S", (float[] args) => new Tuple(sphere,Matrix4x4.identity)); + //Wildcard how to represent any other symbol turtleInterpretation.Add("*.*", (float[] args) => new Tuple(obj, transformation)); diff --git a/unity_artifitial_world-st/ProjectSettings/ProjectVersion.txt b/unity_artifitial_world-st/ProjectSettings/ProjectVersion.txt index 833e6ef..78a3249 100644 --- a/unity_artifitial_world-st/ProjectSettings/ProjectVersion.txt +++ b/unity_artifitial_world-st/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.2.4f1 -m_EditorVersionWithRevision: 2020.2.4f1 (becced5a802b) +m_EditorVersion: 2020.2.3f1 +m_EditorVersionWithRevision: 2020.2.3f1 (8ff31bc5bf5b) diff --git a/unity_artifitial_world-st/UserSettings/EditorUserSettings.asset b/unity_artifitial_world-st/UserSettings/EditorUserSettings.asset index dd05fcb..1462d88 100644 --- a/unity_artifitial_world-st/UserSettings/EditorUserSettings.asset +++ b/unity_artifitial_world-st/UserSettings/EditorUserSettings.asset @@ -8,6 +8,12 @@ EditorUserSettings: RecentlyUsedScenePath-0: value: 22424703114646680e0b0227036c73230f040c2f217a027e38271427fb flags: 0 + RecentlyUsedScenePath-1: + value: 22424703114646680e0b0227036c73230f040c2f217b027e38271427fb + flags: 0 + RecentlyUsedScenePath-2: + value: 22424703114646680e0b0227036c73230f040c2f210b293e392c0527acf53a31f6fe + flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0