grafika komputerowa 2D - 2D computer graphics

Grafika komputerowa 2D to komputerowe generowanie obrazów cyfrowych — głównie z modeli dwuwymiarowych (takich jak modele geometryczne 2D , tekst i obrazy cyfrowe) oraz za pomocą specyficznych dla nich technik. Może odnosić się do dziedziny informatyki obejmującej takie techniki lub do samych modeli.

Raster graficzne skrzaty (z lewej) i maski (po prawej)

Grafika komputerowa 2D jest wykorzystywana głównie w aplikacjach, które pierwotnie zostały opracowane w oparciu o tradycyjne technologie drukowania i rysowania , takie jak typografia , kartografia , rysunek techniczny , reklama itp. W tych zastosowaniach dwuwymiarowy obraz nie jest tylko reprezentacją rzeczywistego obiekt światowy, ale niezależny artefakt o wartości dodanej semantycznej; Dlatego preferowane są modele dwuwymiarowe, ponieważ dają bardziej bezpośrednią kontrolę nad obrazem niż grafika komputerowa 3D (której podejście jest bardziej zbliżone do fotografii niż typografii).

W wielu dziedzinach, takich jak DTP , inżynieria i biznes , opis dokumentu oparty na technikach grafiki komputerowej 2D może być znacznie mniejszy niż odpowiadający mu obraz cyfrowy — często o współczynnik 1/1000 lub większy. Ta reprezentacja jest również bardziej elastyczna, ponieważ może być renderowana w różnych rozdzielczościach w celu dopasowania do różnych urządzeń wyjściowych . Z tych powodów dokumenty i ilustracje są często przechowywane lub przesyłane jako pliki graficzne 2D .

Grafika komputerowa 2D rozpoczęła się w latach 50. XX wieku, oparta na urządzeniach do grafiki wektorowej . W następnych dziesięcioleciach zostały one w dużej mierze wyparte przez urządzenia oparte na rastrze . Język PostScript i protokół X Window System były przełomowymi osiągnięciami w tej dziedzinie.

Techniki

Modele graficzne 2D mogą łączyć modele geometryczne (zwane również grafiką wektorową ), obrazy cyfrowe (zwane również grafiką rastrową ), tekst do złożenia (zdefiniowany przez zawartość, styl i rozmiar czcionki , kolor, położenie i orientację), funkcje i równania matematyczne , i więcej. Komponenty te można modyfikować i manipulować za pomocą dwuwymiarowych przekształceń geometrycznych, takich jak przesunięcie , obrót , skalowanie . Na ilustracjach obiektowych obraz opisany jest pośrednio przez obiekt obdarzoną samodzielnego renderowania sposobu postępowania -a który wyznacza kolorów w obrazie w pikseli za pomocą dowolnego algorytmu. Skomplikowane modele mogą być budowane poprzez łączenie prostszych obiektów, w paradygmatach z programowania obiektowego .

Translacja przesuwa każdy punkt figury lub odstępu o tę samą wartość w danym kierunku.
Odbicie na osi następuje odbicie w stosunku do drugiej osi równoległej do pierwszej prowadzi do całkowitego ruchu, który jest translacji.

W geometrii euklidesowej , o tłumaczenie porusza każdy punkt stałą odległość w określonym kierunku. Translację można opisać jako ruch sztywny : inne ruchy sztywne obejmują obroty i odbicia. Translację można również interpretować jako dodanie stałego wektora do każdego punktu lub jako przesunięcie początku układu współrzędnych . Operator tłumaczenie jest operator taki sposób, że

Jeśli v jest ustalonym wektorem, to translacja T v będzie działała jako T v ( p ) = p + v .

Jeśli T jest tłumaczeniem, to obraz z podzbiorem A w ramach funkcji T jest tłumaczenie z A przez T . Tłumaczenie A przez T v jest często pisane A + v .

