Computergraphik Grundlagen

Ähnliche Dokumente
Computergraphik Grundlagen

Graphische Datenverarbeitung und Bildverarbeitung

Computer Graphik I Polygon Scan Conversion

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Inhaltsverzeichnis. 1 Hardwaregrundlagen

Computergraphik Grundlagen

Geometrische Algorithmen

Computer Graphik I Polygon Scan Conversion

Computergraphik Grundlagen

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal.

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

Geometrie 1. Christian Bay Christian Bay Geometrie / 46

Rastergrafikalgorithmen

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Computergraphik Grundlagen

Computergraphik Grundlagen

Kapitel 4: Schattenberechnung

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

Christina Nell. 3D-Computergrafik

Übersicht über Informatik und Softwaresystemtechnik WS 99/00, Prof. Dr. Andreas Schwill

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Nichtrealistische Darstellung von Gebirgen mit OpenGL

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

Polygontriangulierung

Graphische Datenverarbeitung und Bildverarbeitung

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Computergraphik Grundlagen

Universität Augsburg. 20. April B. Möller (U. Augsburg) Computergraphik SS April / 6

Geradenarrangements und Dualität von Punkten und Geraden

Vektorobjekte auf der Formebene zeichnen. Form-Werkzeug wählen und über die Optionsleiste die Formeigenschaften festlegen

Aufgabe S 1 (4 Punkte)

Beispiel 1: Fakultät

Geoinformation I Geometr.-topol. Datenstrukturen

Die Polygone im Vordergrund werden zuletzt wiedergegeben und überdecken möglicherweise weiter hinten liegende Polygone ganz oder teilweise.

Sichtbarkeitsbestimmung

GEOMETRIE (4a) Kurzskript

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

3D-Computergrafik und animation. Shading und globale Beleuchtungsverfahren, Animationstechniken

computer graphics & visualization

Geometrische Algorithmen

July 04, Geometrie I. Hallo Welt! für Fortgeschrittene. Daniel Uebler

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Softwareprojekt Spieleentwicklung

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

Programmieren Übung! Meine ersten Schritte als ProgrammiererIn! Prolog 2014 Stefan Podlipnig, TU Wien

Quadtrees und Meshing

Debayeringverfahren. 19. Mai Thomas Noack, Nikolai Kosjar. SE Computational Photography - Debayeringverfahren

Triangulierung von einfachen Polygonen

6. Triangulation von Polygonen

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Übersicht der Vorlesung

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, Kore Nordmann

Inhalt. Grundlagen - Licht und visuelle Wahrnehmung 1. Grundlagen - 2D-Grafik (Teil 1) 43. Grundlagen - 2D-Grafik (Teil 2) 67

Punkt-in-Polygon-Suche Übersicht

Photonik Technische Nutzung von Licht

Bearbeitungszeit: Name: Erklärung

Lokale Beleuchtungsmodelle

II.3.1 Rekursive Algorithmen - 1 -

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

0 Einführung. Computergrafik. Computergrafik. Abteilung für Bild- und Signalverarbeitung

Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle

Repetitorium Informatik (Java)

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmierpraktikum 3D Computer Grafik

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

6. Algorithmen der Computer-Geometrie

Kartographische Visualisierung

Programmierpraktikum WS 16/17

Lehrbuch der Grafikprogrammierung

Körper erkennen und beschreiben

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Rastergrafikalgorithmen

Induktion und Rekursion

Kostenmaße. F3 03/04 p.188/395

F B. Abbildung 2.1: Dreieck mit Transversalen

Featurebasierte 3D Modellierung

Tag der Mathematik 2016

Geometrie Winkel und Vierecke PRÜFUNG 02. Ohne Formelsammlung! Name: Klasse: Datum: Punkte: Note: Klassenschnitt/ Maximalnote : Ausgabe: 2.

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Parallelogramme Rechtecke Quadrate

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Lernmodul 2 Geometr.-topol. Datenstrukturen. Lernmodul 2: Geoobjekte und ihre Modellierung - Geometr.-topol. Datenstrukturen

Universität Karlsruhe (TH)

OpenGL. (Open Graphic Library)

