Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen...

Post on 05-Apr-2015

108 views 1 download

Transcript of Computergrafik - Inhalt §0Historie, Überblick, Beispiele §1Begriffe und Grundlagen...

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