Rasterisation

Rasterisation (oder rasterization) ist die Aufgabe, ein Image zu nehmen, das in einem Vektor-Grafikformat (Gestalten) beschrieben ist und es in ein Rasterimage (Pixel oder Punkte) für die Produktion auf einer Videoanzeige oder Drucker, oder für die Lagerung in einem bitmap Dateiformat umzuwandeln.

Einführung

Der Begriff "rasterisation" kann im Allgemeinen auf jeden Prozess angewandt werden, durch den Vektor-Information in ein Rasterformat umgewandelt werden kann.

Im normalen Gebrauch bezieht sich der Begriff auf den populären Übergabe-Algorithmus, um dreidimensionale Gestalten auf einem Computer zu zeigen. Rasterization ist zurzeit die populärste Technik, um Echtzeit-3D-Computergrafik zu erzeugen. Echtzeitanwendungen müssen sofort auf den Benutzereingang antworten, und müssen allgemein Rahmenraten von mindestens 24 Rahmen pro Sekunde erzeugen, um glatten Zeichentrickfilm zu erreichen.

Im Vergleich zu anderen Übergabe-Techniken wie Strahlenaufzeichnung ist rasterization äußerst schnell. Jedoch ist rasterization einfach der Prozess zu schätzen von der Szene-Geometrie bis Pixel kartografisch darzustellen, und schreibt keine besondere Weise vor, die Farbe jener Pixel zu schätzen. Die Schattierung, einschließlich der programmierbaren Schattierung, kann auf dem physischen leichten Transport oder künstlerischer Absicht basieren.

Der Prozess von rasterising 3D-Modellen auf ein 2. Flugzeug für die Anzeige auf einem Computerschirm wird häufig durch die feste Funktionshardware innerhalb der Grafikrohrleitung ausgeführt. Das ist, weil es keine Motivation gibt, für die Techniken für rasterisation zu modifizieren, der daran verwendet ist, machen Zeit, und ein System des speziellen Zwecks berücksichtigt hohe Leistungsfähigkeit.

Grundlegende Annäherung

Der grundlegendste rasterization Algorithmus nimmt eine 3D-Szene, die als Vielecke beschrieben ist, und macht sie auf eine 2. Oberfläche, gewöhnlich ein Computermonitor. Vielecke werden selbst als Sammlungen von Dreiecken vertreten. Dreiecke werden durch 3 Scheitelpunkte im 3D-Raum vertreten. An einem sehr grundlegenden Niveau, rasterizers nehmen einfach einen Strom von Scheitelpunkten, gestalten sie in entsprechende 2-dimensionale Punkte am Monitor des Zuschauers um und füllen die umgestalteten 2-dimensionalen Dreiecke als passend aus.

Transformationen

Transformationen werden gewöhnlich durch die Matrixmultiplikation durchgeführt. Mathematik von Quaternion kann auch verwendet werden, aber das ist außerhalb des Spielraums dieses Artikels. Die Haupttransformationen sind Übersetzung, Schuppen, Folge und Vorsprung. Ein 3 dimensionaler Scheitelpunkt kann durch das Vergrößern einer Extravariable (bekannt als eine "homogene Variable") umgestaltet werden und hat das Multiplizieren des resultierenden 4-Bestandteile-Scheitelpunkts durch 4 x 4 Transformationsmatrix verlassen.

Eine Übersetzung ist einfach die Bewegung eines Punkts von seiner ursprünglichen Position bis eine andere Position im 3-Räume-durch einen unveränderlichen Ausgleich. Übersetzungen können durch die folgende Matrix vertreten werden:

:

\begin {bmatrix }\

1 & 0 & 0 & X \\

0 & 1 & 0 & Y \\

0 & 0 & 1 & Z \\

0 & 0 & 0 & 1

\end {bmatrix }\

</Mathematik>

X sind Y, und Z die Ausgleiche in den 3 Dimensionen beziehungsweise.

Eine kletternde Transformation wird durch das Multiplizieren der Position eines Scheitelpunkts durch einen Skalarwert durchgeführt. Das hat die Wirkung, einen Scheitelpunkt in Bezug auf den Ursprung zu erklettern. Schuppen kann durch die folgende Matrix vertreten werden:

: \begin {bmatrix }\

X& 0 & 0 & 0 \\

0 & Y & 0 & 0 \\

0 & 0 & Z & 0 \\