DENKEN VERSTEHEN LERNEN Computational Thinking in der Grundschule

Morphologische Bildverarbeitung II

Arbeitsblätter zur Vergleichsklausur EF. Aufgabe 1 Bestimme die Lösungen der folgenden Gleichungen möglichst im Kopf.

Texture Based Direct Volume Rendering

Einführung in die Informatik I

Abb. 5-5 Gegenüberstellung von Flat-Shading und Gouraud-Shading. Beleuchtungsberechnung mit nur einer Flächennormale pro Polygon

Bedienungsanleitung Version: 1.0 Datum:

Kollisionserkennung

Hauptprüfung Abiturprüfung 2016 (ohne CAS) Baden-Württemberg

FACHHOCHSCHULE ZÜRICH Musterprüfung Geometrie * Klasse ZS K2 18. März 2011

Dokumentation: RAG Regression Analysis Graph

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Ich mache eine saubere, klare Konstruktionszeichnungen und zeichne die Lösungen rot

EVC Repetitorium Blender

Transkript:

Computergraphik Grundlagen XI. Rasterung Füllen von Polygonen Prof. Stefan Schlechtweg Hochschule nhalt Fachbereich Informatik

Inhalt Lernziele 1. Zu lösendes Problem 2. Füllen von Pixelmengen 1. Rekursiver lgorithmus 3. Füllen von Polygonen 1. Einstieg: Füllen von Rechtecken 2. Begriffe und Definitionen 3. Iterativer lgorithmus 4. Zusammenfassung 4. Füllen mit Mustern Füllen als computergraphisches Grundproblem kennenlernen lgorithmus zum Füllen auf Pixelbasis kennenlernen Iterativen lgorithmus zum Füllen von Polygonen, die durch Kanten gegeben sind, verstehen Probleme beim Füllen auch mit Mustern identifizieren können 2

Lokale Koordinaten Modellierung der Geometrie einzelner Objekte lokal Welt Plazierung der Objekte Weltkoordinaten Plazierung der Lichtquellen Plazierung der Kamera Beleuchtungsberechnung Transformation in Kamerakoordinaten Kamerakoordinaten Entfernen verdeckter Rückseiten Viewing-Transformation Normalisierte Projektionskoordinaten Clipping gegen Sichtkörper Entfernen verdeckter Modellteile Projektion (Normalisierte) Bildschirmkoordinaten Rastertransformation Rasterung Rasterkoordinaten Shading Entfernen verdeckter Modellteile 3

1. Zu lösendes Problem Polygon gegeben durch Geometrische Beschreibung (Ecken, Kanten) Pixelmenge (entsteht durch Rasterung der Kanten) Fragen: Welche Pixel bilden das Innere der Fläche und sind daher einzufärben, wenn die Fläche gefüllt werden soll? Womit (welche Farbe) sind die Pixel zu füllen? Füllalgorithmen für: Polygone, deren Rand als Pixelmenge gegeben ist, Polygone, die durch Kanten gegeben sind 4

2. Füllen von Pixelmengen Gegeben: gerasterte Polygone als Rand- Pixelmenge Startpunkt, der festlegt, wo innen ist Gesucht: alle Pixel innerhalb des Randes Begriff: Nachbarschaften 4-Nachbarschaft (von-neumann-nachbarschaft) 8-Nachbarschaft 5

2. Füllen von Pixelmengen 2.1. Rekursiver lgorithmus Bestimmung der Zugehörigkeit zum Rand erfolgt über Pixelfarbe, daher einfarbiger Rand Beginne mit einem Startpixel Teste, ob das aktuelle Pixel auf dem Rand liegt (getpixel(x,y)) wenn ja, dann ist nichts zu füllen wenn nein, dann fülle die {4er, 8er}-Nachbarschaft 6