W przestrzeni euklidesowej każde tłumaczenie jest izometrią . Zbiór wszystkich tłumaczenia formy zespół przesuwający T , która jest izomorficzny samej przestrzeni, a normalne podgrupy z euklidesowa grupy E ( n ). Grupa iloraz z E ( n ) przez T jest izomorficzny w ortogonalne grupy O ( n )

E ( n ) / TO ( n ).

Tłumaczenie

Ponieważ translacja jest transformacją afiniczną, ale nie transformacją liniową , współrzędne jednorodne są zwykle używane do reprezentowania operatora translacji przez macierz, a tym samym do uczynienia go liniowym. Zatem zapisujemy trójwymiarowy wektor w = ( w x , w y , w z ) używając 4 jednorodnych współrzędnych jako w = ( w x , w y , w z , 1).

Aby przesunąć obiekt o wektor v , każdy jednorodny wektor p (zapisany w jednorodnych współrzędnych) musiałby zostać pomnożony przez tę macierz translacji :

Jak pokazano poniżej, mnożenie da oczekiwany wynik:

Odwrotność macierzy translacji można uzyskać odwracając kierunek wektora:

Podobnie iloczyn macierzy translacji otrzymujemy przez dodanie wektorów:

Ponieważ dodawanie wektorów jest przemienne , mnożenie macierzy translacji jest zatem również przemienne (w przeciwieństwie do mnożenia dowolnych macierzy).

Obrót

W liniowym Algebra , A macierz obrotu jest matryca , która jest używana do wykonywania ruchu obrotowego w przestrzeni euklidesowej .

obraca punkty w płaszczyźnie xy - kartezjańskiej w kierunku przeciwnym do ruchu wskazówek zegara o kąt θ wokół początku kartezjańskiego układu współrzędnych . Aby wykonać obrót za pomocą macierzy obrotu R , położenie każdego punktu musi być reprezentowane przez wektor kolumnowy v , zawierający współrzędne punktu. Obróconym wektor otrzymać stosując Mnożenie macierzy R v . Ponieważ mnożenie macierzy nie ma wpływu na wektor zerowy (tj. na współrzędne początku), macierze obrotu mogą być używane tylko do opisywania obrotów wokół początku układu współrzędnych.

Macierze rotacji zapewniają prosty algebraiczny opis takich rotacji i są szeroko stosowane do obliczeń w geometrii , fizyce i grafice komputerowej . W przestrzeni dwuwymiarowej obrót można po prostu opisać za pomocą kąta obrotu θ , ale można go również przedstawić za pomocą 4 wpisów macierzy obrotu z 2 wierszami i 2 kolumnami. W przestrzeni trójwymiarowej każdy obrót może być interpretowany jako obrót o dany kąt wokół jednej ustalonej osi obrotu (patrz twierdzenie Eulera o obrocie ), a zatem może być po prostu opisany przez kąt i wektor z 3 wpisami. Jednak może być również reprezentowany przez 9 wpisów macierzy rotacji z 3 wierszami i 3 kolumnami. Pojęcie obrotu nie jest powszechnie używane w przypadku wymiarów większych niż 3; istnieje pojęcie przemieszczenia obrotowego , które może być reprezentowane przez macierz, ale bez powiązanej pojedynczej osi lub kąta.

Macierze rotacji są macierzami kwadratowymi z rzeczywistymi wpisami. Dokładniej można je scharakteryzować jako macierze ortogonalne z wyznacznikiem  1:

.

Zestaw wszystkich takich macierzy o rozmiarze n tworzy grupy , znany jako specjalnej grupy prostopadłym SO ( n ) .

W dwóch wymiarach

Obrót wektora w kierunku przeciwnym do ruchu wskazówek zegara o kąt θ . Wektor jest początkowo wyrównany z osią x.

W dwóch wymiarach każda macierz rotacji ma postać:

.

To obraca wektory kolumnowe za pomocą następującego mnożenia macierzy :

.

Zatem współrzędne (x',y') punktu (x,y) po obrocie wynoszą:

,
.

