Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen §2Objekttransformationen §3Objektrepräsentation und -Modellierung §4Sichttransformationen.

Ähnliche Präsentationen


Präsentation zum Thema: "Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen §2Objekttransformationen §3Objektrepräsentation und -Modellierung §4Sichttransformationen."—  Präsentation transkript:

1 Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen §2Objekttransformationen §3Objektrepräsentation und -Modellierung §4Sichttransformationen §5Kurven und Flächen §6Rendering und Visibilität §7Mapping-Techniken CG – 2.1

2 1.1 Begriffe Computergrafik, Graphische Datenverarbeitung (computer graphics) Grobe Einordnung: Synthese von Bildern mit Hilfe des Rechners Erzeugung eines Bildes (einer Bitmap) aus einer (geometrischen) Beschreibung einer Szene Bei zeitabhängigen Szenenbeschreibungen: Animation Ausgabemedien: Bildschirm, Drucker, Plotter, Fräser, Projektor(en),... CG – 1.2

3 1.1 Begriffe Computergrafik (cont.) Die Disziplin der Computergrafik beschäftigt sich u. a. mit: Repräsentation (Datenstrukturen!) und Verarbeitung (Algorithmen!) geometrischer, dreidimensionaler Objekte im Rechner Berechnung von Bilddarstellungen aufgrund solcher Datenstrukturen (bis hin zu foto-realistischen Bildern), das sog. Rendern Grafik-Hardware, Grafik-Software Grafisch-interaktive Systeme CG – 1.3

4 1.1 Begriffe Computergrafik (cont.) Modeling is figuring out the shape of it Rendering is how to make a picture of it Animation is figuring out how it moves with time Jim Blinn, SIGGRAPH98 Keynote Address, Computer Graphics 33(1), pp CG – 1.4

5 1.2 Grundlagen Einfachste Grafikarchitektur ProzessorFramebuffer Memory CG – 1.5

6 1.2 Grundlagen Der Framebuffer CG – 1.6

7 1.2 Grundlagen Display Processing Unit: Bilddefinition für Ausgabe aufbereiten Rasterisierung, Verdeckungs- /Beleuchtungsberechnung, Anti-Aliasing Schreiben des Framebuffers Video controller (Image Display System) Liest Framebuffer periodisch aus Bild- defi- nition CPU DPU Bilder- zeugungFramebuffer Bild- speicherIDS Bild- darstellungBildrechnerDisplay CG – 1.7

8 1.2 Grundlagen Quelle: FU Hagen CG – 1.8

9 1.2 Grundlagen 3D Grafik – Virtuelle Kamera CG – 1.9

10 1.2 Grundlagen Die Computergrafik-Pipeline / Die Rendering-Pipeline Der Prozess der Bildsynthese, also die Abbildung eines Modells eines Objektes bzw. einer Szene auf ein Bild auf dem Bildschirm nennt man Rendering. Eine konkrete Implementierung dieses Prozesses in Soft- und/oder Hardware beschreibt man als Rendering-Pipeline. Die einzelnen Stufen der Pipeline setzen die noch vorzustellenden Basis-Algorithmen der Computergrafik um. Die einzelnen Stufen können jeweils in Soft- und/oder Hardware implementiert sein! Der Aufbau von Rendering-Pipelines kann sich je nach Art und Umsetzung des Renderings stark unterscheiden! CG – 1.10

11 1.2 Grundlagen Die Computergrafik-Pipeline / Die Rendering-Pipeline (cont.) Genereller Aufbau: database traversal modeling transformation viewing operation visible-surface determination scan conversion shading image object model or scene model / scene graph front-end (geometry processing) back-end (rasterization) CG – 1.11

12 1.2 Grundlagen Der Visualisierungsprozess / Die Visualisierungs-Pipeline Daten Pre-Processing transform the data into something we can understand Computer- grafik Kognition Interaktion Daten sammeln CG – 1.12

13 1.2 Grundlagen Softwarearchitekturen Anwendungsumgebung high-level 3D-API * low-level 3D-API * Hardware 3D-Anwendung * API bedeutet "application programming interface" CG – 1.13

14 1.3 Graphische Eingabegeräte Im Idealfall: Eingabegeräte abgestimmt auf Dimension der graphischen Darstellung: 2D: Navigation nur in Ebene notwendig 2D Eingabegerät (Maus, Tastatur, …) 3D: Navigation in Ebene unzureichend 3D Eingabegerät (Kinect, Wii-Mote, …) CG – 1.14 Bilder:

15 Spaceball Fixierte Gummikugel Kugel misst Kräfte Druck in x-, y- und z- Richtung verursacht Verschiebung (3 Freiheitsgrade) Drehmomente verursachen Rotation (3 Freiheitsgrade) CG – 1.15 Spacemouse Gummischeibe 6 LEDs mit Schlitzblende und Fotosensor Prinzip analog zur Maus 6 Freiheitsgrade 1.3 Graphische Eingabegeräte

16 Haptische Geräte Force Feedback durch Exoskelett und Bowdenzüge CG – 1.16