0 & 0 & 0 & 1

\end {bmatrix }\</Mathematik>

X sind Y, und Z die Werte, mit denen jede der 3 Dimensionen multipliziert werden. Asymmetrisches Schuppen kann durch das Verändern der Werte von X, Y, und Z vollbracht werden.

Folge matrices hängt von der Achse ab, um die ein Punkt rotieren gelassen werden soll.

Folge über die X-Achse:

: \begin {bmatrix }\

1 & 0 & 0 & 0 \\

0 & \cos {\\theta} &-\sin {\\theta} & 0 \\

0 & \sin {\\theta} & \cos {\\theta} & 0 \\

0 & 0 & 0 & 1 \\

\end {bmatrix }\</Mathematik>

Folge über die Y-Achse:

: \begin {bmatrix }\

\cos {\\theta} & 0 & \sin {\\theta} & 0 \\

0 & 1 & 0 & 0 \\

- \sin {\\theta} & 0 & \cos {\\theta} & 0 \\

0 & 0 & 0 & 1\end {bmatrix }\</Mathematik>

Folge über die Z-Achse:

: \begin {bmatrix }\

\cos {\\theta} &-\sin {\\theta} & 0 & 0 \\

\sin {\\theta} & \cos {\\theta} & 0 & 0 \\

0 & 0 & 1 & 0 \\

0 & 0 & 0 & 1\end {bmatrix }\</Mathematik>

θ insgesamt jeder dieser Fälle vertreten den Winkel der Folge.

Eine Reihe der Übersetzung, des Schuppens und der Folge matrices kann die meisten Transformationen logisch beschreiben. Systeme von Rasterization verwenden allgemein einen Transformationsstapel, um den Strom von Eingangsscheitelpunkten in den Platz zu bewegen. Der Transformationsstapel ist ein Standardstapel, der matrices versorgt. Eingehende Scheitelpunkte werden mit dem Matrixstapel multipliziert.

Als ein veranschaulichendes Beispiel dessen, wie der Transformationsstapel verwendet wird, stellen Sie sich eine einfache Szene mit einem einzelnen Modell einer Person vor. Die Person ist Stehen aufrecht, einer willkürlichen Richtung gegenüberstehend, während sein Kopf in einer anderen Richtung gewandt wird. Die Person wird auch an einem bestimmten Ausgleich vom Ursprung gelegen. Ein Strom von Scheitelpunkten, dem Modell, würde geladen, um die Person zu vertreten. Erstens würde eine Übersetzungsmatrix auf den Stapel gedrängt, das Modell zur richtigen Position zu bewegen. Eine kletternde Matrix würde auf den Stapel gedrängt, das Modell richtig nach Größen zu ordnen. Eine Folge über die Y-Achse würde auf den Stapel gedrängt, das Modell richtig zu orientieren. Dann würde der Strom von Scheitelpunkten, die den Körper vertreten, durch den rasterizer gesandt. Da der Kopf einer verschiedenen Richtung gegenübersteht, würde die Folge-Matrix plötzlich verschwunden die Spitze des Stapels und einer verschiedenen Folge-Matrix über die Y-Achse mit einem verschiedenen Winkel würde gestoßen. Schließlich würde der Strom von Scheitelpunkten, die den Kopf vertreten, an den rasterizer gesandt.

Nachdem alle Punkte in ihre gewünschten Positionen im 3-Räume-in Bezug auf den Zuschauer umgestaltet worden sind, müssen sie ins 2. Bildflugzeug umgestaltet werden. Der einfachste Vorsprung, der orthografische Vorsprung, ist einfach mit dem Entfernen des z Bestandteils von umgestalteten 3. Scheitelpunkten verbunden. Orthografische Vorsprünge haben das Eigentum, dass alle parallelen Linien im 3-Räume-parallel in der 2. Darstellung bleiben werden. Jedoch sind echte Weltimages Perspektiveimages mit entfernten Gegenständen, die kleiner scheinen als Gegenstände in der Nähe vom Zuschauer. Eine Perspektivevorsprung-Transformation muss auf diese Punkte angewandt werden.

Begrifflich ist die Idee, das Perspektivebetrachtungsvolumen ins orthogonale Betrachtungsvolumen umzugestalten. Das Perspektivebetrachtungsvolumen ist ein frustum, d. h. eine gestutzte Pyramide. Das orthografische Betrachtungsvolumen ist ein rechteckiger Kasten, wo sowohl die nahen als auch weiten Betrachtungsflugzeuge zum Bildflugzeug parallel sind.