2. Füllen von Pixelmengen 2.1. Rekursiver lgorithmus void floodfill( int x, int y, int fillcolor, int border) { if ((getpixel(x, y) == border) (getpixel(x, y) == fillcolor)) {return;} setpixel( x, y, fillcolor); // 4-Nachbarschaft floodfill( x, y+1, fillcolor, border); floodfill( x, y-1, fillcolor, border); floodfill( x+1, y, fillcolor, border); floodfill( x-1, y, fillcolor, border); } 7

2. Füllen von Pixelmengen 2.1. Rekursiver lgorithmus Probleme: Rekursion hoher Berechnungsaufwand mehrfaches Testen von Pixeln spill-out bei Lücken in den Rändern Rand bei Verwendung der 8-Nachbarschaft muss auch diagonal dicht definiert sein Vorteile: Es muss nichts über die Geometrie des zu füllenden Gebietes bekannt sein! Keine langwierigen Berechnungen 8

3. Füllen von Polygonen Füllalgorithmen auf Basis einer geometrischen Beschreibung Füllen von Polygonen, die definiert sind durch Liste von Eckpunkten {V} und dazwischen liegenden Kanten {E} Kante von v i zu Eckpunkt vi +1 für i: 1 < i < n Kante von v n nach v 1 schließt das Polygon Konvexe Polygone: Wenn P 1 und P 2 zum Polygon gehören, gehören auch alle Punkte auf der Verbindung zwischen P 1 und P 2 zum Inneren des Polygons Konkave Polygone:... uch mit Selbstüberschneidungen 9

3. Füllen von Polygonen 3.1. Einstieg: Füllen von Rechtecken Füllen mit einheitlicher Farbe Rechteck definiert durch zwei Ecken (x min, y min ) und (x max, y max ) lgorithmus: for (y=y min ; y<=y max ; y++) for (x=x min ; x<=x max ; x++) setpixel (x, y, color); 10

3. Füllen von Polygonen 3.2. Begriffe und Definitionen Definition: Pixel auf einer Kante gehören nicht zum Primitiv, wenn die durch die Kante definierte Halbebene, die das Primitiv enthält, unter dieser Kante oder links von ihr liegt. Pixel auf einer Kante gehören zum Primitiv, wenn die Halbebene, die das Primitiv enthält, oberhalb oder rechts liegt. gehört nicht zum Primitiv gehört zum Primitiv 11

3. Füllen von Polygonen 3.2. Begriffe und Definitionen Kante: Verbindung zweier Eckpunkte Scanlinie: horizontale Linie auf Höhe einer Rasterzeile Spanne: bschnitt auf einer Scanlinie zwischen zwei Schnittpunkten mit Polygonkanten 12

3. Füllen von Polygonen 3.3. Iterativer lgorithmus btasten (Scannen) des Polygons Pixelzeile (Scanline) für Pixelzeile von unten nach oben Suche alle Schnittpunkte der Scanlines mit Polygonkanten Sortiere die Schnittpunkte nach wachsenden x-koordinaten Fülle alle Pixel zwischen Schnittpunkten nach Parität: Parität ist anfangs 0 und wechselt bei jedem Schnittpunkt. Gezeichnet wird bei Parität 1. 13

3. Füllen von Polygonen 3.3. Iterativer lgorithmus 11 10 9 8 7 6 5 4 3 2 1 D F a b E c d C B Scanline 1 2 3 4 5 6 7 8 9 10 11 12 13 14 14

3. Füllen von Polygonen 3.3. Iterativer lgorithmus Überlegungen/Sonderfälle Wie bestimmt man für einen nicht-ganzzahligen Schnittpunkt, welches der beiden Nachbarpixel innen liegt? Erreicht man den Schnittpunkt, während man innen ist, wird abgerundet, während man außen ist, wird aufgerundet. Wie verfährt man mit Schnittpunkten an ganzzahligen Pixelkoordinaten? Ein ganzzahliger Schnittpunkt wird am Beginn einer Spanne als innen ; am Ende einer Spanne als außen betrachtet. Wie verfährt man mit doppelt belegten Schnittpunkten? Der y min -Wert einer Kante wird als zugehörig, der y max -Wert einer Kante als nicht zugehörig betrachtet. Wie verfährt man mit horizontalen Kanten? Untere Kanten werden dargestellt, obere nicht. 15

3. Füllen von Polygonen 3.3. Iterativer lgorithmus Voraussetzungen: ufbau einer Kantentabelle (edge table, ET) für alle Kanten Pro Kante wird notiert: y min = unterer y-wert x start = x-wert an dem Punkt mit y min (kann größerer x-wert sein!) y max = oberer y-wert t=dx/dy=horizontaler Versatz zwischen zwei Scanlines (entspricht 1/nstieg) y 11 9 7 5 3 1 D F E C B 2 7 13 x B 1 7 3-5/2 BC 1 7 5 6/4 F 3 2 9 0 CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 6/4 (2-7)/(3-1) (13-7)/(5-1) 0/6 0/6 (2-7)/(9-7) (13-7)/11-7) 16