17 1.4 Bildschirmtechnologien Begriffe Punktgröße (dot size): Durchmesser eines einzelnen Punktes auf dem Ausgabemedium, Einheit: [mm], [inch] Adressierbarkeit: Anzahl individuell erzeugbarer Punkte pro Längeneinheit, Beispiel: 1280 Pixel / 20 Punktabstand: 1/Adressierbarkeit Auflösung (resolution): Anzahl unterscheidbarer Punkte oder Linien pro Längeneinheit, Einheit: [L/mm], [dpi] 1mm Adressierbarkeit = maximal zur Verfügung stehende Auflösung des Monitors CG – 1.17

18 1.4 Bildschirmtechnologien Röhrenbildschirm / CRT mit Rasterdisplay, einfarbig (cont.) CG – 1.18

19 1.4 Bildschirmtechnologien Röhrenbildschirm / CRT (cathode ray tube) mit Rasterdisplay, einfarbig (cont.) Phosphorschicht Auftreffende Elektronen regen Phosphor zur Fluoreszenz an Phosphor leuchtet nach: Phosphoreszenz Dauer des Nachleuchtens: Persistenz (10-60 ms) Bildwiederholfrequenz ( Hz): Aufgrund geringer Persistenz muss das Bild ständig neu aufgebaut werden Große Persistenz + kleine Frequenz: Bild verschmiert Kleine Persistenz + hohe Frequenz: sonst Flimmern CG – 1.19

20 1.4 Bildschirmtechnologien Röhrenbildschirm / CRT (cathode ray tube) mit Rasterdisplay, farbig Prinzip: Farb-Fernseher Mischung der Farben aus den Grundfarben Rot, Grün, Blau Aufbau entspricht s/w-Röhrenbildschirm, zusätzlich: Drei Elektronenkanonen (deltaförmig angeordnet) Drei Phosphorpunkte (rot, grün, blau) pro Pixel deltaförmig auf der Phosphorschicht angeordnet Lochmaske vor der Phosphorschicht Elektronenstrahlen (moduliert) schießen gleichzeitig durch die Lochmaske Konvergenzproblem: Elektronenstrahlen stoßen einander ab CG – 1.20

21 1.4 Bildschirmtechnologien Flüssigkristallbildschirm / LCD LCD = Liquid Crystal Display Zwei Glasplatten im Abstand weniger μm schließen Flüssigkristall ein Über zwei transparente Elektroden an beiden Glasplatten kann ein elektrisches Feld im Flüssigkristall erzeugt werden Einrahmung der Anordnung durch zwei um 90 0 gedrehte Polarisationsfilter Bildschirm wird durch künstliches Licht von hinten beleuchtet; dieses wird durch hinteren Polarisationsfilter polarisiert CG – 1.21

22 1.4 Bildschirmtechnologien Flüssigkristallbildschirm / LCD (cont.) CG – 1.22

23 1.4 Bildschirmtechnologien Flüssigkristallbildschirm / LCD (cont.) Die organischen Moleküle im Flüssigkristall drehen die Polarisationsrichtung um 90 0, falls kein elektrisches Feld anliegt Licht passiert zweiten Filter ungehindert CG – 1.23

24 1.4 Bildschirmtechnologien Flüssigkristallbildschirm / LCD (cont.) Bei maximalem elektrischen Feld wird die Polarisations- richtung idealerweise nicht gedreht Licht passiert zweiten Filter nicht CG – 1.24

25 1.4 Bildschirmtechnologien Flüssigkristallbildschirm / LCD (cont.) Für Farbdarstellungen werden drei Flüssigkristall- zellen zu einem RGB-Farbtripel zusammengefasst Die drei Elementarfarben werden über Farbfilter über den Zellen erzeugt Die Zellen werden matrixartig angeordnet CG – 1.25

26 1.4 Bildschirmtechnologien Plasma-Displays Prinzip 1: Plasma Adressed Liquid Crystal (PALC) Von SONY entwickelt Funktionsweise analog des LCD-Displays Statt Flüssigkristall findet Plasma Verwendung Visuelles Ergebnis wie bei LCD-Displays Prinzip 2: Plasma Display Panel (PDP) Wahre Plasmatechnik Pixel sind ca. 0,65mm groß und in 3 Kammern (RGB) eingeteilt In Kammern: Neutral- bzw. Edelgas (Hauptbestandteile: Neon und Xenon) Strom auf Adressierelektrode: Gas Plasma UV-Strahlen des Plasmas regen Phosphor an CG – 1.26

27 1.4 Bildschirmtechnologien Plasma-Displays (cont.) Prinzip 2: Plasma Display Panel (PDP) CG – 1.27

28 1.4 Bildschirmtechnologien Plasma-Displays (cont.) Lichterzeugung mittels Gasentladung Matrix von Gasentladungszellen mit bi-stabilem Zustand: Pixel anzeigen bei Zündspannung Pixel leuchtet bei mittlerer Brennspannung Pixel löschen bei Löschspannung CG – 1.28 Quelle: Uni Karlsruhe Abb.: Ansteuerung einer Gasentladungszelle