Eine Perspektivevorsprung-Transformation kann durch die folgende Matrix vertreten werden:

: \begin {bmatrix }\1 & 0 & 0 & 0 \\0 & 1 & 0 & 0 \\

0 & 0 & (N+F)/N &-F \\

0 & 0 & 1/N & 0

\end {bmatrix }\</Mathematik>

F und N hier sind die Entfernungen der weiten und nahen Betrachtungsflugzeuge beziehungsweise. Der resultierende vier Vektor wird ein Vektor sein, wo die homogene Variable nicht 1 ist. Das Homogenisieren des Vektoren oder das Multiplizieren davon durch das Gegenteil der homogenen solcher Variable, dass die homogene Variable einheitlich wird, geben uns unsere resultierende 2. Position im x und den Y-Koordinaten.

Ausschnitt

Sobald Dreieck-Scheitelpunkte in ihre richtigen 2. Positionen umgestaltet werden, können einige dieser Positionen außerhalb des Betrachtungsfensters oder des Gebiets auf dem Schirm sein, dem Pixel wirklich geschrieben werden. Ausschnitt ist der Prozess, Dreiecke zu stutzen, um sie innerhalb des Betrachtungsgebiets zu passen.

Die allgemeinste Technik ist der Sutherland-Hodgeman, der Algorithmus klammert. In dieser Annäherung wird jeder der 4 Ränder des Bildflugzeugs auf einmal geprüft. Für jeden Rand, prüfen Sie alle zu machenden Punkte. Wenn der Punkt außerhalb des Randes ist, wird der Punkt entfernt. Für jeden Dreieck-Rand, der durch den Bildflugzeug-Rand durchgeschnitten wird, d. h. ist ein Scheitelpunkt des Randes innerhalb des Images, und ein anderer ist draußen, ein Punkt wird an der Kreuzung eingefügt, und der Außenpunkt wird entfernt.

Ansehen-Konvertierung

Der Endschritt im traditionellen Rasterization-Prozess ist, die 2. Dreiecke auszufüllen, die jetzt im Bildflugzeug sind. Das ist auch bekannt als Ansehen-Konvertierung.

Das erste Problem in Betracht zu ziehen besteht darin, ob man ein Pixel überhaupt zieht. Für ein zu machendes Pixel muss es innerhalb eines Dreiecks sein, und es muss nicht verschlossen, oder durch ein anderes Pixel blockiert werden. Es gibt mehrere Algorithmen, um Pixel innerhalb eines Dreiecks auszufüllen, von denen das populärste der scanline Algorithmus ist. Da es schwierig ist zu wissen, dass der rasterization Motor alle Pixel von vorne nach hinten ziehen wird, muss es eine Weise geben sicherzustellen, dass Pixel in der Nähe vom Zuschauer durch Pixel weit weg nicht überschrieben werden. Ein z Puffer ist die allgemeinste Lösung. Der z Puffer ist eine 2. Reihe entsprechend dem Bildflugzeug, das einen Tiefe-Wert für jedes Pixel versorgt. Wann auch immer ein Pixel gezogen wird, aktualisiert es den z Puffer mit seinem Tiefe-Wert. Jedes neue Pixel muss seinen Tiefe-Wert gegen den z Pufferwert überprüfen, bevor es gezogen wird. Nähere Pixel werden gezogen, und weitere Pixel werden ignoriert.

Um eine Farbe eines Pixels herauszufinden, müssen Texturen und allmählich übergehende Berechnungen angewandt werden. Eine Textur-Karte ist ein bitmap, der auf ein Dreieck angewandt wird, um seinen Blick zu definieren. Jeder Dreieck-Scheitelpunkt wird auch mit einer Textur und einer Textur-Koordinate (u, v) für normale 2. Texturen zusätzlich zu seiner Positionskoordinate vereinigt. Jedes Mal, wenn ein Pixel auf einem Dreieck gemacht wird, muss der entsprechende texel (oder Textur-Element) in der Textur gefunden werden. Das wird durch das Interpolieren zwischen den verbundenen Textur-Koordinaten der Scheitelpunkte des Dreiecks durch die Pixel Bildschirmentfernung von den Scheitelpunkten getan. In Perspektivevorsprüngen wird Interpolation auf den durch die Tiefe des Scheitelpunkts geteilten Textur-Koordinaten durchgeführt, um ein Problem zu vermeiden, das als perspektivische Perspektiveverkürzung (ein Prozess bekannt ist, der als Perspektive texturing bekannt ist).

