www.wikidata.de-de.nina.az
Das Z Buffering auch Depth Buffering Tiefenpuffer 1 oder Tiefenspeicher Verfahren 2 ist ein Verfahren der Computergrafik zur Verdeckungsberechnung also um die vom Betrachter aus sichtbaren dreidimensionalen Flachen in einer Computergrafik zu ermitteln Durch Tiefeninformationen in einem sogenannten Z Buffer Z Puffer stellt das Verfahren pixelweise fest welche Elemente einer Szene gezeichnet werden mussen und welche verdeckt sind Praktisch alle heutigen Grafikkarten implementieren Z Buffering direkt in Hardware Als Entwickler des Z Buffer Verfahrens gilt Edwin Catmull 3 allerdings beschrieb Wolfgang Strasser das Prinzip etwa zur gleichen Zeit in einem anderen Kontext 4 5 Die wichtigste Alternative zum Z Buffering ist der Raytracing Algorithmus Ein computergeneriertes Bild oben und der Inhalt des dazugehorigen Z Buffers unten Inhaltsverzeichnis 1 Funktionsweise 2 Algorithmus 2 1 Pseudocode 3 Codierung der Tiefeninformationen 4 Vor und Nachteile 5 Randomisierter Algorithmus 6 Siehe auch 7 Literatur 8 EinzelnachweiseFunktionsweise BearbeitenDas Prinzip des Z Buffering ist sehr einfach Neben dem sichtbaren Teil des Bildspeichers der die aktuellen Farbwerte enthalt gibt es einen weiteren Speicher den Z Buffer der die Tiefe des sichtbaren Objekts an jedem Pixel enthalt Alternativ konnen die Pixelwerte im Framebuffer um einen z displaystyle z nbsp Wert erweitert werden Zu Beginn werden die Eintrage im Z Buffer auf einen Wert gesetzt der fur eine unendliche Entfernung steht Backplane Distance Der Framebuffer wird mit der Hintergrundfarbe initialisiert Jedes Polygon wird nun gerastert Nur wenn der aktuell gerasterte Punkt des Polygons naher am Betrachter liegt als der Punkt dessen Entfernung im Z Buffer eingetragen ist werden die Werte im Z Buffer und im Framebuffer durch die Entfernung beziehungsweise die Farbe des aktuellen Polygons ersetzt nbsp Prinzip des Z Buffers am Beispiel zweier sich schneidender Polygone Die Reihenfolge in der die Polygone gerastert werden ist im Prinzip beliebig Nicht nur Polygone sondern beliebige weitere grafische Primitive konnen mit Hilfe des Z Buffers gerendert werden Die Speichergrosse der Werte im Z Buffer hat einen grossen Einfluss auf die Qualitat des gerenderten Bildes Wenn zwei Objekte sehr eng beieinander liegen konnen bei einem Z Buffer mit 8 Bit pro Pixel leicht Artefakte entstehen 16 24 oder 32 Bit tiefe Z Buffer erzeugen weniger Artefakte Auf aktuellen Grafikkarten beansprucht der Z Buffer einen bedeutenden Teil des verfugbaren Speichers und der Datenubertragungsrate Mit verschiedenen Methoden wird versucht den Einfluss des Z Buffers auf die Leistung der Grafikkarte zu reduzieren Dies ist zum Beispiel durch die verlustfreie Kompression der Daten moglich da das Komprimieren und Dekomprimieren der Daten kostengunstiger ist als die Erhohung der Datenubertragungsrate einer Karte Ein anderes Verfahren spart Loschvorgange im Z Buffer die Tiefeninformation wird mit alternierendem Vorzeichen in den Z Buffer geschrieben Ein Bild wird mit positiven Vorzeichen gespeichert das nachste Bild mit negativem erst dann muss geloscht werden Eine weitere Moglichkeit zur Optimierung ist die Vorsortierung der Primitiven Werden zunachst die naherliegenden Primitiven gerendert kann bei den weiter entfernten spater direkt entschieden werden ob bzw welche Pixel gerendert werden mussen und welche von Vordergrundobjekten verdeckt werden wodurch Texturierungs und Pixel Shader Vorgange eingespart werden konnen Algorithmus BearbeitenPseudocode Bearbeiten Der Z Buffer Algorithmus lost das Sichtbarkeitsproblem indem fur jeden Pixel die Position des dargestellten Objektes und die Farbinformation gespeichert wird Weil als Blickrichtung normalerweise die z Richtung verwendet wird entsprechen die x Werte und y Werte dieser Position denen der Abbildungsebene und es braucht nur der z Wert gespeichert zu werden Man braucht also zusatzlich zum Bildpuffer einen weiteren Speicherbereich der fur jedes Pixel einen Koordinatenwert z Wert aufnehmen kann Nun kann man alle Objekte in beliebiger Reihenfolge zeichnen Die z Werte des nachsten zu zeichnenden Objektes werden berechnet und mit den z Werten der Pixel verglichen in die das Objekt gezeichnet werden soll Wenn der neue z Wert naher zum Betrachter also grosser ist dann wird das Objekt an dieser Stelle neu gezeichnet und der z Wert im z Puffer ebenfalls ersetzt Andernfalls ist das neue Objekt verdeckt und an dieser Stelle wird nicht gezeichnet Der folgende Pseudocode zeigt die Struktur des Z Buffer Algorithmus 6 7 for all x y Initialisierung des Hintergrundes depthBuff x y 1 Setzt den z Wert auf grosstmogliche Entfernung frameBuff x y backgroundColor for each polygon P Schleife die alle Polygone durchlauft for each position x y on polygon P Schleife die alle Pixel des aktuellen Polygons durchlauft calculate depth z if z gt depthBuff x y Wenn der neue z Wert naher zum Betrachter also grosser ist dann wird das Objekt an dieser Stelle neu gezeichnet und der z Wert im Z Buffer ebenfalls ersetzt Andernfalls ist das neue Objekt verdeckt und an dieser Stelle wird nicht gezeichnet depthBuff x y z frameBuff x y surfColor x y Codierung der Tiefeninformationen Bearbeiten nbsp Z Fighting zweier PolygoneSiehe auch Grafikpipeline Der Bereich der Tiefeninformation im Kameraraum der zu rendern ist wird haufig durch den nah Wert und fern Wert von z displaystyle z nbsp definiert Nach einer Perspektivtransformation wird der neue Wert von z displaystyle z nbsp hier als z displaystyle z nbsp bezeichnet wie folgt berechnet z fern nah fern nah 1 z 2 fern nah fern nah displaystyle z frac mbox fern mbox nah mbox fern mbox nah frac 1 z left frac 2 cdot mbox fern cdot mbox nah mbox fern mbox nah right nbsp Dabei ist z displaystyle z nbsp der neue Wert von z displaystyle z nbsp im Kameraraum Manchmal werden auch die Abkurzungen w displaystyle w nbsp und w displaystyle w nbsp verwendet Die resultierenden Werte von z displaystyle z nbsp werden auf Werte zwischen 1 und 1 normiert wobei die Flache bei nah den Wert 1 und die Flache bei fern den Wert 1 erhalt Werte ausserhalb dieses Bereichs stammen von Punkten die sich nicht im Sichtbereich befinden und sollten nicht gerendert werden Bei der Implementierung eines Z Buffers werden die Werte der Scheitelpunkte eines Polygons linear interpoliert und die z displaystyle z nbsp Werte einschliesslich der Zwischenwerte im Z Buffer gespeichert Die Werte von z displaystyle z nbsp sind wesentlich enger an der Nah Flache verteilt und wesentlich mehr zur Fern Flache hin verstreut was zu einer hoheren Genauigkeit der Darstellung nahe dem Kamerastandpunkt fuhrt Je enger die Nah Flache an die Kamera gesetzt wird desto geringer ist die Prazision im Fernbereich Eine haufige Ursache fur unerwunschte Artefakte bei entfernten Objekten ist dass die Nah Flache zu eng an die Kamera gesetzt wurde Diese als Z Fighting Z Konflikt Tiefenkonflikt bezeichneten Artefakte treten insbesondere dann auf wenn zwei koplanare Flachen sehr nahe beieinander sind beispielsweise eine Wand und ein darauf angebrachtes Plakat Welches von beiden Polygonen dann im Vordergrund liegt ist im Wesentlichen zufallig und kann sich auch durch geringfugige Anderungen des Kamerastandortes andern Zur Abhilfe mussen vom Programmierer explizit Massnahmen ergriffen werden etwa indem die Z Werte des Plakates kunstlich verandert werden oder durch den Einsatz eines sogenannten Stencilbuffers Da die Abstandswerte nicht gleichmassig im Z Buffer abgelegt werden werden nahe Objekte besser dargestellt als ferne da ihre Werte genauer abgespeichert sind Allgemein ist dieser Effekt erwunscht er kann aber auch zu offensichtlichen Artefakten fuhren wenn sich Objekte voneinander entfernen Eine Variation des Z Bufferings mit ausgeglicheneren Entfernungswerten ist das sogenannte W Buffering Um einen W Buffer zu implementieren werden die unveranderten Werte von z displaystyle z nbsp bzw w displaystyle w nbsp in den Buffer gespeichert im Allgemeinen als Gleitkommazahlen Diese Werte konnen nicht linear interpoliert werden sondern mussen invertiert interpoliert und wieder invertiert werden Die resultierenden w displaystyle w nbsp Werte sind im Gegensatz zu z displaystyle z nbsp gleichmassig zwischen nah und fern verteilt Ob ein Z Buffer oder ein W Buffer zu besseren Bildern fuhrt hangt vom jeweiligen Anwendungszweck ab Vor und Nachteile BearbeitenVorteile einfache Implementierung sowohl in Software als auch direkt in Hardware keine Vorsortierung der Eingabe notig sehr schnell einfache Parallelisierung moglich z B Unterteilung in kleinere Quadranten kein wahlfreier Zugriff auf die Szene notig Nachteile jedes Polygon der Eingabe wird gerendert die Laufzeit wachst linear mit der Eingabegrosse es werden keine Zusammenhange der Objekte ausgenutztRandomisierter Algorithmus BearbeitenEin randomisierter Z Buffer Algorithmus erzeugt ein gerendertes Bild einer beliebigen dreidimensionalen Szene die aus dreieckigen Figuren besteht Dieser Ansatz ist unabhangig von der Topologie der Figuren Die resultierende Laufzeit des Algorithmus wachst nur logarithmisch mit der Anzahl der Dreiecke in der Szene Ihre Speicheranforderungen wachsen nur linear mit der Anzahl der Dreiecke und ermoglichen ein Instantiierungsschema um den Speicherverbrauch weiter zu reduzieren Die Wiedergabezeit fur eine Szene die aus n displaystyle n nbsp Dreiecken besteht die einen auf dem Bildschirm projizierten Bereich von a displaystyle a nbsp Pixeln abdecken liegt in O a log n displaystyle O a cdot log n nbsp Der Algorithmus verwendet O n displaystyle O n nbsp Speicher und benotigt O n log n displaystyle O n cdot log n nbsp Vorberechnungszeit Das Einfugen und Entfernen eines Objekts kann in der Laufzeit O t displaystyle O t nbsp durchgefuhrt werden wobei t displaystyle t nbsp die Hohe eines Octrees ist der fur die Objekte in der Szene erstellt wurde 8 Siehe auch BearbeitenSichtbarkeitsproblem CullingLiteratur BearbeitenTomas Akenine Moller Eric Haines Real Time Rendering AK Peters Natick Mass 2002 ISBN 1 56881 182 9 James D Foley u a Computer Graphics Principles and Practice Addison Wesley Reading 1995 ISBN 0 201 84840 6 David F Rogers Procedural Elements for Computer Graphics WCB McGraw Hill Boston 1998 ISBN 0 07 053548 5 Alan Watt 3D Computer Graphics Addison Wesley Harlow 2000 ISBN 0 201 39855 9Einzelnachweise Bearbeiten Hans Joachim Bungartz u a Einfuhrung in die Computergraphik Grundlagen geometrische Modellierung Algorithmen S 128 Vieweg Braunschweig 2002 ISBN 3 528 16769 6 Michael Bender Manfred Brill Computergrafik ein anwendungsorientiertes Lehrbuch S 67 Hanser Munchen 2006 ISBN 3 446 40434 1 Edwin Catmull A Subdivision Algorithm for Computer Display of Curved Surfaces Dissertation Report UTEC CSc 74 133 Computer Science Department University of Utah Salt Lake City 1974 Wolfgang Strasser Schnelle Kurven und Flachendarstellung auf graphischen Sichtgeraten Dissertation TU Berlin 1974 W K Giloi Computer Graphics Pioneers the Giloi s School of Computer Graphics Starting Computer Graphics in Germany ACM SIGGRAPH Computer Graphics 35 4 Nov 2001 12 13 ISSN 0097 8930 Werner Purgathofer TU Wien Sichtbarkeitsverfahren University of Washington Hidden Surface Algorithms Michael Wand Matthias Fischer Ingmar Peter Friedhelm Meyer auf der Heide Wolfgang Strasser The Randomized z Buffer Algorithm Interactive Rendering of Highly Complex Scenes Abgerufen von https de wikipedia org w index php title Z Buffer amp oldid 236957739