29 1.4 Bildschirmtechnologien Plasma-Displays (cont.) Helligkeitssteuerung Gas ändert nur sprunghaft Aggregatzustand Problem: Erzeugung verschiedener Helligkeitsstufen? Lösung: Trägheit des menschlichen Auges nutzen und Gas früher ausschalten Phosphoranregung geringer Vorteile der Plasmatechnologie: Geräte relativ leicht Hohe Auflösungen und Bilddiagonalen möglich Nachteile: Vergleichsweise hoher Stromverbrauch I.d.R. Lüfter nötig (Geräusch!) Vergleichsweise hohe Produktionskosten CG – 1.29

30 1.4 Bildschirmtechnologien OLED-Bildschirme Lichtemittierende Dioden (LED) aus Kunststoffen Vorteile: Hoher Kontrast, da selbstleuchtend (LCDs nur Filter) da keine Hintergrundbeleuchtung, sehr dünn Reaktionszeit um ein Vielfaches schneller als bei LCD (mehr als Faktor 1.000) Nachteile: Niedrige Lebensdauer (blau als begrenzender Faktor) Korrosionsanfälligkeit Teurer als LCDs Anwendung vor allem in kleinen Bildschirmen (v.a. hochpreisige Smartphones, Tablets, …) CG – 1.30 Bild oben: Bild links:

31 1.5 3D-Sichtsysteme Shutter-Brille Doppelwandige Brillengläser sind mit LC gefüllt Normaler Bildschirm (>100Hz) zeigt abwechselnd zwei Bilder aus verschiedenen Perspektiven Synchron dazu verdunkelt die Brille abwechselnd das linke und das rechte Glas Synchronisation: Funk Infrarot Kabelgebunden CG – 1.31 Bild: Sony

32 1.5 3D-Sichtsysteme Shutter-Brille CG – 1.32

33 1.5 3D-Sichtsysteme Polarisationsbrille Polarisierte Bilder für das linke bzw. rechte Auge Head Mounted Display Zwei kleine LCD bieten beiden Augen die Ansicht einer 3D Szene aus leicht unterschiedlichen Perspektiven an Virtual Retinal System Bild wird direkt auf die Retina projiziert (zeilenweise) Bild ungefähr eine Armlänge entfernt Durchsichtmodus: regelbare Helligkeit CG – 1.33

34 1.5 3D-Sichtsysteme BOOM: Binocular Omni-Orientation Monitor (Fakespace) Kopfgeführtes Sichtgerät mit stereoskopischer Anzeige Benutzer kann sich innerhalb des Aktionsraums frei bewegen Force Feedback Arme CG – 1.34

35 1.5 3D-Sichtsysteme Responsive Workbench Verwendung der Tisch-Metapher Neigbare Projektionsfläche Rückprojektion 3D durch Shutter-Brille CG – 1.35

36 1.5 3D-Sichtsysteme Powerwall Große Projektionsfläche Stereoskopische Ausgabe 3D durch Polarisations- oder Shutter-Brille 3D-Interaktion (eine Person) Benutzer kann sich innerhalb des Aktionsraums frei bewegen CG – 1.36

37 1.5 3D-Sichtsysteme CAVE Cave Automatic Virtual Environment Immersion über an Wände, Decke und Boden projizierte Stereobilder 3D durch Shutter-Brille Tracking 3D-Surround-Sound CG – 1.37

38 1.5 3D-Sichtsysteme Autoskopische Bildschirme Image Splitter herkömmliches LCD mit abwechselnd einer Pixelspalte für das linke und rechte Auge Streifenmaske blockiert jeweils den Blick auf die jeweils andere Spalte Funktioniert nur bei einem Betrachter und bestimmter Kopfposition CG – 1.38 Quelle: Uni Karlsruhe Abb.:Funktionsprinzip eines Image Splitters

39 1.5 3D-Sichtsysteme Autoskopische Bildschirme Lentikularsystem halbzylindrische Linsen vor Mattscheibe lenken Bilder in rechtes und linkes Auge fester Betrachtungsabstand Quelle: Uni Karlsruhe Abb.:Funktionsprinzip eines Lentikularsystems CG – 1.39

40 1.5 3D-Sichtsysteme Autoskopische Bildschirme Prismensystem Bereich, in dem 3D-Effekt gesehen wird ("Sweetspot") ist normalerweise klein Herkömmliches TFT-Display mit vorgeschaltetem Prismensystem Tracking-Funktion: Prismen werden je nach Position des Betrachters verschoben Quelle: SeeReal CG – 1.40 Abb.:Funktionsprinzip des Prismensystems

41 1.5 3D-Sichtsysteme - Bewertung HMDs Preisgünstig Weites Spektrum an Bewegungen möglich Virtuelle, zwei-händige Interaktionen möglich Immersiv, aber unhandlich Geringe Auflösung und kleines Sichtfeld U.U. Übelkeit durch ungenaues oder langsames Tracking Ein-Benutzer-System CG – 1.41