3. Füllen von Polygonen 3.3. Iterativer lgorithmus lgorithmus iteriert über Scanlinien und baut eine ktivkantentabelle (active edge table, ET) auf. ET enthält nach wachsenden x-werten sortierte Schnittpunkte von Scanlinien mit Polygonkanten. Spannen zwischen Paaren von solchen Schnittpunkten (Einträge in der ET) werden gefüllt. ET wird beim Übergang zur nächsten Scanlinie aktualisiert. lgorithmus endet, wenn ET leer ist 17

3. Füllen von Polygonen 3.3. Iterativer lgorithmus 1. Weise y den kleinsten in der ET vorkommenden Wert zu 2. Initialisiere die ET mit dem nfangszustand leer 3. Wiederhole bis ET und ET leer sind a) Überführe aus der ET diejenigen Einträge in die ET, für die y min =y ist und sortiere die ET nach x b) Fülle die Pixel in der Scanlinie y durch Nutzung von Koordinatenpaaren der ET c) Entferne aus der ET alle die Einträge mit y max =y d) Inkrementiere y (nächste Scanlinie) e) ktualisiere für jede nicht vertikale Kante (dx/dy!=0) der ET den x start -Wert für das neue y 18

Kantentabelle (ET) ET (Scanline 1) 11 D 9 7 5 3 1 F E C B 2 7 13 x B 1 7 3-5/2 BC 1 7 5 3/2 F 3 2 9 0 CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 3/2 B 1 7 3-5/2 BC 1 7 5 3/2 Beide Male ist 1 der y min -Wert einer Kante, daher zeichnen ET (Scanline 2) 11 9 7 5 F E D C Kantentabelle (ET) B 1 9/2 3-5/2 BC 1 17/2 5 3/2 Füllen zwischen den beiden Einträgen - (9/2, 2) aufrunden (außen) (5,2) - (17/2, 2) abrunden (innen) (8,2) 3 1 2 7 13 x F 3 2 9 0 CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 3/2 ET (Scanline 3) B 1 4/2 3-5/2 BC 1 20/2 5 3/2 19

y 11 D ET (Scanline 3) 9 7 5 3 1 y 11 9 7 5 3 1 F E C 2 7 13 x D F E C F 3 2 9 0 CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 3/2 CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 3/2 F 3 2 9 0 B 1 4/2 3-5/2 BC 1 20/2 5 3/2 - Kante F in die ET überführen - Füllen zwischen den beiden letzten Einträgen, dabei ist erster Punkt als innen, letzter als außen betrachtet - Kante B entfernen ET (Scanline 4) F 3 2 9 0 BC 1 23/2 5 3/2 - Füllen zwischen beiden Einträgen, (23/2) auf (11) abrunden 2 7 13 x 20

y ET (Scanline 5) 11 D 9 7 5 3 1 F E C 2 7 13 x CD 5 13 11 0 EF 7 7 9-5/2 DE 7 7 11 3/2 F 3 2 9 0 BC 1 26/2 5 3/2 CD 5 13 11 0 - Kante CD in die ET überführen - Füllen zwischen den ersten beiden Einträgen, dabei wird (26/2, 5) als außen betrachtet - Kante BC entfernen ET (Scanline 6) D F F 3 2 9 0 CD 5 13 11 0 E Füllen zwischen den beiden Einträgen, dabei wird (13, 6) als außen betrachtet EF 7 7 9-5/2 DE 7 7 11 3/2 21