Bevor die Endfarbe des Pixels entschieden werden kann, muss eine sich entzündende Berechnung durchgeführt werden, um die Pixel zu beschatten, die auf irgendwelchen Lichtern gestützt sind, die in der Szene da sein können. Es gibt allgemein drei leichte in Szenen allgemein verwendete Typen. Richtungslichter sind Lichter, die aus einer einzelnen Richtung kommen und dieselbe Intensität überall in der kompletten Szene haben. Im echten Leben kommt Sonnenlicht in der Nähe davon, ein Richtungslicht zu sein, wie die Sonne bis jetzt weg ist, dass Strahlen von der Sonne parallel Erdbeobachtern scheinen und die Verminderung unwesentlich ist. Punkt-Lichter sind Lichter mit einer bestimmten Position im Raum und strahlen Licht gleichmäßig in allen Richtungen aus. Punkt-Lichter sind gewöhnlich einer Form der Verdünnung unterworfen, oder gehen in der Intensität des leichten Ereignisses auf Gegenständen weiter weg zurück. Echte Lebenslicht-Quellen erfahren quadratische Verminderung. Schließlich sind Scheinwerfer wahren Scheinwerfern, mit einem bestimmten Punkt im Raum, einer Richtung und einem Winkel ähnlich, der den Kegel des Scheinwerfers definiert. Es gibt auch häufig einen umgebenden leichten Wert, der zu allen sich entzündenden Endberechnungen hinzugefügt wird, um globale Beleuchtungseffekten willkürlich zu ersetzen, die rasterization richtig nicht berechnen kann.

Es gibt mehrere allmählich übergehende Algorithmen für rasterizers. Alle allmählich übergehenden Algorithmen müssen für Entfernung vom Licht und dem normalen Vektoren des beschatteten Gegenstands in Bezug auf die Ereignis-Richtung des Lichtes verantwortlich sein. Die schnellsten Algorithmen beschatten einfach alle Pixel auf jedem gegebenen Dreieck mit einem einzelnen sich entzündenden Wert, auch bekannt als flache Schattierung. Es gibt keine Weise, das Trugbild von glatten Oberflächen dieser Weg zu schaffen, außer durch das Unterteilen in viele kleine Dreiecke. Algorithmen können auch Scheitelpunkte getrennt beschatten, und den sich entzündenden Wert der Scheitelpunkte interpolieren, wenn sie Pixel ziehen. Das ist als Schattierung von Gouraud bekannt. Die langsamste und realistischste Annäherung soll Beleuchtung getrennt für jedes Pixel, auch bekannt als Schattierung von Phong berechnen. Das führt bilineare Interpolation des durch

normale Vektoren und Gebrauch das Ergebnis, lokale sich entzündende Berechnung zu tun.

Beschleunigungstechniken

Um die maximale Leistung aus jedem rasterization Motor herauszuziehen, sollte eine minimale Zahl von Vielecken an den renderer gesandt werden. Mehrere Beschleunigungstechniken sind mit der Zeit entwickelt worden, um Gegenstände zu pflücken, die nicht gesehen werden können.

Das Auswählen von Backface

Die einfachste Weise, Vielecke zu pflücken, ist, alle Vielecke zu pflücken, die weg vom Zuschauer liegen. Das ist als backface das Auswählen bekannt. Da die meisten 3. Gegenstände völlig eingeschlossen werden, werden Vielecke, die weg von einem Zuschauer liegen, immer durch Vielecke blockiert, die zum Zuschauer liegen, wenn der Zuschauer innerhalb des Gegenstands nicht ist. Eine Einfassungen eines Vielecks wird durch sein Winden oder die Ordnung definiert, in der seine Scheitelpunkte an den renderer gesandt werden. Ein renderer kann entweder im Uhrzeigersinn definieren oder gegen den Uhrzeigersinn sich als Vorderseite oder Zurückeinfassungen windend. Sobald ein Vieleck in den Schirm-Raum umgestaltet worden ist, kann sein Winden überprüft werden, und wenn es in der entgegengesetzten Richtung ist, wird es überhaupt nicht gezogen. Natürlich, backface das Auswählen kann mit degenerierten und eröffneten Volumina nicht verwendet werden.