42 1.5 3D-Sichtsysteme - Bewertung Responsive Workbench Gute Auflöung Sehr natürliche Darstellung Natürliche Arbeitsumgebung (durch Tischmetapher) Virtuelle zwei-händige Interaktionen möglich Multiuser-Betrieb möglich Teuer (ca Euro) Eingeschränktes operationelles Bewegungsfeld CG – 1.42

43 1.5 3D-Sichtsysteme - Bewertung Powerwall / CAVE Hohe Auflösung, großes Sichtfeld Ein aktiver und zahlreiche passive Nutzer Integration von echten Objekten im CAVE Multiuser-Betrieb möglich Sehr teuer (Powerwall ab Euro, CAVE ab Euro) U.U. Übelkeit durch falsche Stereoskopieberechnung oder ungenaues / langsames Tracking CG – 1.43

44 1.6 Rastergrafik Rasterung Motivation: Die Rasterbildschirmtechnologie erfordert die Zerlegung aller darzustellenden geometrischen Objekte in Bildschirmpunkte. Rasterungs-Prozess Problemstellung: (am Beispiel einer Linie/Geraden) Darstellung einer Linie auf einem Rasterbildschirm erfordert die Bestimmung der am besten passenden Punkte im Raster bzw. Gitter. geeignete ganzzahlige Rundung CG – 1.44

45 1.6 Rastergrafik Rasterung von Linien Beispiel: Mögliche Rasterkandidaten P 1 =(x 1,y 1 ) P 2 =(x 2,y 2 ) CG – 1.45

46 1.6 Rastergrafik Rasterung von Linien (cont.) Beispiel: Rasterkandidaten P 1 =(x 1,y 1 ) P 2 =(x 2,y 2 ) CG – 1.46

47 1.6 Rastergrafik Rasterung von Linien (cont.) Anforderungen: Linien sollen gerade erscheinen Linien sollen gleichmäßig hell erscheinen Helligkeit soll unabhängig von Richtung sein Linien sollen konstante Dicke haben Linien sollen schnell gezeichnet werden Algorithmus muss leicht in Hardware implementierbar sein CG – 1.47

48 1.6 Rastergrafik Rasterung von Linien (cont.): Darstellung von Linien Gegeben: zwei Punkte Gesucht: Beschreibung der Linie zwischen P 1 und P 2 1.Parametrisch: 2.Funktional: 3.Implizit: CG – 1.48

49 1.6 Rastergrafik Rasterung von Linien (cont.): Naiver Algorithmus P 1 und P 2 gegeben in Integer-Koordinaten Algorithmus benutzt funktionale Darstellung: Durchlauf von x 1 nach x 2 im Pixelabstand, y-Werte berechnen und runden, zeichnen: double m = (y 2 -y 1 )/(x 2 -x 1 ); double b = y 1 -m*x 1 for (int x=x 1 ; x<=x 2 ; x++) { double y=m*x+b; setPixel(x,round(y)); } CG – 1.49

50 1.6 Rastergrafik Rasterung von Linien (cont.) Probleme Gleitkommawerte Divisionen und Multiplikationen Rundungen senkrechte Linien (Division durch 0!) Aussehen der Linien bei verschiedenen Steigungen m DDA-Algorithmus (digital differential analyzer), Digitaler Integrierer Abb.: Rasterungen mit dem naiven Algorithmus Quelle: Uni Magdeburg CG – 1.50

51 1.6 Rastergrafik Rasterung von Linien (cont.) Bresenham- / Midpoint-Line-Algorithmus für Geraden: Keine Divisionen, nur Integer-Arithmetik Abhängig von der Steigung wird die x- oder y- Koordinate immer um eine Einheit geändert. Die andere Koordinate wird entweder nicht oder ebenfalls um eine Einheit geändert, entsprechend der kleineren Abweichung der Geraden zum nächsten Gitterpunkt in Koordinatenrichtung Oktant P2P2 x y P1P1 2. hier: Ursprung des zugeordneten Koordinatensystems in P 1 1. Oktant (0 Steigung 1) P 1 und P 2 auf Raster CG – 1.51

52 1.6 Rastergrafik Rasterung von Linien (cont.) CG – 1.52 Zuletzt gesetztes Pixel ist P Muss als nächstes NE oder E gesetzt werden? Abstände von NE und E zur Linie bestimmen und vergleichen Leichter: Liegt M = (x+1, y+½) ober- oder unterhalb der Linie? Wähle d = F(M) = F(x+1, y+½) als Entscheidungsvariable F(M) > 0 NE ist nächstes Pixel F(M) 0 E ist nächstes Pixel Wie berechnet man F(M) ? inkrementell Quelle: Uni Magdeburg

53 1.6 Rastergrafik Rasterung von Linien (cont.) CG – Fall NE als nächstes Pixel ist nächster Mittelpunkt 2. Fall E als nächstes Pixel ist nächster Mittelpunkt Quelle: Uni Magdeburg

54 1.6 Rastergrafik Rasterung von Linien (cont.) Initialisierung von d? Startpunkt P 1 liegt auf der Linie Für den ersten Mittelpunkt M ist dann: ist kein Integer Nur Vorzeichen ist interessant: Multiplikation mit 2 Init: Fall 1: Fall 2: CG – 1.54