Kierunek obrotu wektora jest przeciwny do ruchu wskazówek zegara, jeśli θ jest dodatnie (np. 90°), a zgodnie z ruchem wskazówek zegara, jeśli θ jest ujemne (np. -90°).

.

Niestandardowa orientacja układu współrzędnych

Obrót o kąt θ z niestandardowymi osiami.

Jeśli używany jest standardowy prawoskrętny kartezjański układ współrzędnych , z osią x po prawej stronie i osią y w górę, obrót R( θ ) jest przeciwny do ruchu wskazówek zegara. Jeśli używany jest lewoskrętny kartezjański układ współrzędnych, z x skierowanym w prawo, ale y skierowanym w dół, R( θ ) jest zgodne z ruchem wskazówek zegara. Takie niestandardowe orientacje są rzadko używane w matematyce, ale są powszechne w grafice komputerowej 2D, która często ma początek w lewym górnym rogu i oś y w dół ekranu lub strony.

Zobacz poniżej inne alternatywne konwencje, które mogą zmienić sens obrotu wytwarzanego przez macierz obrotu .

Wspólne rotacje

Szczególnie przydatne są matryce dla obrotów 90° i 180°:

(obrót o 90° przeciwnie do ruchu wskazówek zegara)
(180° obrót w obie strony – pół obrotu)
(270 ° obrót w lewo, taki sam jak obrót o 90 ° w prawo)

W geometrii euklidesowej , jednolity skalowania ( izotropowe skalowania , jednorodny rozszerzenie , jednokładności ) jest liniową transformację , która powiększa się zwiększa (lub zmniejsza) (zmniejsza) obiektów przez współczynnik skalowania , który jest taki sam we wszystkich kierunkach. Wynik jednolitego skalowania jest podobny (w sensie geometrycznym) do oryginału. Zwykle dopuszcza się współczynnik skali równy 1, dzięki czemu przystające kształty są również klasyfikowane jako podobne. (Niektóre podręczniki szkolne wyraźnie wykluczają taką możliwość, podobnie jak niektóre wykluczają, że kwadraty są prostokątami, a koła nie są elipsami).

Bardziej ogólne jest skalowanie z oddzielnym współczynnikiem skali dla każdego kierunku osi. Nierównomierne skalowania ( anizotropowe skalowania , niejednorodne rozszerzenie ) uzyskuje się, gdy co najmniej jeden z czynników skalowania różni się od innych; szczególnym przypadkiem jest skalowanie kierunkowe lub rozciąganie (w jednym kierunku). Skalowanie nierównomierne zmienia kształt obiektu; np. kwadrat może zmienić się w prostokąt lub równoległobok, jeśli boki kwadratu nie są równoległe do osi skalowania (zachowane są kąty między liniami równoległymi do osi, ale nie wszystkie kąty).

skalowanie

Skalowanie może być reprezentowane przez macierz skalowania. Aby przeskalować obiekt o wektor v = ( v x , v y , v z ), każdy punkt p = ( p x , p y , p z ) musiałby zostać pomnożony przez tę macierz skalowania :

Jak pokazano poniżej, mnożenie da oczekiwany wynik:

Takie skalowanie zmienia średnicę obiektu o współczynnik między współczynnikami skali, powierzchnię o współczynnik między najmniejszym a największym iloczynem dwóch współczynników skali oraz objętość o iloczyn wszystkich trzech.

Skalowanie jest jednolite wtedy i tylko wtedy, gdy współczynniki skalowania są równe ( v x = v y = v z ). Jeśli wszystkie z wyjątkiem jednego ze współczynników skali są równe 1, mamy skalowanie kierunkowe.

W przypadku, gdy v x = v y = v z = k , skalowanie nazywane jest również powiększeniem lub rozszerzeniem o współczynnik k, zwiększający powierzchnię o współczynnik k 2 i objętość o współczynnik k 3 .