Raumdatenstrukturen

Fortgeschrittenere Techniken verwenden Datenstrukturen, um Gegenstände zu pflücken, die entweder außerhalb des Betrachtungsvolumens sind oder durch andere Gegenstände verschlossen werden. Die allgemeinsten Datenstrukturen sind binäre Raumteilungen, octrees, und Zelle und das Pfortauswählen.

Weitere Verbesserungen

Während der grundlegende Rasterization-Prozess seit Jahrzehnten bekannt gewesen ist, setzen moderne Anwendungen fort, Optimierungen und Hinzufügungen zu machen, um die Reihe von Möglichkeiten für den rasterization Übergabe des Motors zu vergrößern.

Textur-Entstörung

Texturen werden an spezifischen Entschlossenheiten geschaffen, aber da die Oberfläche, auf die sie angewandt werden, in jeder Entfernung vom Zuschauer sein kann, können sie an willkürlichen Größen auf dem Endimage auftauchen. Infolgedessen entspricht ein Pixel auf dem Schirm gewöhnlich direkt zu einem texel nicht. Eine Form der durchscheinenden Technik muss angewandt werden, um saubere Images in jeder Entfernung zu schaffen. Eine Vielfalt von Methoden, ist mit verschiedenen Umtauschen zwischen Bildqualität und rechenbetonter Kompliziertheit verfügbar.

Kartografisch darstellende Umgebung

Kartografisch darstellende Umgebung ist eine Form der kartografisch darstellenden Textur, in dem die Textur-Koordinaten von der Ansicht abhängig sind. Eine allgemeine Anwendung soll zum Beispiel Nachdenken über einen glänzenden Gegenstand vortäuschen. Man kann Umgebung, das Interieur eines Zimmers zu einer Metalltasse in einem Zimmer kartografisch darzustellen. Da sich der Zuschauer über die Tasse bewegt, bewegen sich die Textur-Koordinaten der Scheitelpunkte der Tasse entsprechend, das Trugbild von reflektierendem Metall zur Verfügung stellend.

Kartografisch darstellende Beule

Kartografisch darstellende Beule ist eine andere Form der kartografisch darstellenden Textur, der Pixel mit der Farbe, aber eher mit der Tiefe nicht versorgt. Besonders mit dem modernen Pixel shaders (sieh unten) schafft kartografisch darstellende Beule das Gefühl der Ansicht und von der Beleuchtung abhängigen Rauheit auf einer Oberfläche, um Realismus außerordentlich zu erhöhen.

Niveau des Details

In vielen modernen Anwendungen kann die Zahl von Vielecken in jeder Szene phänomenal sein. Jedoch wird ein Zuschauer in einer Szene nur im Stande sein, Details nahe bei Gegenständen wahrzunehmen. Das Niveau von Detail-Algorithmen ändert die Kompliziertheit der Geometrie als eine Funktion der Entfernung dem Zuschauer. Gegenstände direkt vor dem Zuschauer können an der vollen Kompliziertheit gemacht werden, während Gegenstände weiter weg dynamisch vereinfacht, oder sogar völlig mit Elfen ersetzt werden können.

Schatten

Sich entzündende Berechnungen im traditionellen Rasterization-Prozess sind für Gegenstand-Verstopfung nicht verantwortlich. Schatten kartografisch darstellende und Schattenvolumina ist zwei allgemeine moderne Techniken, um Schatten zu schaffen.

Hardware-Beschleunigung

In den 1990er Jahren anfangend, ist die Hardware-Beschleunigung für normale Verbrauchertischcomputer die Norm geworden. Wohingegen sich Grafikprogrammierer früher auf den handcodierten Zusammenbau verlassen hatten, um ihre Programme laufen zu lassen, werden schnelle, modernste Programme geschrieben, um mit einem der vorhandenen Grafik-APIs zu verbinden, der einen hingebungsvollen GPU steuert.

Die letzten GPUs zeigen Unterstützung für das programmierbare Pixel shaders, die drastisch die Fähigkeiten zu Programmierern verbessern. Die Tendenz ist zu vollem programmability der Grafikrohrleitung.

Siehe auch

Links


Punktmatrix / HPGL
Impressum & Datenschutz