55 1.6 Rastergrafik Rasterung von Linien (cont.) Bresenham-Algorithmus, erster Oktant (nur ganzzahlige Operanden und Operationen!): int x, y, d, dx, dy, delta_NE, delta_E; x = x1; y = y1; dx = x2 – x1; dy = y2 – y1; delta_NE = 2*(dy – dx); delta_E = 2*dy; d = (2*dy) – dx; setPixel(x,y); while(x= 0){d+=delta_NE; x++; y++;}// NE else{d+=delta_E; x++;}// E setPixel(x,y); } CG – 1.55 Pseudocode nicht optimiert Erweiterung auf beliebige Steigungen: Vertauschen von x und y, Vorzeichen, etc.

56 1.6 Rastergrafik Rasterung von Linien (cont.) Beispiel: xydplot 003(0,0) 111(1,1) 22(2,2) 327(3,2) 435(4,3) 543(5,4) (0, 0) P1=P1= (5, 4) P2=P2= CG – 1.56 dx = 5, dy= 4 delta_NE= -2 delta_E= 8

57 1.6 Rastergrafik CG – 1.57 Problem: Beide Darstellungen sind rechenaufwändig und erfordern höhere Rechenoperationen! Rasterung von Kreisen Darstellung eines Kreises mit Mittelpunkt (x M, y M ) und Radius r : 1.Implizit: 2.Parametrisch:

58 1.6 Rastergrafik Rasterung von Kreisen (cont.) Mit der Berechnung eines Kreispunktes sind durch Symmetrie sieben weitere Kreispunkte gegeben. Herangehensweise wie bei Geraden Voraussetzungen: Radius Kreissegment im 2. Oktanten CG – 1.58

59 1.6 Rastergrafik Rasterung von Kreisen (cont.) CG – 1.59 Zuletzt gesetztes Pixel ist P Muss als nächstes E oder SE gesetzt werden? Abstände von E und SE zum Kreis berechnen und vergleichen Leichter: Liegt M = (x+1, y-½) ober- oder unterhalb der Linie? Wähle d = F(M) = F(x+1, y-½) als Entscheidungsvariable F(M) < 0 E ist nächstes Pixel F(M) 0 SE ist nächstes Pixel Wie berechnet man F(M) ? inkrementell Quelle: Uni Magdeburg

60 1.6 Rastergrafik Rasterung von Kreisen (cont.) CG – Fall E als nächstes Pixel M 1 ist nächster Mittelpunkt Quelle: Uni Magdeburg 2. Fall SE als nächstes Pixel M 2 ist nächster Mittelpunkt

61 1.6 Rastergrafik Rasterung von Kreisen (cont.) Initialisierung von d ? Startpunkt ist (0,r), d.h.: Nur Vorzeichen von d interessant: Multiplikation mit 4 Erweiterung: Inkrementelle Berechnung von Keine Multiplikationen CG – 1.61 int x, y, d, delta_SE, delta_E; x = 0;y = r; d = 5–4*r; setPixel(x,y); setPixel(-x,y);... // Symmetrie while(y > x) { if (d >= 0){delta_SE = 4*(2*(x-y)+5); d+=delta_SE; x++; y--;}// SE else{delta_E = 4*(2*x+3); d+=delta_E; x++;}// E setPixel(x,y); setPixel(-x,y);...// Sym. }

62 1.6 Rastergrafik – Füllalgorithmen Gegeben: Polygon oder begrenzter Bereich durch Pixelmenge geometrische Beschreibung (Polygone, Kreise, etc.) Gesucht: Einfärbung des Bereichs mit einer Füllfarbe oder einem Muster bzw. einer Schraffur Beispiele: Balkendiagramme, Flächen, Körper etc. CG – 1.62

63 1.6 Rastergrafik – Füllalgorithmen Füllen von Pixelmengen: Saatkorn-Methoden/seed fill Gegeben: Gerastertes Polygon als Rand-Pixelmenge Startpixel (Saatkorn, seed), das festlegt wo innen ist Gesucht: Alle inneren Pixel sind einzufärben Zusammenhang von Gebieten: Welche Pixel sind benachbart? 8-fach zusammenhängend 4-fach zusammenhängend CG – 1.63

64 1.6 Rastergrafik – Füllalgorithmen Bemerkungen Füllalgorithmen mit 8 Freiheitsgraden (Bewegungsrichtungen) können auch 4-fach zusammenhängende Gebiete füllen. Problem: 4-fach zusammenhängende Gebiete mit gemeinsamen Ecken Füllalgorithmen mit 4 Freiheitsgraden können keine 8-fach zusammenhängenden Gebiete füllen CG – 1.64

65 1.6 Rastergrafik – Füllalgorithmen Man unterscheidet nach der Art der Gebietsdefinition: Boundary-Fill-Algorithmus für randdefinierte Gebiete Input: Startpunkt (Saatkorn), Farbe der Begrenzungskurve, Füllfarbe oder Muster Algorithmus: Vom Startpixel ausgehend werden rekursiv Nachbarpixel umgefärbt, bis Pixel mit der Farbe der Begrenzungskurve (oder bereits umgefärbte Pixel) erreicht werden; dann Abbruch CG – 1.65