Skalowanie w najogólniejszym sensie to dowolne przekształcenie afiniczne z macierzą diagonalizowalną . Obejmuje to przypadek, w którym trzy kierunki skalowania nie są prostopadłe. Obejmuje również przypadek, w którym jeden lub więcej czynników skali jest równych zero ( projekcja ), oraz przypadek jednego lub większej liczby ujemnych czynników skali. To ostatnie odpowiada kombinacji właściwego skalowania i pewnego rodzaju odbicia: wzdłuż linii w określonym kierunku bierzemy odbicie w punkcie przecięcia z płaszczyzną, która nie musi być prostopadła; dlatego jest bardziej ogólne niż zwykłe odbicie w płaszczyźnie.

Korzystanie z jednorodnych współrzędnych

W geometrii rzutowej , często używanej w grafice komputerowej , punkty są przedstawiane za pomocą współrzędnych jednorodnych . Aby przeskalować obiekt o wektor v = ( v x , v y , v z ), każdy jednorodny wektor współrzędnych p = ( p x , p y , p z , 1) musiałby zostać pomnożony przez tę rzutową macierz transformacji :

Jak pokazano poniżej, mnożenie da oczekiwany wynik:

Ponieważ ostatni składnik jednorodnej współrzędnej może być postrzegany jako mianownik pozostałych trzech składników, jednolite skalowanie przez wspólny współczynnik s (skalowanie jednolite) można osiągnąć za pomocą tej macierzy skalowania:

Dla każdego wektora p = ( p x , p y , p z , 1) mielibyśmy

które byłyby homogenizowane do

Bezpośrednie malowanie

Wygodnym sposobem tworzenia złożonego obrazu jest rozpoczęcie od pustej mapy rastrowej „canvas” (tablicy pikseli , zwanej również bitmapą ) wypełnionej jednolitym kolorem tła, a następnie „rysowanie”, „malowanie” lub „wklejanie” na nim proste plamy koloru, w odpowiedniej kolejności. W szczególności, materiał może być bufora ramki na wyświetlaczu komputera .

Niektóre programy ustawiają kolory pikseli bezpośrednio, ale większość będzie polegać na jakiejś bibliotece grafiki 2D lub karcie graficznej maszyny , które zazwyczaj realizują następujące operacje:

  • wklej dany obraz w określonym przesunięciu na płótno;
  • napisz ciąg znaków określoną czcionką, pod zadanym położeniem i kątem;
  • namaluj prosty kształt geometryczny , np. trójkąt określony trzema rogami lub okrąg o podanym środku i promieniu;
  • narysuj odcinek linii , łuk lub prostą krzywą wirtualnym pisakiem o określonej szerokości.

Rozszerzone modele kolorów

Tekst, kształty i linie są renderowane w kolorze określonym przez klienta. Wiele bibliotek i kart udostępnia gradienty kolorów , które są przydatne do generowania płynnie zmieniającego się tła, efektów cieni itp. (Zobacz także cieniowanie Gourauda ). Kolory pikseli mogą być również zaczerpnięte z tekstury, np. obrazu cyfrowego (w ten sposób naśladując wcierane tony ekranowe i legendarną farbę w szachownicę, która była dostępna tylko w kreskówkach ).

Malowanie piksela danym kolorem zwykle zastępuje jego poprzedni kolor. Jednak wiele systemów wspomagania malowania przezroczystych i półprzezroczystych kolorach, które tylko zmieniają dotychczasowe wartości pikseli. Te dwa kolory można również łączyć w bardziej złożony sposób, np. obliczając ich wyłączność bitową lub . Ta technika jest znana jako odwracanie kolorów lub odwracanie kolorów i jest często używana w graficznych interfejsach użytkownika do wyróżniania, rysowania gumką i innego malowania ulotnego — ponieważ ponowne malowanie tych samych kształtów tym samym kolorem przywróci oryginalne wartości pikseli.

Warstwy

2D animowana postać komponowane z tła 3D z wykorzystaniem warstw.

