computergrafik - inhalt §0historie, Überblick, beispiele §1begriffe und grundlagen...
TRANSCRIPT
Computergrafik - Inhalt
§0 Historie, Überblick, Beispiele
§1 Begriffe und Grundlagen
§2 Objekttransformationen
§3 Objektrepräsentation und -Modellierung
§4 Sichttransformationen
§5 Kurven und Flächen
§6 Rendering und Visibilität
§7 Mapping-Techniken
CG – 2.1
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
1.1 Begriffe
Computergrafik (cont.)
Die Disziplin der Computergrafik beschäftigtsich 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
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. 43-47
CG – 1.4
1.2 Grundlagen
Einfachste Grafikarchitektur
Prozessor Framebuffer
Memory
CG – 1.5
1.2 Grundlagen
Der Framebuffer
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CG – 1.6
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-zeugung
Framebuffer
Bild-speicher
IDS
Bild-darstellung
Bildrechner
Dis
play
CG – 1.7
1.2 Grundlagen
Quelle: FU Hagen
CG – 1.8
1.2 Grundlagen
3D Grafik – Virtuelle Kamera
CG – 1.9
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
1.2 Grundlagen
Die Computergrafik-Pipeline / Die Rendering-Pipeline (cont.) Genereller Aufbau:
databasetraversal
modelingtransformation
viewingoperation
visible-surface determinationscan conversionshading
image
object model orscene model / scene graph
front-end(geometryprocessing)
back-end(rasterization)
CG – 1.11
1.2 Grundlagen
Der Visualisierungsprozess / Die Visualisierungs-Pipeline
Daten
Pre-Processingtransform the data into something we can understand
Computer-grafik
Kognition
Interaktion
Datensammeln
CG – 1.12
1.2 Grundlagen
Softwarearchitekturen
Anwendungsumgebung
high-level 3D-API*
low-level 3D-API*
Hardware
3D-Anwendung
* AP
I b
ed
eu
tet
"ap
plic
atio
n p
rog
ram
min
g in
terf
ace
"
CG – 1.13
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: http://i.computer-bild.de
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
1.3 Graphische Eingabegeräte
Haptische Geräte Force Feedback durch Exoskelett und Bowdenzüge
CG – 1.16
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]
1m
m
1mm 1mm
1m
m
Adressierbarkeit= maximal zur Verfügung stehende Auflösung des Monitors
CG – 1.17
1.4 Bildschirmtechnologien
Röhrenbildschirm / CRT mit Rasterdisplay, einfarbig (cont.)
CG – 1.18
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 (30-100 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
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
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 900 gedrehte Polarisationsfilter
Bildschirm wird durch künstliches Licht von hinten beleuchtet; dieses wird durch hinteren Polarisationsfilter polarisiert
CG – 1.21
1.4 Bildschirmtechnologien
Flüssigkristallbildschirm / LCD (cont.)
CG – 1.22
1.4 Bildschirmtechnologien
Flüssigkristallbildschirm / LCD (cont.) Die organischen Moleküle
im Flüssigkristall drehen diePolarisationsrichtung um 900,falls kein elektrisches Feldanliegt
→ Licht passiert zweitenFilter ungehindert
CG – 1.23
1.4 Bildschirmtechnologien
Flüssigkristallbildschirm / LCD (cont.) Bei maximalem elektrischen
Feld wird die Polarisations-richtung idealerweise nichtgedreht
→ Licht passiert zweiten Filter nicht
CG – 1.24
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
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
1.4 Bildschirmtechnologien
Plasma-Displays (cont.) Prinzip 2: Plasma Display Panel (PDP)
CG – 1.27
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
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
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 begrenzenderFaktor)
Korrosionsanfälligkeit Teurer als LCDs
Anwendung vor allem in kleinen Bildschirmen (v.a. hochpreisige Smartphones, Tablets, …)
CG – 1.30
Bild oben: http://www.oled-info.comBild links: http://hiperdef.com
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
1.5 3D-Sichtsysteme
Shutter-Brille
CG – 1.32
1.5 3D-Sichtsysteme
Polarisationsbrille Polarisierte Bilder für das linke bzw. rechte Auge
Head Mounted Display Zwei kleine LCD bieten
beiden Augen die Ansichteiner 3D Szene aus leichtunterschiedlichenPerspektiven 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
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
1.5 3D-Sichtsysteme
Responsive Workbench Verwendung der Tisch-Metapher Neigbare Projektionsfläche Rückprojektion 3D durch Shutter-Brille
CG – 1.35
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
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
1.5 3D-Sichtsysteme
Autoskopische Bildschirme Image Splitter
herkömmliches LCD mit abwechselnd einer Pixelspalte für das linke und rechte Auge
Streifenmaske blockiertjeweils den Blick auf diejeweils andere Spalte
Funktioniert nur bei einemBetrachter undbestimmter Kopfposition
CG – 1.38
Quelle: Uni Karlsruhe
Abb.: Funktionsprinzip einesImage Splitters
1.5 3D-Sichtsysteme
Autoskopische Bildschirme Lentikularsystem
halbzylindrische Linsen vor Mattscheibe lenkenBilder in rechtes und linkes Auge
fester Betrachtungsabstand
Quelle: Uni Karlsruhe
Abb.: Funktionsprinzip eines
Lentikularsystems
CG – 1.39
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
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
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. 50.000 Euro) Eingeschränktes operationelles Bewegungsfeld
CG – 1.42
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 60.000 Euro, CAVE ab 250.000 Euro) U.U. Übelkeit durch falsche Stereoskopieberechnung
oder ungenaues / langsames Tracking
CG – 1.43
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
1.6 Rastergrafik
Rasterung von Linien Beispiel: Mögliche Rasterkandidaten
P1=(x1,y1)
P2=(x2,y2)
CG – 1.45
1.6 Rastergrafik
Rasterung von Linien (cont.) Beispiel: Rasterkandidaten
P1=(x1,y1)
P2=(x2,y2)
CG – 1.46
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
1.6 Rastergrafik
Rasterung von Linien (cont.):Darstellung von Linien Gegeben: zwei Punkte
Gesucht: Beschreibung der Linie zwischen P1 und P2
1. Parametrisch:
2. Funktional:
3. Implizit:
CG – 1.48
yty
xtx
y
x
1
1
2 1 2 1( , )x x x y y y
1 1 1 2 2 2( , ), ,( )P x y P x y
y mx b
( , ) 0F x y ax by c
1.6 Rastergrafik
Rasterung von Linien (cont.): Naiver Algorithmus P1 und P2 gegeben in Integer-Koordinaten
Algorithmus benutzt funktionale Darstellung:
Durchlauf von x1 nach x2 im Pixelabstand,y-Werte berechnen und runden,zeichnen:double m = (y2-y1)/(x2-x1);double b = y1-m*x1
for (int x=x1; x<=x2; x++) {double y=m*x+b;setPixel(x,round(y));
}
CG – 1.49
y mx b
1.6 Rastergrafik
Rasterung von Linien (cont.) Probleme
Gleitkommawerte Divisionen und
Multiplikationen Rundungen senkrechte Linien
(Division durch 0!) Aussehen der Linien
bei verschiedenenSteigungen m
DDA-Algorithmus (digital differential analyzer), Digitaler Integrierer
Abb.: Rasterungen mit dem naiven AlgorithmusQuelle: Uni Magdeburg
CG – 1.50
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.
3.
4.
5.
6. 7.
8.
1.Oktant
P2
x
y
P1
2. hier: Ursprung des zugeordneten
Koordinatensystems in P1
1. Oktant (0 ≤ Steigung ≤ 1)
P1 und P2 auf Raster
CG – 1.51
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 PixelF(M) ≤ 0 → E ist nächstes Pixel
Wie berechnet man F(M) ? → inkrementell
Quelle: Uni Magdeburg
F M a x 1 b y+1
c2
1.6 Rastergrafik
Rasterung von Linien (cont.)
CG – 1.53
1. Fall NE als nächstes Pixel ist nächster Mittelpunkt
2. Fall E als nächstes Pixel ist nächster Mittelpunkt
Quelle: Uni Magdeburg
1
1
23
2
NE
F M a x b y c
F M F M a b
d d y x d
2
2
12
2
E
F M a x b y c
F M F M a
d d y d
NE
E
y x
y
1M 2M
1.6 Rastergrafik
Rasterung von Linien (cont.) Initialisierung von d?
Startpunkt P1 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
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<x2){
if(d >= 0) {d+=delta_NE; x++; y++;} // NEelse {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.
1.6 Rastergrafik
Rasterung von Linien (cont.) Beispiel:
0 1 2 3 4 5 6
1
2
3
4
5x y d plot
0 0 3 (0,0)
11 1 (1,1)2 2 -1 (2,2)
3 2 7 (3,2)
4 3 5 (4,3)
5 4 3 (5,4)
(0, 0)P1=
(5, 4)P2=
CG – 1.56
dx = 5, dy = 4delta_NE= -2delta_E = 8
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 (xM, yM)
und Radius r :1. Implizit:
2. Parametrisch: ) ·cos
( ) ·sin
[0,2 [
( M
My y
x
r
x r
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
( ) (, 0,0)M Mx y
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 PixelF(M) ≥ 0 → SE ist nächstes Pixel
Wie berechnet man F(M) ? → inkrementell
Quelle: Uni Magdeburg
2 2 2( ) ( 1)1
)2
(F M x y r
1.6 Rastergrafik
Rasterung von Kreisen (cont.)
CG – 1.60
1. Fall E als nächstes Pixel M1 ist nächster Mittelpunkt
Quelle: Uni Magdeburg
2. Fall SE als nächstes Pixel M2 ist nächster Mittelpunkt
2 2 21
1
( ) ( 2) (
( ) ( ) 2 3
1)
2
2 3 E
F M x y r
F M F M x
d d x d
2 2 2
2
2 ) ( 2) (
) ( ) 2 2
3( )
2(
2 5
5
2 SE
F M r
F
x y
F M x yM
d d x y d
2 3
2 2 5E
SE
x
x y
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); ... // Symmetriewhile(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.}
1
2 4(1,
5)d F r r
&E SE
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
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ängend4-fach zusammenhängend
CG – 1.63
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 mitgemeinsamen Ecken
Füllalgorithmen mit 4 Freiheitsgraden können keine 8-fach zusammenhängenden Gebiete füllen
CG – 1.64
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 rekursivNachbarpixel umgefärbt, bis Pixel mit der Farbe derBegrenzungskurve (oder bereits umgefärbte Pixel)erreicht werden; dann Abbruch
CG – 1.65
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 rekursivNachbarpixel gleicher Farbe umgefärbt, bis Pixel mit abweichender Farbe erreicht werden;dann Abbruch
CG – 1.66
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 pi
{ if(! ((pi == boundary_pixel) || (colorOf(pi) == FillColor))) Push(stack, pi); }}
1
2
3
4
hier z. B.:
CG – 1.67
1
2
3
4
5
6
7
1 2 3 4 5 6 87 9
1
1.6 Rastergrafik – Füllalgorithmen
Beispiel: (die Zahlen geben die Position der Pixel im Stack an)
1
2
3
4
5
6
7
1 2 3 4 5 6 87 9
1,19
2,15,17
3,14,15
4
67
5,7,15
13,15
12,161212
11 11,13
10 110,14
8,9,159
9 8
16
6,21
4,20
17
16,18,25
17,24
25
19,23
20,22
21 21,24
22,24
23,24
24
CG – 1.68
1
2
3
4
5
6
7
1 2 3 4 5 6 87 9
1
1.6 Rastergrafik – Füllalgorithmen
Beispiel: Gebiet mit Loch
1
2
3
4
5
6
7
1 2 3 4 5 6 87 9
1
158,15
3
3,94,99
5,9 4
6,9 6
77,9
9 8
2,9
15
1,10
9
10
9,11
12
13
14 14
13,14
12,14
10,14
CG – 1.69
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=ymin ; y<=ymax ; y++) // Zeile (row)
for(x=xmin ; x<=xmax ; 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
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
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 }∈
P1 P2
P3
P4
P5
0 2 4 6 8
2
4
6
8
Scan Line y=2
Scan Line y=4
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
P1 P2
P3
P4
P5
0 2 4 6 8
2
4
6
8
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
P1 P2
P3
P4
P5
0 2 4 6 8
2
4
6
8
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
1 2 3 4 5 6
1
2
3
4
5
0
1 2 3 4 5 6
1
2
3
4
5
0
3.5
2.5
1.5
1.6 Rastergrafik – Füllalgorithmen
Einfacher Kanten-Listen-Algorithmus (ordered edge list algorithm) Funktionsweise:
a) Preprocessingb) Scan Conversion
Teil a): Preprocessing: Ermittle (z.B. mit Bresenham-Algorithmus) für jede
Polygonkante die Schnittpunkte mit den Scan Linesin 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 durchPixelmitte gehen!
CG – 1.76
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 alsder y-Wert der Schnittecke
CG – 1.77
1.6 Rastergrafik – Füllalgorithmen
Teil b): Scan Conversion: Betrachte jeweils zwei direkt aufeinanderfolgende
Schnittpunkte (x1, y1) und (x2, y2) der Liste, d.h. Listenelemente 1 und 2, Listenelemente 3 und 4, usw.
Aufgrund des Preprocessings gilt:
y = y1 = y2 und x1 ≤ x2
Zeichne alle Pixel auf der Scan Line y, für die gilt:x1 ≤ x+½ ≤ x2 mit ganzzahligem x
CG – 1.78
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
P1 P2
P3
P4
P5
0 2 4 6 8
2
4
6
8
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)
./.
P1 P2
P3
P4
P5
CG – 1.80
0 2 4 6 8
2
4
6
8
1.6 Füllalgorithmen
Beispiel:b) Scan Conversion:
(1, 6)
(1, 5), (2, 5), (7, 5)
./.
Achtung:Dies sind nun die Pixelkoordinaten!
P1 P2
P3
P4
P5
Denn bei y = 5 gilt:
1 ≤ x+½ ≤ 2.5 x {1,2}⇒ ∈
7.5 ≤ x+½ ≤ 8 x = 7 ⇒
CG – 1.81
0 2 4 6 8
2
4
6
8
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!
P1 P2
P3
P4
P5
CG – 1.82
0 2 4 6 8
2
4
6
8
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
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
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
1.6 Rastergrafik
Rasterkonvertierungseffekte und Aliasing (cont.) Phänomen: (cont.)
Pixels are sampled ata rate 2 times thedetail frequency
Pixels are sampled ata rate less thedetail frequency
CG – 1.86
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
1.6 Rastergrafik
Rasterkonvertierungseffekte und Aliasing (cont.) Aliasing in der Computergrafik – Gruppierungen:
Visuelle Effekte, die auf „echtes“ Aliasing zurückzuführen sindBeispiel: Schachbrettmuster
Visuelle Artefakte, die auf Rasterkonvertierungseffekte zurückgehenBeispiel: Treppeneffekte bei schrägen Linien
Zusätzlich: Unterscheidung zwischen örtlichem (spatial)und zeitlichem (temporal) AliasingBeispiel: scheinbar rückwärts drehende Wagenräder in Westernfilmen
CG – 1.88
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
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
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: http://www.photography.com
1.6 Rastergrafik
Rasterkonvertierungseffekte und Aliasing (cont.)
CG – 1.92
1.6 Rastergrafik
Rasterkonvertierungseffekte und Aliasing (cont.) Beispiel: Aliasing bei Polygonen
CG – 1.93
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
1.6 Rastergrafik
Anti-Aliasing (cont.) Überabtastung, Oversampling, Supersampling:
(cont.)
1 2 12 4 21 2 1
3 x 3 („2x-AA“)1 2 3 2 12 4 6 4 23 6 9 6 32 4 6 4 21 2 3 2 1
1 2 3 4 3 2 12 4 6 8 6 4 23 6 9 12 9 6 34 8 12 16 12 8 43 6 9 12 9 6 32 4 6 8 6 4 21 2 3 4 3 2 1
5 x 5 („4x-AA“) 7 x 7 („6x-AA“)
Pixel
Subpixel
Abtastpunkt
1 1
11
2 2
2
2
4
1
1
11 1
2
2
2
2
2 2
2
2
4
4 4
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
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
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
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
1.6 Rastergrafik
Anti-Aliasing (cont.) – Beispiel
CG – 1.99
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
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 Bereich1/16 Umdrehung
CG – 1.101
1.6 Rastergrafik
Temporales Aliasing (cont.)
CG – 1.102