66 1.6 Rastergrafik – Füllalgorithmen Man unterscheidet nach der Art der Gebietsdefinition: (cont.) Flood/Interior-Fill-Algorithmus für inhaltsdefinierte Gebiete Input: Startpunkt (Saatkorn), Farbe der umzufärbenden Pixel, Füllfarbe oder Muster Algorithmus: Vom Startpixel ausgehend werden rekursiv Nachbarpixel gleicher Farbe umgefärbt, bis Pixel mit abweichender Farbe erreicht werden; dann Abbruch CG – 1.66

67 1.6 Rastergrafik – Füllalgorithmen Einfacher Saatkorn-Algorithmus (4 Bewegungsrichtungen, randdefiniertes Gebiet, FILO/LIFO-Prinzip) Eventuell werden Pixel mehrfach im Stack abgelegt (und gefärbt)! Empty(stack); Push(stack, seed-pixel); while(stack not empty) { pixel = Pop(stack); setColor(pixel, FillColor); for each of the 4-connected pixels p i { if(! ((p i == boundary_pixel) || (colorOf(p i ) == FillColor))) Push(stack, p i ); } } hier z. B.: CG – 1.67

68 Rastergrafik – Füllalgorithmen Beispiel: (die Zahlen geben die Position der Pixel im Stack an) CG – 1.68

69 Rastergrafik – Füllalgorithmen Beispiel: Gebiet mit Loch CG – 1.69

70 1.6 Rastergrafik – Füllalgorithmen Scan-Line-Methode Auch Rasterzeilen-Methode oder Scan Conversion genannt Arbeitet zeilenweise von oben nach unten Ein Pixel der aktuellen Zeile (Scan Line) wird nur dann gezeichnet, wenn es innerhalb des Polygons liegt // einfachster Ansatz für Rechtecke: for(y=y min ; y<=y max ; y++) // Zeile (row) for(x=x min ; x<=x max ; x++) // Spalte (column) if(Inside(polygon, x, y) SetPixel(x,y); CG – 1.70 Für geometrisch als auch für pixelweise definierte Gebiete Sehr langsam

71 1.6 Rastergrafik – Füllalgorithmen Verbesserung durch Ausnutzung von Kohärenz (Zusammenhängen) Verfahren basiert auf dem Prinzip der Zeilenkohärenz: Benachbarte Pixel auf einer Zeile besitzen höchstwahrscheinlich die gleichen Intensitätswerte. Pixelcharakteristik (Intensität) ändert sich nur dort, wo ein Schnittpunkt einer Polygonkante mit einer Scan Line vorliegt, d.h. der Bereich zwischen zwei Schnittpunkten gehört zum Polygon oder nicht. CG – 1.71

72 1.6 Rastergrafik – Füllalgorithmen Beispiel: CG – 1.72 Scan Line y=2: Schnitt mit Polygon für x { 1, 8 } Scan Line y=4: Schnitt mit Polygon für x { 1, 4, 6, 8 } P1P1 P2P2 P3P3 P4P4 P5P Scan Line y=2 Scan Line y=4

73 1.6 Rastergrafik – Füllalgorithmen Beispiel: CG – 1.73 Scan Line y=2: Unterteilung der Scan Line in 3 Bereiche: x < 1 :außerhalb des Polygons 1 x 8 :innerhalb des Polygons x > 8 :außerhalb des Polygons P1P1 P2P2 P3P3 P4P4 P5P

74 1.6 Rastergrafik – Füllalgorithmen Beispiel: CG – 1.74 Scan Line y=4: Unterteilung der Scan Line in 5 Bereiche: x < 1 :außerhalb des Polygons 1 x 4 :innerhalb des Polygons 4 < x < 6 :außerhalb des Polygons 6 x 8 :innerhalb des Polygons x > 8 :außerhalb des Polygons P1P1 P2P2 P3P3 P4P4 P5P

75 1.6 Rastergrafik – Füllalgorithmen Wahl der Scan Lines: CG – 1.75 Scan Lines bei y=n mit ganzzahligem n Pixelaktivierung: linke Pixelseite im Intervall Problem: ggf. zu viele Pixel aktiviert Lösung: Scan Lines durch Pixelmitte Pixelaktivierung: Pixelmitte liegt rechts vom Schnittpunkt der Scanline mit dem Polygon

76 1.6 Rastergrafik – Füllalgorithmen Einfacher Kanten-Listen-Algorithmus (ordered edge list algorithm) Funktionsweise: a) Preprocessing b) Scan Conversion Teil a): Preprocessing: Ermittle (z.B. mit Bresenham-Algorithmus) für jede Polygonkante die Schnittpunkte mit den Scan Lines in der Pixelmitte. Ignoriere dabei horizontale Kanten. Speichere jeden Schnittpunkt (x, y+½) in einer Liste. Sortiere die Liste dann von oben nach unten und von links nach rechts. da Scan Lines durch Pixelmitte gehen! CG – 1.76

