diff --git a/Opis.md b/Opis.md
index fc3508a..795c2bb 100644
--- a/Opis.md
+++ b/Opis.md
@@ -1,14 +1,14 @@
# Trees in environment
-Aby zasymulować środowisko wykorzystamy voxel space. W środowisku będziemy rozpatrywać tylko jedną cechę - zacienienie.
+W trakcie tych zajęć wykorzystamy *voxel space* do zasymulowania wpływu zacienienia na rozwój drzew.
## Klasa Environment
-Klasa environment zawiera voxel space z informacją o zacienieniu.
+Klasa environment znajduje się w `Assets\Scripts\env` i implementuje *voxel space* z informacją o zacienieniu. Zawiera ona następujące metody
### addShadow
-Funkcja addShadow implementuje metodę shadow propagation. Najpierw zwiększa wartość cienia w zadanej pozycji. Następnie przechodzi w pentlach w dół, zmniejszając z każdym poziomem siłę cienia, ale zwiększając szerokość oddziałowywania.
+Funkcja addShadow implementuje algorytm shadow propagation. Przyjmuje ona wektor pozycji w przestrzeni świata i siłę zacienienia. Najpierw zwiększa wartość cienia w zadanej pozycji. Następnie przechodzi w pętlach w dół, zmniejszając z każdym poziomem siłę cienia, ale zwiększając szerokość oddziaływania.
```C#
for(int j = (int)voxelPosition.y; j >= 0; j--)
@@ -27,11 +27,11 @@ for(int j = (int)voxelPosition.y; j >= 0; j--)
### shadowStrength
-Zwraca siłę cienia w zadanej pozycji
+Zwraca siłę cienia w zadanej pozycji świata.
### inVoxelSpace
-Sprawdza, czy dane współrzędne się mieszczą w voxel space
+Sprawdza, czy dane współrzędne voxela mieszczą się w *voxel space*.
```C#
bool inVoxelSpace(int a, int b, int c)
@@ -42,6 +42,8 @@ bool inVoxelSpace(int a, int b, int c)
### positionInVoxel i positionInWorld
+Konwertuje `positionInVoxel` z pozycji w przestrzeni świata do pozycji w przestrzeni *voxel space* `positionInWorld` odwrotnie.
+
```C#
public Vector3 positionInVoxel(Vector3 positionInWorld)
@@ -66,25 +68,22 @@ bool inVoxelSpace(int a, int b, int c)
1. Otwórz Unity Project, wersję na te ćwiczenia. Następnie otwórz scenę "Pipe Model"
-2. Do objektu shadowBox jest przypięty skrypt Cast Shadow. Otwórz ten skrypt.
-3. Zmodyfikuj skrypt, tak aby ten obiekt rzucał cień w dół.
- 1. Wykorzystaj funkcję środowiska (Environment)
- 2. public void addShadow(Vector3 position, sbyte strength) // ujemna siła, aby usunąć (Vector3 position to pozycja shadowBox)
+2. Do obiektu shadowBox jest przypięty skrypt `Cast Shadow`. Otwórz ten skrypt.
+3. Zmodyfikuj skrypt, tak aby ten obiekt rzucał cień w dół:
+ Skrypt zawiera atrybut `Environment environment`, który obsługuje zacienienie w tej scenie. Wykorzystaj jego metodę `addShadow(Vector3 position, sbyte strength)` by dodać cień w miejscu, w którym znajduje się obiekt. Wykorzystaj metodę `removeShadow(Vector3 position, sbyte strength)`, by usunąć cień, który powinien zniknąć, po przesunięciu obiektu.
## Zadanie 2
-1. W objekcie inShadow jest skrypt receiveShadow
-2. Zmodyfikuj skrypt - jak na ten objekt spadnie cień, to zmień materiał na **inShadow**, jak nie będzie w cieniu, to na **noShadow**
- 1. Wykorzystaj funkcję środowiska (Environment)
- 2. public byte shadowStrength(Vector3 pos)
+1. Do obiektu `inShadow` podpięty jest skrypt `receiveShadow`
+2. Tak go zmodyfikuj, żeby jak na ten obiekt spadnie cień, to zmień materiał na **inShadow**, a jak nie będzie w cieniu, to na **noShadow**. Wykorzystaj metodę `shadowStrength(Vector3 pos)` obiektu `environment`, żeby odczytać stan zacieniowania.
## Zadanie 3
-1. Wybierz objekt tree (001)
+1. Wybierz obiekt tree (001)
2. Jeśli nie jest ustawione, to ustaw odpowiednią ścieżkę (L-System Path) do *ShadowModel.txt*
@@ -92,15 +91,15 @@ bool inVoxelSpace(int a, int b, int c)
4. Gałęzie w cieniu nadal się rozwijają. Wylicz zacienienie do L-Systemu
- 1. Skrypt **TurtleLSystemEnvironment**, funkcja **lightDirection** (20 linijka), od 38 linijki
+ 1. W skrypcie **TurtleLSystemEnvironment** uzupełnij metodę **lightDirection** (20 linijka), od 38 linijki
2. Zacienienie mierzymy w prostopadłościanie wokół obecnego elementu
(2\***lookForLightLength** x **lookForLightLength** x 2\***lookForLightLength**)
- 3. Transformacja z obecną pozycją (**transformation**\***resultTransformation**)
- funkcja transformacja.**ExtractPosition**() zwraca pozycję dla transformacji
+ 3. Zmienna `objectTransformation` zawiera transformację obecnego elementu. Po jej przekształceniu, pozycję można uzyskać funkcją *transformacja*.**ExtractPosition()**
+
5. Wyślij wartość zacienienia do L-Systemu
@@ -113,22 +112,21 @@ S(a,c) : c>=50 -> S(a+1,0)
S(a,c) : c<50 -> G\(90)[-S(0,0)]S(0,0)
```
-1. 1. L-System będzie odczytywał jako cień drugą wartość - dla **S(a, c)** to będzie **c**
- 2. **node.literal.values** jest tablicą z wartościami L-Systemu
+W L-Systemie wartość zacienienia jest opisywana przez drugi parametr, czyli `c` w powyższym kodzie. By zmodyfikować parametr musisz odwołać sie do zmiennej `node`, dokładniej do `node.literal.values`, które jest tablicą zawierającą parametry odczytywanego symbolu.
## Zadanie 4
-1. Dodaj do objektu Environment więcej drzew (Trees) i zobacz jak drzewa wpływają na siebie nawzajem
-2. Napisz skrypt, który utworzy 9 drzew (3 wiersze i 3 kolumny) rozmieszczonych co równą odległość, przetestuj różne odległości
-3. Zobacz jak się w takim układzie rozwijają
+1. Dodaj do objektu Environment więcej drzew (Trees) i zobacz jak drzewa wpływają na siebie nawzajem.
+2. Napisz skrypt, który utworzy 9 drzew (po trzy w trzech rzędach) rozmieszczonych w równych odstępach, przetestuj różne odległości.
+3. Zobacz jak się w takim układzie rozwijają.
## Zadanie 5 - domowe
-Zintegruj L-System pipe model z wcześniejszych ćwiczeń z obsługą cienia
+Zintegruj L-System pipe model z wcześniejszych ćwiczeń z obsługą cienia.
Napisz L-System, który modeluje wybrany przez ciebie kształt drzewa. Kształt ma być twój indywidualny, ale możesz się wspomóc:
diff --git a/Unity Project/.DS_Store b/Unity Project/.DS_Store
index 9d82588..c3bb394 100644
Binary files a/Unity Project/.DS_Store and b/Unity Project/.DS_Store differ
diff --git a/Unity Project/Assets/.DS_Store b/Unity Project/Assets/.DS_Store
index 9ecb7f4..761a81a 100644
Binary files a/Unity Project/Assets/.DS_Store and b/Unity Project/Assets/.DS_Store differ
diff --git a/Unity Project/Assets/Scripts/.DS_Store b/Unity Project/Assets/Scripts/.DS_Store
new file mode 100644
index 0000000..b3dd60c
Binary files /dev/null and b/Unity Project/Assets/Scripts/.DS_Store differ
diff --git a/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs
index adc6d33..6fd2ed4 100644
--- a/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs
+++ b/Unity Project/Assets/Scripts/TurtleLSystemEnvironment.cs
@@ -35,6 +35,7 @@ abstract public class TurtleLSystemEnvironment : TurtleLSystem {
foreach (GameObject gameObject in GameObject.FindGameObjectsWithTag("ShadowCone")) {
DestroyImmediate(gameObject);
}
+ Matrix4x4 objectTransformation = (transformation*resultTransformation);
int nr_shadow_str = 1;
//---------------------miejsce-na-zadanie-3.4--------------------------------------//
diff --git a/Unity Project/Assets/Scripts/env/Environment.cs b/Unity Project/Assets/Scripts/env/Environment.cs
index 80095fd..a09de70 100644
--- a/Unity Project/Assets/Scripts/env/Environment.cs
+++ b/Unity Project/Assets/Scripts/env/Environment.cs
@@ -156,6 +156,10 @@ public class Environment : MonoBehaviour
}
}
+ public void removeShadow(Vector3 position, sbyte strength) // negative value to remove
+ {
+ addShadow(position, -strength);
+ }
public void addShadow(Vector3 position, sbyte strength) // negative value to remove
{
// 6.2 / 0.1 = 62.0