Modele wykorzystywane w grafice komputerowej 2D zazwyczaj nie przewidują trójwymiarowych kształtów, ani trójwymiarowych zjawisk optycznych takich jak oświetlenie, cienie , odbicia , załamania itp. Zwykle jednak potrafią modelować wiele warstw (konceptualnie tuszu, papieru, lub film, nieprzezroczyste, półprzezroczyste lub przezroczyste — ułożone w określonej kolejności.Kolejność jest zwykle określona przez jedną liczbę ( głębokość warstwy lub odległość od widza).

Modele warstwowe są czasami nazywane " grafiką komputerową 2 12 -D". Umożliwiają naśladowanie tradycyjnych technik rysunkowych i drukarskich opartych na folii i papierze, takich jak wycinanie i wklejanie; i umożliwić użytkownikowi edycję dowolnej warstwy bez wpływu na pozostałe. Z tych powodów są one używane w większości edytorów graficznych . Modele warstwowe umożliwiają również lepsze przestrzenne wygładzanie złożonych rysunków i zapewniają model dźwiękowy dla niektórych technik, takich jak połączenia ukośne i reguła parzysty-nieparzysty .

Modele warstwowe są również używane, aby umożliwić użytkownikowi tłumienie niepożądanych informacji podczas przeglądania lub drukowania dokumentu, np. dróg lub linii kolejowych z mapy , niektórych warstw procesu ze schematu układu scalonego lub odręcznych adnotacji z pisma biznesowego.

W modelu opartym na warstwach obraz docelowy jest tworzony przez „malowanie” lub „wklejanie” każdej warstwy, w kolejności zmniejszającej się głębokości, na wirtualnym płótnie. Koncepcyjnie każda warstwa jest najpierw renderowana osobno, dając cyfrowy obraz o pożądanej rozdzielczości, który jest następnie malowany na płótnie, piksel po pikselu. Oczywiście w pełni przezroczyste części warstwy nie muszą być renderowane. Renderowanie i malowanie mogą być wykonywane równolegle, tj. każdy piksel warstwy może być namalowany na płótnie zaraz po wytworzeniu w procedurze renderowania.

Warstwy składające się ze złożonych obiektów geometrycznych (takich jak tekst lub polilinie ) można podzielić na prostsze elementy (odpowiednio znaki lub segmenty linii ), które są następnie malowane jako oddzielne warstwy w określonej kolejności. Jednak to rozwiązanie może tworzyć niepożądane artefakty aliasingu, gdy dwa elementy nakładają się na ten sam piksel.

Zobacz także Portable Document Format#Layers .

Sprzęt komputerowy

Nowoczesne komputerowe wyświetlacze kart graficznych niemal w przeważającej mierze wykorzystują techniki rastrowe, dzieląc ekran na prostokątną siatkę pikseli , ze względu na stosunkowo niski koszt sprzętu wideo opartego na rastrze w porównaniu ze sprzętem do grafiki wektorowej. Większość sprzętu graficznego ma wewnętrzne wsparcie dla operacji blittingu lub rysowania sprite'ów . Koprocesora dedykowany blittingiem jest znany jako blitter układu .

Klasyczne 2D układy graficzne i procesory graficzne z końca 1970 do 1980, wykorzystywanych w 8-bitowe na początku 16-bit , gry zręcznościowe , konsole do gier wideo i komputery domowe , obejmują:

Oprogramowanie

Wiele graficznych interfejsów użytkownika (GUI), w tym macOS , Microsoft Windows lub X Window System , opiera się głównie na koncepcjach graficznych 2D. Takie oprogramowanie zapewnia wizualne środowisko do interakcji z komputerem i zwykle zawiera pewną formę menedżera okien, aby pomóc użytkownikowi w koncepcyjnym rozróżnieniu różnych aplikacji. Interfejs użytkownika w poszczególnych aplikacjach ma zazwyczaj charakter 2D, częściowo ze względu na fakt, że większość popularnych urządzeń wejściowych , takich jak mysz , jest ograniczona do dwóch wymiarów ruchu.

Grafika 2D jest bardzo ważna w urządzeniach peryferyjnych sterujących, takich jak drukarki, plotery, maszyny do cięcia arkuszy itp. Były one również wykorzystywane w większości wczesnych gier wideo ; i nadal są używane do gier karcianych i planszowych, takich jak pasjans , szachy , mahjongg itp.

Edytory grafiki 2D lub programy do rysowania to oprogramowanie na poziomie aplikacji do tworzenia obrazów, diagramów i ilustracji poprzez bezpośrednią manipulację (za pomocą myszy, tabletu graficznego lub podobnego urządzenia) prymitywów grafiki komputerowej 2D. Te edytory generalnie dostarczają prymitywy geometryczne, jak również obrazy cyfrowe ; a niektóre nawet wspierają modele proceduralne. Ilustracja jest zwykle reprezentowana wewnętrznie jako model warstwowy, często z hierarchiczną strukturą, aby edycja była wygodniejsza. Te edytory zazwyczaj generują pliki graficzne, w których warstwy i prymitywy są oddzielnie zachowywane w ich oryginalnej formie. MacDraw , wprowadzony w 1984 roku wraz z linią komputerów Macintosh , był wczesnym przykładem tej klasy; ostatnimi przykładami są komercyjne produkty Adobe Illustrator i CorelDRAW oraz bezpłatne edytory, takie jak xfig lub Inkscape . Istnieje również wiele edytorów grafiki 2D specjalizujących się w niektórych typach rysunków, takich jak schematy elektryczne, elektroniczne i VLSI, mapy topograficzne, czcionki komputerowe itp.

Edytory obrazów specjalizują się w manipulowaniu obrazami cyfrowymi , głównie za pomocą odręcznych operacji rysowania/malowania i przetwarzania sygnałów . Zwykle używają paradygmatu bezpośredniego malowania, w którym użytkownik kontroluje wirtualne pisaki, pędzle i inne narzędzia artystyczne z wolnej ręki, aby nakładać farbę na wirtualne płótno. Niektóre edytory obrazów obsługują model wielowarstwowy; jednak w celu obsługi operacji przetwarzania sygnału, takich jak rozmycie, każda warstwa jest zwykle przedstawiana jako obraz cyfrowy. Dlatego wszelkie prymitywy geometryczne dostarczone przez edytor są natychmiast konwertowane na piksele i malowane na płótnie. Czasami używa się nazwy edytor grafiki rastrowej, aby przeciwstawić to podejście do ogólnych edytorów, które również obsługują grafikę wektorową . Jednym z pierwszych popularnych edytorów graficznych było jabłko „s MacPaint , towarzysz MacDraw . Współczesnymi przykładami są darmowy edytor GIMP oraz komercyjne produkty Photoshop i Paint Shop Pro . Ta klasa również obejmuje wiele wyspecjalizowanych edytorów — dla medycyny, teledetekcji, fotografii cyfrowej itp.

Animacja rozwojowa

Wraz z odrodzeniem animacji 2D, bezpłatne i zastrzeżone pakiety oprogramowania stały się szeroko dostępne dla amatorów i profesjonalnych animatorów. Głównym problemem związanym z animacją 2D są wymagania dotyczące robocizny. Dzięki oprogramowaniu takiemu jak RETAS UbiArt Framework i Adobe After Effects kolorowanie i komponowanie można wykonać w krótszym czasie.

Opracowano różne podejścia, aby wspomóc i przyspieszyć proces cyfrowej animacji 2D. Na przykład, generując grafikę wektorową w narzędziu takim jak Adobe Flash , artysta może zastosować sterowane programowo automatyczne kolorowanie i przechodzenie między .

Programy takie jak Blender pozwalają użytkownikowi na animację 3D, animację 2D lub łączenie obu w swoim oprogramowaniu, umożliwiając eksperymentowanie z wieloma formami animacji.

Zobacz też

Bibliografia