y 11 9 7 5 3 1 y 11 9 7 5 3 1 D F E 2 7 13 x D F E 2 7 13 x Kante y min x start y max dx/dy EF 7 7 9-5/2 DE 7 7 11 3/2 Kante y min x start y max dx/dy -- -- -- -- -- ET (Scanline 7) Kante y min x start y max dx/dy F 3 2 9 0 EF 7 7 9-5/2 DE 7 7 11 3/2 CD 5 13 11 0 - Kanten DE und EF in die ET überführen - Füllen zwischen den ersten beiden Einträgen. (7, 7) wird als außen betrachtet. - Füllen zwischen den letzten beiden Einträgen. (13, 7) wird als außen betrachtet. ET (Scanline 8) Kante y min x start y max dx/dy F 3 2 9 0 EF 7 9/2 9-5/2 DE 7 17/2 11 3/2 CD 5 13 11 0 - Füllen zwischen den ersten beiden Einträgen, (9/2, 8) zu (4, 8) abgerundet - Füllen zwischen den letzten beiden Einträgen, (17/2, 8) wird zu (9, 8) aufgerundet 22

y 11 9 7 5 3 1 D F E 2 7 13 x -- -- -- -- -- ET (Scanline 9) Kante y min x start y max dx/dy F 3 2 9 0 EF 7 4/2 9-5/2 DE 7 20/2 11 3/2 CD 5 13 11 0 - Füllen zwischen den ersten beiden Einträgen, dabei wird (2, 9) nicht gesetzt, da er y max zweier Kanten ist. - Füllen zwischen den letzten beiden Einträgen, dabei wird (13, 9) als außen betrachtet - Entfernen von F und EF y 11 9 7 5 3 1 D E 2 7 13 x -- -- -- -- -- ET (Scanline 10) DE 7 23/2 11 3/2 CD 5 13 11 0 - Füllen zwischen beiden Einträgen, dabei wird (23/2, 10) zu (12, 10) aufgerundet und (13, 10) als außen betrachtet 23

y 11 9 7 5 3 1 E D -- -- -- -- -- ET (Scanline 11) DE 7 26/2 11 3/2 CD 5 13 11 0 - Der Pixel (13, 11) wird nicht gesetzt, da er y max zweier Kanten ist - Kanten DE und CD entfernen 2 7 13 x y 11 9 D ET (Scanline 12) 7 E 5 3 1 2 7 13 x Sowohl ET als auch ET sind leer -- ENDE 24

E 25

3. Füllen von Polygonen 3.4. Zusammenfassung Eigenschaften: Effizienter lgorithmus Beliebige Polygone (auch konkave) Vereinfachung für konvexe Polygone möglich (immer nur eine Spanne) Performance-Gewinn durch Schnelles Sortieren Integer-rithmetik (beim ddieren von dx/dy) Wird häufig angewendet, u.a. beim Shading in der 3D- Computergraphik 26

4. Füllen mit Mustern Muster als Bitmap (Textur = 2D Bild) gegeben, soll in das Innere eines Polygons übertragen werden Keine einheitliche Farbe, daher direkte Zuordnung zu füllendes Pixel auf Texturpixel notwendig 27

4. Füllen mit Mustern Verankerung der linken unteren Textur-Ecke in einer Polygonecke Muster ist mit Polygon verbunden, bewegt sich bei nimationen mit dem Polygon Verankerung der Textur auf dem Hintergrund Muster nicht mit Polygon verbunden, Polygon bewegt sich über der Textur Belegen der Polygonpixel mit dem Wert 1 und logische UND- Verknüpfung mit dem Muster 28

4. Füllen mit Mustern Einfache Erweiterung der Füllalgorithmen Keine einheitliche Farbe stattdessen: Lookup der Pixelfarbe in der Textur Verknüpfen der Texturfarbe mit der Hintergrundfarbe in verschiedenen Modi: Farben verknüpfen (Interpolation, verschiedene Verfahren) Textur-Farbwert für weitere Berechnungen verwenden Verwendung beim Rendering: Shading in Verbindung mit Texturierung Texture Mapping, Bump Mapping, etc. 29