Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu Mirosław Głowacki
Zagadnienia Jak rozumiemy fotorealizm w grafice komputerowej Historyczny rozwój kart graficznych Przekształcenia geometryczne Przetwarzanie Rendering Rasteryzacja
Obraz realistyczny Pojęcie obrazu realistycznego jest rozumiane w różny sposób Nie zawsze obraz realistyczny jest najbardziej pożądany Często idealizuje się obraz w celu zawarcia w nim większej porcji informacji Psychologowie powiadają: człowiek widzi nie to, co widzą jego oczy, lecz to, co widzi jego mózg.
Złudzenia optyczne Mogą być i na ogół są wykorzystywane w tworzeniu realizmu wirtualnego, ale czasami powodują artefakty Na poniższym rysunku linie poziome są równoległe
Symulowany przelot koło Urana widoczne pierścienie i orbita sondy Dodatkowe światło po zaciemnionej stronie planety (w rzeczywistoś ci jest całkowicie czarna) oraz dodatkowe elementy (orbity)
Wytworzony komputerowo obraz fotorealistyczny
Obraz realistyczny Często stosuje się realistyczne obrazy nie istniejących obiektów, np. statków kosmicznych, prototypów samochodów, itp. Czasem obraz realistyczny istniejących obiektów tworzony jest przy pomocy wyidealizowanych elementów składowych Przykładem może tu być modelowanie molekulane. Atomy są idealizowane w postaci nierzeczywiście barwnych kul, widoczne są wiązania i drgania atomów (animacja) itp.
Teksturowany statek kosmiczny 450 tys. wielokątów
Fotomontaż wykonany w programie GIMP
Para stereo cząsteczki wirusa Polio model składający się z kul o promieniu 5 nm
Podział kart graficznych Na przestrzeni ostatnich lat powstawał cały szereg coraz to bardziej doskonałych kart graficznych. W zależności od stopnia zaawansowania technicznego można je podzielić na: bufory ramki akceleratory grafiki płaskiej akceleratory grafiki trójwymiarowej procesory graficzne
Bufory ramki Są to najprostsze karty graficzne służące jedynie do wyświetlania obrazu na ekranie monitora.
Akceleratory grafiki płaskiej Są to urządzenia wspomagające procesor przy operacjach typu: wyświetlanie wielokątów i linii prostych Wypełnianiu (rasteryzacja) wielokątów przesuwaniu i skalowaniu okien itp.
Akceleratory grafiki trójwymiarowej Są to urządzenia odciążające jednostkę centralną w końcowym procesie obliczeń W przypadku tych urządzeń w dalszym ciągu wstępne przygotowanie sceny 3D spoczywa na procesorze, a szybkość realizacji tego zadania zależy od algorytmów zastosowanych przez programistę.
Procesory graficzne Urządzenia te posiadają układy wspomagające operacje geometryczne działają przy minimalnym zaangażowaniu jednostki centralnej komputera w proces tworzenia grafiki określa się je również mianem akceleratorów geometrii.
Grafika trójwymiarowa Niezależnie od konstrukcji karty graficznej najważniejszym zadaniem, jakie musi wykonać komputer przy tworzeniu trójwymiarowej grafiki jest przedstawienie jej na płaskim ekranie monitora. Cały proces tworzenia obrazu od chwili otrzymania danych z programu do momentu wyświetlenia grafiki na ekranie monitora nazywany jest często przetwarzaniem strumienia grafiki trójwymiarowej.
Strumień grafiki trójwymiarowej W strumieniu tym wyróżnić można dwa zasadnicze etapy obliczeń: przekształcenia geometryczne rendering oraz rasteryazacja sceny
Pojęcie syntetycznej kamery Pojęcie to jest użyteczną metaforą do tworzenia grafiki 3D Obiekt rzeczywisty umiejscowiony jest w tzw. współrzędnych świata x, y i z. Wyobraźmy sobie kamerę, którą można przenieść w dowolne miejsce zorientować ją w dowolny sposób otwierać migawkę tworząc płaski obraz rzeczywistości 3D
Rzutowanie w przestrzeni 3D Syntetyczna kamera fotografująca obiekt 3D
Pojęcie syntetycznej kamery Kamerze można nadać ruch, co umożliwi tworzenie animowanych sekwencji obiektów z różnych punktów obserwacji pod różnymi kątami przy różnych powiększeniach Z kamerą związany jest układ współrzędnych u, v i n, przy czym ostatnia współrzędna jest prostopadła do matrycy kamery (rzutni). Kamera jest po prostu programem komputerowym, który symuluje kamerę rzeczywistą, a obiekty są zbiorami punków, odcinków i powierzchni
Tworzenie obrazu szkieletowego Składa się z kilku kroków określenie rodzaju rzutu określenie parametrów rzutowania powierzchni, na której rzut zostanie wyświetlony układ współrzędnych sceny układ współrzędnych oka (rzutowania) rzutowanie i wyświetlanie zawartość tzw. bryły widzenia jest rzutowana na płaszczyznę (powierzchnię) rzutowania i obcinana do obszaru pewnego okna
Rodzaje rzutów w grafice komputerowej W zdecydowanej większości są to planarne (płaskie) rzuty geometryczne planarne rzutnia jest powierzchnią płaską geometryczne promienie rzutujące są prostoliniowe największe znaczenie mają rzut perspektywiczny i równoległy prostokątny
Rzutowanie w przestrzeni 3D Klasyfikacja płaskich rzutów geometrycznych
Pokój z kamerą filmową rzuty prostokątne: górny (a), przedni (b), boczny (c)
Pokój z kamerą po ustawieniach geometrii rzut perspektywiczny
Planarne rzuty geometryczne równoległe prostokątne kierunek rzutowania jest normalny do rzutni z góry z przodu z boku aksonometryczne pod pewnymi kątami do wszystkich osi izomeryczne pod równymi kątami do wszystkich osi inne ukośne różne: kierunek rzutowania i normalna do rzutni wojskowe kawaleryjskie inne
Przykład rzutów równoległych obiektu z prawego dolnego rysunku
Rzuty prostokątne
Planarne rzuty geometryczne perspektywiczne pęki prostych wzajemnie równoległych zbiegają się w punkcie (punktach) zbieżności o ile nie są równoległe do rzutni jednopunktowe rzutnia jest prostopadła do jednej z osi istnieje jeden osiowy punkty zbieżności dwupunktowe (najczęściej używane) jedna z osi jest równoległa do rzutni istnieją dwa osiowe punkty zbieżności trzypunktowe żadna z osi nie jest równoległa do rzutni istnieją trzy osiowe punkty zbieżności
Przykład rzutu dwupunktowego zamek w Baranowie Sandomierskim
Ustawianie geometrii obrazu Program generujący obraz 3D poprzez odpowiedni interfejs OpenGL czy Direct3D wysyła współrzędne wszystkich wierzchołków sceny do tzw. układu ustawiania trójkątów Jest to specjalna jednostka, będąca częścią chipu graficznego. Grupuje ona wszystkie trójki wierzchołków w trójkąty
Triangularyzacja
Ustawianie geometrii Każda trójka współrzędnych punktów powinna być zapamiętana w oddzielnym wektorze. Jako że praktycznie każdy wierzchołek należy nie do jednego, a do dwóch lub nawet więcej trójkątów stosuje się więc pewne techniki, które mają zmniejszyć rozmiar macierzy opisujących współrzędne wierzchołków opierają się one na tworzeniu tzw. pasów (strips) i wachlarzy (fans)
Pasy i wachlarze Świat tworzony przez wszystkie akceleratory 3D składa się z trójkątów. Trójkąt ma trzy wierzchołki. Każdy z nich ma trzy współrzędne - x, y i z. Jeśli zechcemy stworzyć prostokąt, będziemy musieli wykorzystać w tym celu dwa trójkąty. Zatem prostokąt, który normalnie ma cztery wierzchołki, akcelerator 3D jest zmuszony opisać sześcioma wierzchołkami.
Pasy i wachlarze W celu zmniejszenia ilości przetwarzanych danych, a co za tym idzie - zwiększenia szybkości animacji stosuje się różne techniki wykorzystywania wspólnych wierzchołków zwane pasami i wachlarzami
Pasy i wachlarze
Tworzenie pasów Pasy pozwalają na tworzenie długich ścian Do podstawowego trójkąta: dokładany jest nowy wierzchołek z wykorzystaniem dwóch istniejących uprzednio wierzchołków tego trójkąta tworzony jest nowy trójkąt Następnie dodawany jest kolejny wierzchołek pozwalający zdefiniować nowy trójkąt Przy udziale nowopowstałego trójkąta tworzony jest kolejny
Wachlarze Wachlarze pozwalają na modelowanie obiektów o kształcie zbliżonym do okręgu Wachlarze powstają również podczas tworzenia nowych trójkątów z wykorzystaniem jednego z istniejących wierzchołków Tym razem jest to ciągle ten sam wierzchołek należący do trójkąta bazowego