77 1.6 Rastergrafik – Füllalgorithmen Probleme bei Singularitäten! (Scan Line schneidet das Polygon in einer Ecke) Behandlung durch Fallunterscheidung: Ist die Ecke lokales Extremum, so zählt der Schnitt zweifach. Ist die Ecke kein lokales Extremum, so zählt der Schnitt einfach. Lokales Extremum: y-Werte der Endpunkte der in dieser Ecke beginnenden Polygonseiten sind beide größer oder beide kleiner als der y-Wert der Schnittecke CG – 1.77

78 1.6 Rastergrafik – Füllalgorithmen Teil b): Scan Conversion: Betrachte jeweils zwei direkt aufeinanderfolgende Schnittpunkte (x 1, y 1 ) und (x 2, y 2 ) der Liste, d.h. Listenelemente 1 und 2, Listenelemente 3 und 4, usw. Aufgrund des Preprocessings gilt: y = y 1 = y 2 und x 1 x 2 Zeichne alle Pixel auf der Scan Line y, für die gilt: x 1 x+½ x 2 mit ganzzahligem x CG – 1.78

79 1.6 Füllalgorithmen Beispiel: a) Preprocessing: (1, 6.5), (1.5, 6.5) (1, 5.5), (2.5, 5.5), (7.5, 5.5), (8, 5.5) (1, 4.5), (3.5, 4.5), (6.5, 4.5), (8, 4.5) (1, 3.5), (4.5, 3.5), (5.5, 3.5), (8, 3.5) (1, 2.5), (8, 2.5) (1, 1.5), (8, 1.5)./. Scan Lines bei y+½ CG – 1.79 y=1 y=0 y=7 P1P1 P2P2 P3P3 P4P4 P5P

80 1.6 Füllalgorithmen Beispiel: b) Scan Conversion: Achtung: Dies sind nun die Pixelkoordinaten! Denn bei y = 6 gilt: 1 x+½ 1.5 x = 1 (1, 6)./. P1P1 P2P2 P3P3 P4P4 P5P5 CG –

81 1.6 Füllalgorithmen Beispiel: b) Scan Conversion: (1, 6) (1, 5), (2, 5), (7, 5)./. Achtung: Dies sind nun die Pixelkoordinaten! P1P1 P2P2 P3P3 P4P4 P5P5 Denn bei y = 5 gilt: 1x+½ 2.5 x {1,2} 7.5 x+½ 8 x = 7 CG –

82 1.6 Füllalgorithmen Beispiel: b) Scan Conversion: (1, 2), (2, 2), …, (7, 2) (1, 1), (2, 1), …, (7, 1) (1, 6) (1, 5), (2, 5), (7, 5) (1, 4), (2, 4), (3, 4), (6, 4), (7, 4) (1, 3), (2, 3), …, (7, 3)./. Achtung: Dies sind nun die Pixelkoordinaten! P1P1 P2P2 P3P3 P4P4 P5P5 CG –

83 1.6 Rastergrafik – Füllalgorithmen Füllen mit Mustern Muster als Bitmap (Textur) Keine einheitliche Farbe, sondern Zuordnung der Pixel auf Pixel der Textur Abhängig von der Verankerung der Textur, d.h. Lage der Textur bzgl. dem Polygon: Verankerung in linken unteren Polygonecke Verankerung auf dem Hintergrund Quelle: Uni Magdeburg CG – 1.83

84 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing Aliasing: Allgemein versteht man unter Aliasing-Effekten die fehlerhafte Rekonstruktion eines (kontinuierlichen) Ausgangssignals durch eine Abtastung mit zu geringer Frequenz. Nyquist-Theorem Hintergrund: Im Frequenzbereich bandbegrenzte Signale müssen mit mehr als der doppelten Grenzfrequenz abgetastet werden, um eine exakte Rekonstruktion zu ermöglichen. CG – 1.84

85 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Phänomen: Die hochfrequenten (unterabgetasteten) Frequenzen verschwinden nicht einfach, sie erscheinen als neue (falsche!) Frequenzen mit niedrigerer Frequenz. Beispiel: räumliches Aliasing (spatial aliasing) CG – 1.85

86 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Phänomen: (cont.) Pixels are sampled at a rate 2 times the detail frequency Pixels are sampled at a rate less the detail frequency CG – 1.86

87 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Aliasing-Effekte in der Computergrafik: Textur-Artefakte Treppeneffekte beim Rastern von Kurven, jagged edges Verschwinden von Objekten, die kleiner als ein Pixel sind Verschwinden von langen, dünnen Objekten Detailverlust bei komplexen Bildern Aufblinken kleiner Objekte bei Bewegungen / Animationen Bewegungsirritationen bei Animationen (zeitliches Aliasing) CG – 1.87

88 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Aliasing in der Computergrafik – Gruppierungen: Visuelle Effekte, die auf echtes Aliasing zurückzuführen sind Beispiel: Schachbrettmuster Visuelle Artefakte, die auf Rasterkonvertierungseffekte zurückgehen Beispiel: Treppeneffekte bei schrägen Linien Zusätzlich: Unterscheidung zwischen örtlichem (spatial) und zeitlichem (temporal) Aliasing Beispiel: scheinbar rückwärts drehende Wagenräder in Westernfilmen CG – 1.88

