Grafika dwuwymiarowa, grafika 2D – dział informatyki zajmujący się cyfrowymi obrazami dwuwymiarowymi i technikami ich obróbki, jak również te obrazy jako takie (mogące składać się z tekstu, grafiki oraz obiektów dwuwymiarowych).
Grafika dwuwymiarowa znajduje zastosowanie głównie tam, gdzie pierwotnie używano tradycyjnych technologii drukowania oraz rysowania – między innymi typografii, kartografii, kreślarstwie, reklamie, filmie animowanym.
W tych zastosowaniach dwuwymiarowy obraz jest nie tylko reprezentacją obiektu ze świata rzeczywistego, ale niezależnym elementem, któremu nadano konkretne znaczenie. Dwuwymiarowy model jest w tym wypadku preferowany, ponieważ daje bardziej bezpośrednią kontrolę nad obrazem niż model trójwymiarowy, który lepiej odnosi się do fotografii niż do typografii.
Grafika komputerowa 2D rozpoczęła swój rozwój w latach 50. XX wieku od urządzeń grafiki wektorowej. Z czasem zostały one wyparte przez urządzenia grafiki rastrowej. Język PostScript oraz system X Window były jednymi z najważniejszych projektów w tej dziedzinie.
Techniki związane z grafiką 2D
Grafika może być tworzona poprzez:
- rysowanie bezpośrednio na ekranie
- rysowanie w pamięci (obraz jest niewidoczny), a następnie wyświetlanie obrazu na ekranie
- rysowanie w pamięci, następnie zapisywana do pliku (np. plik PPM)
- rysowana i zapisywana bezpośrednio do pliku. Obraz jest niewidoczny, aby go zobaczyć należy otworzyć plik (np. w przeglądarce grafiki).
Grafika 2D może zawierać w sobie modele geometryczne (nazywane grafiką wektorową), obrazy cyfrowe (nazywane grafiką rastrową), tekst (zdefiniowany przez styl i rozmiar czcionki, kolor, pozycję i orientację), funkcje i równania matematyczne. Składowe te mogą być modyfikowane i manipulowane przez dwuwymiarowe transformacje geometryczne takie jak translacja, rotacja, skalowanie.
W grafice obiektowej obraz jest opisywany pośrednio przez obiekt stosujący autorendering – procedurę ustalającą kolory pikseli obrazu poprzez bezwzględny algorytm. Złożone modele tworzy się z połączenia prostszych obiektów, jak w przypadku programowania obiektowego.
Rysowanie bezpośrednie
Wygodnym sposobem aby stworzyć złożony obraz jest rozpoczęcie pracy od kanwy – pustego obrazu – mapy rastrowej (jest to tablica pikseli – bitmapa lub pixmapa, jeśli obraz jest kolorowy) wypełnionej jakimś jednolitym kolorem tła – następnie „rysowanie”, „malowanie” lub „wklejanie” prostych kolorowych fragmentów obrazu w określonym porządku. W szczególnych przypadkach obraz może być przedstawiany jako bufor ramki.
Niektóre programy ustawiają kolory pikseli bezpośrednio w pamięci karty graficznej, jednak większość opiera swe działanie na którejś z bibliotek graficznych 2D. Biblioteki te zazwyczaj implementują następujące operacje graficzne:
- wklejenie zadanego obrazu w zadanym miejscu na płaszczyźnie
- wypisanie odpowiednią czcionką i pod odpowiednim kątem ciągu znaków w zadanym miejscu
- rysowanie prostych figur geometrycznych – na przykład trójkąta przy zdefiniowanych trzech wierzchołkach, lub okręgu przy zdefiniowaniu jego środka oraz promienia
- rysowanie linii prostych i krzywych oraz łuków krzywych, za pomocą wirtualnego pióra o zadanej grubości.
Rozszerzone modele barw
Tekst, kształty i linie są renderowane kolorem określonym przez klienta. Wiele bibliotek i kart dostarcza kolorowych gradientów, które są pomocne przy wyświetlaniu tła z przejściami tonalnymi między kolorami, efektów cieniowania, itp. (zobacz także cieniowanie Gourauda). Kolory piksela mogą być także pobrane z tekstury, np. z obrazu cyfrowego.
Namalowanie piksela danym kolorem zazwyczaj zastępuje poprzedni kolor. Jednakże, wiele systemów pozwala na malowanie przezroczystymi kolorami, które tylko modyfikują wartość poprzedniego piksela.
Dwa kolory mogą również być wymieszane w bardziej wyszukany sposób, na przykład przez wykonanie na nich bitowej operacji XOR. Ta technika, znana jako odwracanie kolorów (negatyw), jest często używana w interfejsach graficznych (np. w okienkach) do podświetlania elementów, a także innych zastosowań, gdy potrzebne jest zaznaczenie części rysunku bądź interfejsu tylko na chwilę – ponowne wykonanie na tych pikselach operacji XOR przywróci oryginalny jego kolor.
Warstwy
Modele rysowania 2-wymiarowej grafiki komputerowej nie mają możliwości tworzenia kształtów trójwymiarowych oraz stosowania efektów charakteryzujących przestrzeń trójwymiarową (oświetlenie, cienie, odbicia, załamania fal świetlnych). Jednakże istnieje możliwość nałożenia na obraz 2D wielu różnorodnych warstw, czyli czegoś w rodzaju kartki lub półprzezroczystej bądź przezroczystej folii ułożonych na sobie w odpowiedniej kolejności. Kolejność ta jest zwykle zdefiniowana przez pojedynczą liczbę – położenie warstwy lub jej odległość od obserwatora.
Grafika zawierająca warstwy jest czasem nazywana grafiką dwuipółwymiarową. Taka technika pozwala na wykorzystanie podobnych możliwości, co w przypadku obróbki obrazu na papierze oraz półprzezroczystych foliach. Możliwe jest wycinanie oraz wklejanie elementów na pojedynczych warstwach nie zmieniając pozostałych warstw. Z tych powodów są one używane w większości edytorów graficznych. Modele warstwowe pozwalają także na lepszy antyaliasing bardziej złożonych obrazów.
Warstwy umożliwiają użytkownikowi na pozostawianie lub usuwanie niepotrzebnych informacji podczas przeglądania bądź drukowania różnego rodzaju dokumentów, np. pozwalają na usunięcie dróg bądź torów kolejowych z map, ścieżek ze schematów układów elektronicznych lub odręcznych notatek w jakimś dokumencie.
Końcowy obraz jest tworzony poprzez „malowanie” lub „wklejanie” każdej z warstw na początkowo czysty obraz, zgodnie z kolejnością położenia każdej z warstw. Każda warstwa jest najpierw renderowana jako pojedynczy obraz, a następnie tak wyrenderowany obraz jest malowany piksel po pikselu na obrazie docelowym. Jeśli część warstwy jest przezroczysta, ta część nie jest oczywiście malowana. Renderowanie i malowanie może odbywać się równolegle, tzn. piksel każdej z warstw może być malowany od razu po tym jak zostanie wyrenderowany.
Jeśli warstwa zawiera bardziej złożone obiekty geometryczne – tekst, linie krzywe – może być rozbita na prostsze elementy, na przykład pojedyncze litery w przypadku tekstu, albo odcinki linii prostych. Następnie są one malowane jako osobne warstwy, w odpowiedniej kolejności. To rozwiązanie jednak może doprowadzić do utworzenia niepożądanych efektów w obrazie, gdy dwa elementy będą musiały zostać namalowane na jednym pikselu.
Sprzęt grafiki 2D
Nowoczesne karty graficzne w przeważającej większości wykorzystują technologie rastrowe dzieląc ekran na siatkę pikseli – jest to prostsza i tańsza technologia od tej wykorzystywanej w sprzęcie do grafiki wektorowej.
Do klasycznych procesorów graficznych 2D z końca lat 70. i początku lat 80., wykorzystywanych w 8-bitowych konsolach gier wideo i domowych komputerach, należą:
Oprogramowanie grafiki 2D
Wiele graficznych interfejsów użytkownika (GUI), takich jak te zawarte w systemach Mac OS, Microsoft Windows lub X Window System, są bazowane na grafice dwuwymiarowej. Oprogramowanie to pozwala użytkownikowi za pomocą interfejsu graficznego wejść w interakcję z komputerem. Zwykle menedżer okien logiczne oddziela interfejsy poszczególnych uruchomionych aplikacji, umieszczając je w osobnych oknach oraz umożliwiając użytkownikowi w prosty sposób przejście w każdej chwili z jednej aplikacji do drugiej. Dwuwymiarowy interfejs użytkownika jest w pewnym sensie naturalnym rozwiązaniem, chociażby z tego powodu, że najważniejsze urządzenia wejścia, w tym mysz komputerowa, mają swobodę ruchów ograniczoną do dwóch wymiarów.
Grafika dwuwymiarowa jest intensywnie wykorzystywana w różnych urządzeniach peryferyjnych (drukarkach, ploterach), a także w większości gier wideo oraz komputerowych wydanych w XX wieku. Jest też wykorzystywana w prostych grach karcianych i planszowych – szachy, solitaire, mahjongg – i wielu innych.
Edytory grafiki 2D są programami do tworzenia obrazów, diagramów oraz ilustracji poprzez bezpośrednie manipulowanie (za pomocą myszy, tabletu lub podobnego urządzenia) prostymi elementami grafiki. Edytory te zwykle umożliwiają edycję zarówno figur geometrycznych jak i obrazów cyfrowych. Obraz taki jest zwykle reprezentowany jako model warstwowy o strukturze hierarchicznej dla uproszczenia procesu edycji. Wynikiem pracy takich programów jest plik graficzny, gdzie poszczególne warstwy i figury geometryczne są zapisane w ich oryginalnej postaci. Jednym z pierwszych programów, które można zaliczyć do zaprezentowanej grupy, jest MacDraw, wydany w roku 1984, razem z linią komputerów Macintosh. Do najnowszych przedstawicieli tej grupy można z kolei zaliczyć Adobe Illustrator, CorelDraw oraz darmowy edytor xfig. Jest także wiele edytorów wyspecjalizowanych w specyficznych zastosowaniach, na przykład diagramy elektryczne, elektroniczne oraz VLSI, mapy topograficzne, fonty komputerowe.
Algorytmy generowania grafiki 2D
Rasteryzacja
- algorytm Bresenhama dla linii
- krzywe Béziera
Przycinanie
- algorytm Cohena-Sutherlanda
- algorytm Liama-Barsky'ego
Symulowanie kolorów