Grafika komputerowa 1


Ćwiczenie 1
Generacja obrazów scen 3-D przy pomocy programu POV-ray - wstęp.
Cel ćwiczenia:
Zapoznanie się z technologią generacji obrazów scen 3-D metodą śledzenia promieni (ray-tracing).
Krok 1. Uruchomienie programu POV-ray, pierwszy przykład generacji obrazu
sceny 3-D
1. Skopiować do utworzonego wcześniej folderu roboczego plik Scena_1.pov
2. Uruchomić program POV-ray.
3. Przy pomocy polecenia File > Open File > .../Scena_1.pov wczytać opis tekstowy sceny
(jest to pewien program napisany w specyficznym języku opisu sceny) do pola edytora
programu POV-ray.
4. Obejrzeć (bez zbytniego zwracania uwagi na zrozumienie tekstu) treść wczytanego opisu
sceny (programu).
5. Wykonać polecenie Render > Start Rendering lub nacisnąć przycisk Run (oznaczony
czerwonym, biegnącym człowieczkiem).
6. Zaobserwować efekt wykonanego polecenia i spróbować skojarzyć wygląd
wygenerowanego obrazu z tekstem opisu sceny umieszczonym w polu edytora.
7. Zmienić w treści opisu sceny (edytując tekst przy pomocy typowych poleceń edycyjnych)
linię pigment { color Red} na pigment { color Yellow}.
8. Ponownie nacisnąć przycisk Run i zaobserwować efekt.
9. Zapisać wynik zmiany przy pomocy polecenia File > Save.
10. W okienku z napisem 320x240, No AA (co oznacza, że generowany obraz ma rozmiar320 na
240 pikseli i jest uzyskiwany bez zastosowania mechanizmu antyaliasingu), zmienić
selekcję na 640x480, No AA i nacisnąć przycisk Run (rozdzielczość można zmienić również
przez wykonanie polecenia Reneder > Edit Setings/Render i wpisanie w okienko Section
odpowiednich parametrów rozdzielczości).
11. Kolejny raz zmienić selekcję tym razem na 640x480, AA 0.3, nacisnąć przycisk Run i
porównać uzyskany obraz z poprzednim.
Krok 2. Analiza treści opisu sceny
1. Plik Scena_1.pov zawierający opis sceny, której obraz wygenerowano w poprzednim
punkcie ma następującą treść i dla większej przejrzystości podzielony został na fragmenty,
oznaczone różnymi kolorami. Funkcje jakie pełnią poszczególne fragmenty zostały opisane
w formie komentarzy.
#include "colors.inc" /* włączenie pliku zawierającego predefiniowane elementy sceny */
background { color Cyan} /* określenie koloru tła */
camera /* określenie pozycji obserwatora (sposobu patrzenia na obiekt) */
{
location <0, 2, -3>
look_at <0, 1, 2>
}
sphere /* definicja obiektu */
{
<0, 1, 2>, 1.5
texture
{
pigment { color Red }
}
}
light_source { <2, 4, -3> color White} /* definicja oświetlenia sceny */
Dalsza analiza treści pliku z opisem sceny zostanie przeprowadzona w kolejnych punktach.
Krok 3. Włączanie do opisu sceny obiektów predefiniowanych
Fragment 1 zawiera komendę powodującą włączenie do treści opisu sceny elementów
zdefiniowanych wcześniej i zapisanych w pliku z rozszerzeniem .inc. W tym przypadku jest to plik o
nazwie colors.inc, w którym umieszczone zostały definicje różnych kolorów (wyrażone w modelu
barw RGB).
Niewielki fragment pliku colors.inc pokazano poniżej.
...
#declare Copper = color red 0.72 green 0.45 blue 0.20;
#declare Bronze = color red 0.55 green 0.47 blue 0.14;
#declare Bronze2 = color red 0.65 green 0.49 blue 0.24;
#declare Silver = color red 0.90 green 0.91 blue 0.98;
#declare BrightGold = color red 0.85 green 0.85 blue 0.10;
#declare OldGold = color red 0.81 green 0.71 blue 0.23;
#declare Feldspar = color red 0.82 green 0.57 blue 0.46;
#declare Quartz = color red 0.85 green 0.85 blue 0.95;
#declare Mica = color Black; // needed in textures.inc
#declare NeonPink = color red 1.00 green 0.43 blue 0.78;
#declare DarkPurple = color red 0.53 green 0.12 blue 0.47;
#declare NeonBlue = color red 0.30 green 0.30 blue 1.00;
#declare CoolCopper = color red 0.85 green 0.53 blue 0.10;
#declare MandarinOrange = color red 0.89 green 0.47 blue 0.20;
...
Kolejne linie pliku są definicjami kolorów o podanych nazwach. Podane liczby oznaczają zawartości
składowych R,G,B i są liczbami z przedziału [0, 1]. Jeśli plik colors.inc zostanie włączony do treści
opisu sceny przy pomocy komendy #include " plik ", to dalej zastosowanie danego koloru wymaga
jedynie podania jego nazwy.
1. Zmniejszyć rozdzielczość generowanego obrazu sceny, powracając do ustawienia 320x240,
No AA.
2. Zmienić w treści opisu sceny linię pigment { color ...} wpisując nazwy kolorów podane w
pokazanym wyżej fragmencie pliku colors.inc (np. Copper, Silver itd) i generować obrazy
sceny obserwując jak zmienia się wygląd kuli.
3. Obejrzeć zawartość pliku colors.inc
Krok 4. Określenie tła
Tło zdefiniowane zostało w opisie przykładowej sceny przy pomocy komendy background { color
Cyan}.
Tło nie jest obiektem geometrycznym, lecz kolorem, którym wypełniane są punkty obrazu sceny nie
związane z żadnym obiektem.
Domyślny kolor tła jest kolorem czarnym.
1. Zmienić w komendzie opisującej tło kolor na inny i zaobserwować efekt.
2. Ustawić tło jako czarne (kolor domyślny) przez wstawienie znaków komentarza. Można to
zrobić na dwa sposoby:
// background { color color}
lub
/* background { color color} */
Komentarz jest to fragment pliku opisu sceny (programu), który nie będzie miał żadnego wpływu na
treść generowanego obrazu. W procesie generacji obrazu będzie on ignorowany.
W pierwszym przypadku jako komentarz traktowany jest tekst od znaków // do końca danej linii.
W drugim, tekst umieszczony pomiędzy sekwencją znaków /* ...*/. W tym przypadku tekst
komentarza może się składać z wielu linii.
Komentarze służą do umieszczania w treści programu informacji zwiększających jego czytelność i
powinny być często stosowane. W większych programach brak komentarzy jest dowodem
niechlujstwa programisty, a nie jak się sądzi w niektórych kręgach tzw. informatyków przejawem
profesjonalizmu.
3. Wypróbować efekt działania komentarzy, zauważyć, że fragment, który jest komentarzem
wyświetlany jest dla większej czytelności innym kolorem.
Krok 5. Określenie układu współrzędnych i sposobu patrzenia na scenę
Układ współrzędnych używany w programie POV-Ray jest tzw. układem lewoskrętnym.
lewoskrętny układ współrzędnych prostokątnych
Orientację osi układu można wyobrazić sobie posługując się następującym przykładem. Jeśli na
płaszczyznie wyznaczonej przez osie x-y zostanie umieszczony ekran monitora, to oś z będzie
swoim grotem wbijała się w ekran, czyli punkt o większej wartości współrzędnej z będzie położony
dalej od ekranu.
W układzie zdefiniowanym powyżej, opisywane będą dalej wszystkie obiekty geometryczne
umieszczane na modelowanej scenie.
Generacja obrazu sceny 3-D wymaga prócz opisania samej sceny określenia sposobu jej obserwacji.
Formalnie sprowadza się to do określenia sposoby rzutowania punktów z przestrzeni
trójwymiarowej na płaszczyznę.
W programie POV-Ray do określenia sposobu rzutowania służy komenda camera użyta w
pokazanym wyżej, przykładowym programie w postaci:
camera /* określenie pozycji obserwatora (sposobu patrzenia na obiekt)
*/
{
location <0, 2, -3>
look_at <0, 1, 2>
}
Funkcje jakie pełnią opcje location i look_at wyjaśnia rysunek
Opcja location< x, y, z > definiuje położenie w przestrzeni trójwymiarowej, punktu, w którym
umieszczone jest ognisko obiektywu fikcyjnego aparatu fotograficznego mającego wykonać zdjęcie
sceny. Opcja look_at< x, y, z > ustala natomiast punkt przez, który przechodzi oś obiektywu.
Inaczej mówiąc location określa punkt, z którego obserwator patrzy na scenę a look_at punkt, na
który patrzy.
1. Wiedząc, że rysowanym obiektem jest kula o promieniu r = 1,5 i środku umieszczonym w
punkcie (x, y, z) = (0, 1, 2) (patrz następna komenda opisu sceny) zmienić w kilkakrotnie
parametry opcji location i look_at tak, aby nabrać pewnej wprawy w manipulowaniu
położeniem kamery.
2. Przećwiczyć takie umieszczanie kamery aby można było w sposób kontrolowany oddalać
się od pokazywanej na rysunku kuli.
3. Sprawdzić co stanie się gdy kamera zostanie umieszczona wewnątrz kuli i na jej
powierzchni.
Krok 6. Opis obiektu na scenie
W przykładowym programie opisującym scenę pokazanym w punkcie 2 występuje tylko jeden
obiekt. Jest nim sfera (powierzchnia kuli) o promieniu r = 1,5 i środku umieszczonym w
punkcie (x, y, z) = (0, 1, 2).
Komenda definiująca sferę ma następującą postać:
sphere /* nazwa obiektu */
{
<0, 1, 2>, 1.5 /* współrzędne środka i promień
*/
texture /* charakterystyka powierzchni obiektu (tekstura)*/
{
pigment { color Red } /* powierzchnia obiektu jest czerwona*/
}
}
Współrzędne środka i promień opisują geometrię obiektu, natomiast komenda texture zawarta
wewnątrz komendy sphere pozwala na opisanie charakterystyki powierzchni obiektu. W tym
przypadku opis jest bardzo prosty, mówi jedynie, że powierzchnia sfery jest czerwona. Możliwe są
oczywiście do zdefiniowania bardziej subtelne charakterystyki powierzchni obiektu.
Powyższy fragment programu definiujący sferę jest w pełni równoważny tekstowi:
sphere { <0, 1, 2>, 1.5 texture { pigment { color Red } } }
bowiem przy generowaniu obrazu sceny spacje, nowe linie i komentarze są ignorowane.
1. Zmienić kilkakrotnie położenie środka i promień sfery, generując za każdym razem obraz i
obserwując efekty zmian.
2. W oknie edytora programu POV-Ray zaznaczyć definicję sfery i przy pomocy poleceń Edit
> Copy i Edit > Paste skopiować treść komendy opisującej sferę, aby w ten sposób uzyskać
definicję drugiej sfery (umieszczając je jedna za drugą).
3. Zmienić parametry i kolor drugiej sfery a następnie wygenerować obraz sceny.
4. Zaznaczyć definicję drugiej sfery i skasować ją przy pomocy polecenia Edit > Delete.
5. Dodać do opisu sceny drugi obiekt (płaszczyznę pokrytą wzorem szachownicy) przez
dopisanie po fragmencie z definicją sfery następujących linii.
plane /* nazwa obiektu */
{
<0, 1, 0>, -1 /* parametry opisujące płaszczyznę */
pigment {checker color Red, color Blue } /* kolor (czerwono - niebieska szachownica) */
}
Parametry opisujące płaszczyznę to: współrzędne wektora normalnego < nx, ny, nz > (wektora
prostopadłego do płaszczyzny) i odległość od środka układu współrzędnych, liczona wzdłuż
kierunku wyznaczonego przez wektor normalny. W powyższym przykładzie opisana została
płaszczyzna równoległa do płaszczyzny wyznaczonej przez osie x i z układu współrzędnych i
przesunięta o jedną jednostkę w dół, licząc wzdłuż osi y.
Wprowadzenie płaszczyzny pozwoli na lepszą orientację obserwatora obrazu w przestrzeni.
Krok 6. Opis sposobu oświetlenia sceny
Aby po wygenerowaniu obrazu zdefiniowany w opisie sceny obiekt był widoczny, na scenie musi
znajdować się przynajmniej jedno zródło światła. W analizowanym opisie sceny z punktu 2 zródło
światła opisuje fragment:
light_source { <2, 4, -3> color White} /* definicja zródła światła */
Określono w ten sposób zródło punktowe, umieszczone w punkcie (x, y, z) = (2, 4, -3), świecące
światłem białym.
Możliwe jest określeni wielu zródeł i uzyskanie znacznie bardziej subtelnych charakterystyk
świecenia.
1. Zmienić kolor sfery na biały.
2. Zmienić kilkakrotnie położenie zródła (przesuwając je w prawo, w lewo a także poza
obiekt) i obserwować efekty zmian.
3. Zmienić kolor światła np. na czerwony, zielony itd. i obserwować jak wygląda obraz białej
kuli.
4. Zmienić kolor kuli i obserwować jak wygląda jej obraz przy oświetlaniu kolorowym
światłem.
5. Skopiować linię opisującą zródło, wprowadzając w ten sposób nowe zródło światła.
6. Oświetlać kulę kilkoma zródłami świecącymi różnymi kolorami.
Krok 7. Zapoznanie się z plikiem pomocy programu
1. Wykonać polecenia Help > Help on POV-Ray for Windows a następnie Help > Help on the
POV-Ray Scene Language i przejrzeć ogólnie zawartość plików pomocy. Pierwszy z nich
zawiera opis posługiwania się programem, natomiast drugi jest szczegółowym
podręcznikiem (zawierającym wiele przykładów) pozwalającym poznać stosowany w
programie język opisu sceny.


Wyszukiwarka

Podobne podstrony:
Grafika komputerowa na stronach internetowych
Grafika komputerowa 2
Polska Grafika Komputerowa
Grafika komputerowa i OpenGL
Praca kontrolna z Informatyki semestr I Grafika komputarowa przedstaw jeden z program, krótko go op
Grafika Komputerowa
ABC grafiki komputerowej i obrobki zdjec
Grafika komputerowa 3
15 barwy grafika komputerowa
LebiedAo Jacek Grafika Komputerowa (2)
grafika komputerowa
Grafika komputerowa 2
Grafika komputerowa warsztat umiejętności praktycznych
grafika komputerowa(1)
14!6601 grafik komputerowy DTP
Grafika komputerowa, czyli jak zrobić coś, czego nie potrafi aparat cyfrowy

więcej podobnych podstron