89 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Anti-Aliasing im Umfeld der Computergraphik: Alle Methoden (z. B. Oversampling, Filterung) haben das Ziel, Aliasing-Effekten entgegenzuwirken Ein echtes Beseitigen ist oft (schon theoretisch) nicht möglich: Falls Signale nicht bandbegrenzt sind, hilft zwar höhere Abtastfrequenz (Oversampling), beseitigt aber Probleme nicht! Bei Effekten, die auf Rasterkonvertierung zurückzuführen sind, spricht man bei Anti-Aliasing- Verfahren auch von Verfahren zur Bildkantenglättung. CG – 1.89

90 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Beispiel: Textur-Artefakte, unendliches Schachbrettmuster visuelle Artefakte, wenn Periodizität in der Textur Größenordnung der Pixel erreicht zweifaches Oversampling (doppelte Frequenz) verringert Artefakte CG – 1.90

91 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Beispiel: Treppeneffekte, jagged edges, jaggies Treppeneffekte, da das Zeichnen von Punkten nur an Rasterpositionen möglich ist geglättete Linie durch Benutzung mehrerer Intensitäten bei Nachbarpixel CG – 1.91 Bildquelle:

92 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) CG – 1.92

93 1.6 Rastergrafik Rasterkonvertierungseffekte und Aliasing (cont.) Beispiel: Aliasing bei Polygonen CG – 1.93

94 1.6 Rastergrafik Anti-Aliasing Überabtastung, Oversampling, Supersampling: Einfachstes globales (d. h. das gesamte Bild betreffende) Anti-Aliasing-Verfahren Jedes Pixel wird mit einer höheren Auflösung berechnet, als es schließlich dargestellt wird Der resultierende Grauwert (Farbwert) ist der gewichteten Durchschnitt aller beteiligten Subpixelwerte Zugrundeliegende Theorie: digitale Filter Übliche Filterkerne (Crow, 1981): Rechteck-/Box-Filter, Dreieck-/Barlett-Filter, Gaußfilter CG – 1.94

95 1.6 Rastergrafik Anti-Aliasing (cont.) Überabtastung, Oversampling, Supersampling: (cont.) x 3 (2x-AA) x 5 (4x-AA) 7 x 7 (6x-AA) Pixel Subpixel Abtastpunkt CG – 1.95 Links: 2-Fach-Anti-Aliasing auf 4 Pixeln Bild wird mit doppelter Auflösung gerechnet aus einem Pixel werden vier Mittelwertbildung über Abtastpunkte mit Gewichtung

96 1.6 Rastergrafik Anti-Aliasing (cont.) Bei Linien und spitzen Dreiecken (dünnen Polygonen) kann es trotz Supersampling zu überraschenden Effekten kommen! Linie verschwindet stellenweise, da keine Subpixel getroffen werden! CG – 1.96

97 1.6 Rastergrafik Anti-Aliasing (cont.) Abhilfe: (korrekte) Berechnung der überdeckten Fläche im Pixel! Praxis: exakte analytische Berechnung ausgeschlossen! Näherungsverfahren CG – 1.97

98 1.6 Rastergrafik Anti-Aliasing (cont.) Bemerkung: Stochastische Methoden Stochastisches Sampling: Oversampling mittels Monte-Carlo-Methoden Intensitäten an zufälligen Punkten im Pixel ermittelt und Ergebnis gemittelt Einsatz von Monte-Carlo-Methoden bei Berechnung der vom Polygon im Pixel überdeckten Fläche Stochastische Methoden erhöhen zwar Effizienz, neigen aber zum Flimmern von Objekten in Animationen! CG – 1.98

99 1.6 Rastergrafik Anti-Aliasing (cont.) – Beispiel CG – 1.99

100 1.6 Rastergrafik Temporales Aliasing Tritt auf, falls sich einige Teile einer Animation relativ zur Bildwiederholfrequenz zu schnell verändern Auch hier gilt das Abtasttheorem: Vermeidung durch (zeitliche) Abtastung mit mehr als der doppelten Detailfrequenz der Bewegung Klassisches Beispiel: Wagenräder in Wildwestfilmen Wahrnehmung der Bewegung über bewegte Speichen Je nach Abtastung der Bewegung, können die Räder stillstehen, (langsam/schnell) rückwärts oder vorwärts drehen CG – 1.100

101 1.6 Rastergrafik Temporales Aliasing (cont.) Beispiel: Rad mit 8 Speichen Wiederholfrequenz 1/8 Umdrehung Abtastfrequenz höher 1/16 Umdrehung Besonders störend: variierende Radgeschwindigkeit im Bereich 1/16 Umdrehung CG – 1.101

102 1.6 Rastergrafik Temporales Aliasing (cont.) CG – 1.102


Herunterladen ppt "Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen §2Objekttransformationen §3Objektrepräsentation und -Modellierung §4Sichttransformationen."

Ähnliche Präsentationen


Google-Anzeigen