3Dsource.de: Infos rund um 3D-Computergrafik, OpenGL und VRML | |
Telefon-Tarife VDI - Arbeitskreis Fahrzeugtechnik Beschallungsanlagen und Elektroakustik Heise-News |
Grundlegende mathematische Verfahren der 3D-VisualisierungDieser Bereich gibt eine Einführung in die Problematik der dreidimensionalen Computergrafik. Ein Tipp: Von den vielen Formeln nicht abschrecken lassen... Es reicht auch, sich die Begriffe und Bilder anzusehen, um ungefähr den Ablauf zu erfassen ;-)
Formelzeichen:
[zum Seitenanfang] Problem der VisualisierungBetrachtet man ein dreidimensionales Objekt, so erfasst das Auge dieses Objekt zuerst mit seiner Breite und seiner Höhe. Durch die optische Kopplung von zwei Aufnahmegeräten - dem linken und dem rechten Auge - erkennt man zusätzlich die Entfernung zum Objekt und dessen Ausdehnung in der Tiefe. Das Problem der Visualisierung besteht nun darin, dieses dreidimensionale Objekt auf einem zweidimensionalen Ausgabegerät so darzustellen, dass man aus beiden Darstellungen die gleichen Informationen gewinnen kann. Um das grundsätzliche Herangehen an dieses Problem vorzustellen, wird im folgenden der Eckpunkt eines Quaders betrachtet. Der Punkt hat dabei kein massgebliches Volumen, sondern nur eine räumliche Position.
Bild 1 definiert die räumliche Position des Punktes P bezüglich eines rechtwinkligen und rechtsorientierten Koordinatensystems (x, y, z). Der Punkt P ist also durch seine Koordinaten (xP, yP, zP) eindeutig bestimmt. Um diesen Punkt nun auf einer zweidimensionalen Ebene abzubilden, soll der Betrachter einen Scheinwerfer auf dieses Objekt richten. Die Lichtstrahlen des Scheinwerfers treffen dann hinter dem Punkt auf eine Projektionsleinwand bzw. Bildfläche.
Bild 2 zeigt den Verlauf eines Lichtstrahls vom Scheinwerfer S (xS, yS, zS) über den Punkt P (xP, yP, zP) hin zur Bildfläche B. Der Punkt P wird jetzt auf der im Koordinatenursprung verankerten Bildfläche B als Punkt P' mit den neuen Koordinaten (xP', yP', zP') abgebildet. Mit dieser Vorgehensweise - Festlegen eines Bezugssystems, Definition eines Objektes in diesem Bezugssystem, Projektion aller Punkte auf eine Leinwand - ist es also möglich, die Informationen des dreidimensionalen Raumes auf eine Ebene abzubilden. Für die Anwendung in der Computergrafik bleibt dieser prinzipielle Ablauf erhalten, muss aber noch durch wesentliche Zwischenschritte ergänzt werden. Diese Erweiterungen betreffen die Darstellung komplexer Szenen, das Beschreiben von Transformationen durch Matrizen und deren Verkettung durch Matrizenmultiplikationen sowie die Übertragung der Bildfläche auf die tatsächlich vorhandene Ausgabefläche. [zum Seitenanfang]BasistransformationenDieses Kapitel beschreibt die mathematische Ausführung bestimmter Operationen, die im Zusammenhang mit einer 3D-Visualisierung von Bedeutung sind. Diese Operationen werden unabhängig voneinander vorgestellt. Ausgehend von diesem Kapitel wird es dann möglich, die Modellierung einer komplexen Szene abstrakt zu beschreiben. Beschreibung eines Punktes in homogenen KoordinatenIm folgenden wird auf das aus Bild 1 bekannte rechtwinklige, rechtsorientierte Koordinatensystem (x, y, z) Bezug genommen. Der Punkt P (xP, yP, zP) entspricht einem beliebigen Punkt im Raum. Die Position eines Punktes P ist somit eindeutig durch seine drei Koordinaten bestimmt. Speziell im Bereich der Computergrafik ist es allerdings üblich, einen Punkt im dreidimensionalen Raum durch vier Koordinaten zu beschreiben. Der Vorteil einer solchen Schreibweise wird erst in den nächsten Abschnitten deutlich: Man kann so beliebige Lageänderungen eines Körpers auf Matrizenmultiplikationen zurückführen. Die zusätzlich eingeführte vierte Komponente w wird als homogene Komponente bezeichnet, die resultierenden Koordinaten als homogene Koordinaten. Definiert ist die Darstellung eines Punktes P in homogenen Koordinaten wie folgt: Gleichung 1: Durch das Mitführen von wP bleibt der Punkt P auch bei zahlenmässig veränderten Koordinaten mit P (xP, yP, zP, wP) immer noch eindeutig beschrieben. Der Umgang mit homogenen Koordinaten wird allerdings unkomplizierter, wenn man der homogenen Komponente eines Punktes grundsätzlich den Wert wP = 1 zuweist. Dadurch ergeben sich die homogenen Punktkoordinaten immer zu (xP, yP, zP, 1), wobei die Werte der einzelnen homogenen Elemente xP, yP und zP denen der kartesischen x, y und z entsprechen. Man vermeidet so die echte Umrechnung der kartesischen in homogene Koordinaten. Eine weitere Eigenschaft der homogen Koordinaten wird erkennbar, wenn man einen zweiten Punkt Q (xQ, yQ, zQ, 1) in die Betrachtung einbezieht.
Bild 3 definiert die Punkte P und Q mit konkreten Koordinaten und zeigt deren Ortsvektoren bzw. sowie den Richtungsvektor von Q auf P. Die Bestimmung der Ortsvektoren geschieht durch einfaches Transponieren der Punktkoordinaten. Um den Richtungsvektor zu berechnen, muss man die Differenz der Ortsvektoren bilden Gleichung 2: Die homogene Koordinate des Richtungsvektors wird also gleich Null. Damit bieten die homogenen Koordinaten in diesem Fall auch den Vorteil einer eindeutigen Unterscheidungsmöglichkeit zwischen Ortsvektor (w > 0) und Richtungsvektor (w = 0). Damit sich diese Unterscheidungsmöglichkeit immer ergibt, gelten im Bereich der Computergrafik folgende Voraussetzungen:
In den folgenden Abschnitten werden diese Vereinbarungen berücksichtigt. [zum Seitenanfang]TranslationZur Realisierung einer komplexen Szene oder zur Animation eines Objektes wird es notwendig sein, bestimmte Punkte an andere Positionen zu verschieben. Ein Teil der dafür notwendigen Transformationen lässt sich durch eine Translation realisieren, deren formelmässige Darstellung im folgenden hergeleitet wird.
Zur Herleitung der Translationsmatrix TM sei ein Punkt P mit den Koordinaten (xP, yP, zP, wP) gegeben, der zum Beispiel den Eckpunkt einer Fläche darstellen kann (Bild 4). Verschiebt man diesen Punkt nun entlang der Koordinatenachsen um dx bzw. dy, so ergeben sich die Koordinaten des verschobenen Punktes P* zu (xP*, yP*, zP*, wP*). Die veränderten Koordinaten xP* und yP* lassen sich durch die folgenden Gleichungen berechnen Gleichung 3: Um auch eine Verschiebung parallel zur z-Achse realisieren zu können, muss eine entsprechende Gleichung für zP* aufgestellt werden. Die homogenen Komponenten beider Punkte ergeben sich definitionsgemäss zu eins. Für den dreidimensionalen Raum und unter Verwendung homogener Koordinaten ergibt sich so die allgemeinen Translationsgleichung Gleichung 4: Die linke Seite der Gleichung (4) entspricht den transponierten Koordinaten des Punktes P*, während auf der rechten Seite die 4x4-Translationsmatrix TM sowie die Ausgangsposition, also die transponierten Koordinaten von P, zu erkennen sind. In Vektorschreibweise lässt sich damit eine besser lesbare Gleichung formulieren Gleichung 5: RotationZur Animation einer Szene wird die Berücksichtigung der Translation nicht ausreichen, da sich so nur drei Freiheitsgrade eines Objektes beschreiben lassen. In diesem Abschnitt sollen deshalb die Rotationsmatrizen hergeleitet werden.
Beispielhaft wird ein Punkt P um die z-Achse gedreht. Zum leichteren Verständnis der Zusammenhänge soll P wiederum der Eckpunkt einer Fläche sein. Bild 5 zeigt dazu die durch den Punkt P gekennzeichnete Ausgangslage unter dem Winkel , die Position P* nach einer weiteren Drehung mit dem Winkel sowie zum Vergleich eine nicht gedrehte, horizontale Lage. Die Drehung genau um die z-Achse des Koordinatensystems wird durch die Verankerung eines bestimmten Eckpunktes der Fläche im Koordinatenursprung sichergestellt. Mit der in Bild 5 eingezeichneten Seitenlänge der Fläche sowie den Winkeln und lassen sich die x,y-Koordinaten der Punkte P (xP, yP, zP, wP) und P* (xP*, yP*, zP*, wP*) angeben Gleichung 6: Die z- und w-Koordinaten bleiben unverändert, so dass sich nach durchgeführter Rotation um den Winkel noch kein offensichtlicher Zusammenhang zwischen (xP, yP) und (xP*, yP*) erkennen lässt. Greift man allerdings auf die Additionstheoreme der trigonometrischen Funktionen zurück, so lassen sich die Gleichungen für xP* und yP* auch anders schreiben Gleichung 7: Jetzt kann die Ausgangsposition (xP, yP) gemäss Gleichung (6) in die gefundene Gleichung (7) eingesetzt werden, wodurch die unbekannten Grössen und herausfallen. Die gesamte Rotationsgleichung für eine Drehung um die z-Achse ergibt sich so zu Gleichung 8: Für die Drehungen um die x- bzw. y-Achse gelten die gleichen Zusammenhänge, so dass hier nur die endgültigen Gleichungen genannt werden. Für die Drehung um die x-Achse gilt Gleichung 9: und für die Drehung um die y-Achse Gleichung 10: Die soeben hergeleiteten 4x4-Matrizen aus den Gleichungen (8), (9) und (10) sollen im folgenden mit Rz, Rx bzw. Ry bezeichnet werden. Mit diesen Transformationsmatrizen lässt sich bereits eine beliebige Veränderung der Position und Orientierung von Objekten berechnen. Allerdings muss die Drehung eines Objektes immer auf eine - kombinierte - Drehung um die Koordinatenachsen zurückgeführt werden. Um diese Einschränkung nicht in Kauf nehmen zu müssen, soll hier noch eine weitere Rotationsmatrix abgeleitet werden, mit der sich unter Angabe einer Achse und eines Winkels eine beliebige Drehung realisieren lässt. Zur Beschreibung der Drehachse sei ein Punkt P mit den homogenen Koordinaten (xP, yP, zP, 1) vorgegeben, um die ein beliebiges Objekt mit dem Winkel gedreht werden soll. Die Drehachse entspricht dabei dem Richtungsvektor (xP, yP, zP, 0). Normiert man die Koordinaten von P Gleichung 11: und bezeichnet diese mit (x, y, z, 1), so ist der neue Richtungsvektor (x, y, z, 0) identisch mit dem Richtungsvektor der nicht normierten Koordinaten. Da mit P nur die Drehachse - also ein Richtungsvektor - gekennzeichnet werden soll, kann auf die Berücksichtigung der ursprünglichen Koordinaten von P verzichtet werden.
Unter diesen Voraussetzungen geht die Angabe von P in allgemeinen Koordinaten (xP, yP, zP, 1) über in die Angabe in normierten Koordinaten (x, y, z, 1), so dass sich P in einem normierten Koordinatensystem abbilden lässt. Bild 6 zeigt eine auf die wesentlichen Angaben reduzierte Darstellung:P mit normierten Koordinaten ohne die Angabe der homogenen Komponente w = 1, den Ortsvektor sowie die hervorgehobenen Ebenen x,y und x,z. Der Ortsvektor soll jetzt schrittweise aus diesen markierten Ebenen herausgedreht werden, so dass er deckungsgleich zur x-Achse zu liegen kommt. Dadurch wird es möglich, die eigentliche Drehung um den Winkel mit der bereits hergeleiteten Rotationsmatrix Rx zu beschreiben.
Bild 7 zeigt das Koordinatensystem aus Bild 6 mit der Ansicht von oben. Der Ortsvektor wird dadurch in die x,z-Ebene projiziert. Die Länge xz dieser Projektion ist dabei nicht identisch mit der Länge des gesamten Vektors und muss deshalb noch berechnet werden Gleichung 12: Um die Projektion parallel zur x-Achse auszurichten, ist eine Drehung um die y-Achse mit dem Winkel notwendig. Nach den Beziehungen im rechtwinkligen Dreieck lassen sich dafür der Sinus und der Kosinus von bestimmen Gleichung 13: Setzt man die Winkelbeziehungen (13) nun in die aus Gleichung (10) bekannte Rotationsmatrix Ry ein, so ergibt sich die erste Rotationsmatrix R1 zu Gleichung 14: Der projizierte Richtungsvektor weist nach dieser ersten Drehung auf den Punkt (xy, 0). Da sich seine Länge nicht geändert haben kann, entspricht die neue Koordinate xy demnach der Länge xz. Wechselt man jetzt, also nach abgeschlossener Teiltransformation in die Ansicht von vorn, so erhält man die in Bild 8 dargestellte Abbildung.
Berechnet man die Länge xy nach Gleichung 15: und berücksichtigt die Normierung nach Gleichung (11), so bestimmt sich xy immer zu xy = 1. Die Projektion mit der Länge xy entspricht also dem eigentlichen Vektor . Dadurch lassen sich die Winkelbeziehungen sehr einfach formulieren Gleichung 16: Mit den Gleichungen (16) ergibt sich dann aus der Rotationsgleichung (8) die zweite Rotationsmatrix R2 zu Gleichung 17: Jetzt zeigt der Vektor in die gleiche Richtung wie die x-Achse, so dass die Matrix Rx aus Gleichung (9) direkt zur Rotation mit dem Winkel genutzt werden kann Gleichung 18: Mit den jetzt bekannten Matrizen lässt sich eine allgemeingültige Rotationsmatrix RM aufstellen Gleichung 19: die sich mit den Gleichungen (14), (17) und (18) zu Gleichung 20: ergibt. Für die speziellen Richtungsvektoren (1, 0, 0), (0, 1, 0) und (0, 0, 1) geht die Matrix RM notwendigerweise in die speziellen Rotationsmatrizen Rx, Ry bzw. Rz über. Die ausführlicher Herleitung der Rotationsmatrix RM findet man hier (pdf). [zum Seitenanfang]Skalierung und SpiegelungUm ein bereits definiertes Objekt in einer anderen Grösse darstellen zu können, variiert man die Abstände seiner Eckpunkte. Als Beispiel wird hierzu eine ähnliche Darstellung wie zur Herleitung der Translation aus Bild 4 gewählt. Die linke untere Ecke des Vierecks bleibt jetzt allerdings mit dem Koordinatenursprung verbunden, während der Eckpunkt P nach der Skalierung die gleichen Koordinaten wie nach der Translation aus dem Abschnitt zur Translation erreichen soll.
Bild 9 zeigt die Darstellung einer skalierten Fläche, deren rechter oberer Eckpunkt P bzw. P* die Gegebenheiten vor bzw. nach durchgeführter Transformation kennzeichnet. Um eine derartigeGrössenänderung zu erreichen, werden die Koordinaten aller Punkte mit einem bestimmten Skalierungsfaktor multipliziert. Am Beispiel der x,y-Koordinaten von P heisst das Gleichung 21: Zur Realisierung dieser Gleichungen mit Hilfe einer Skalierungsmatrix SM nutzt man das bereits bei den anderen Matrizen verwendete Prinzip Gleichung 22: Mit der Schreibweise nach Gleichung (22) kann für jede Koordinatenrichtung ein eigener Skalierungsfaktor verwendet werden. Sind die Faktoren Sx, Sy und Sz betragsmässig ungleich und positiv, ergibt sich eine Verzerrung des Objektes, also ein Stauchen oder Strecken in beliebiger Richtung. Werden einzelne Faktoren Sx/y/z mit einem negativen Vorzeichen in die Gleichung (22) eingesetzt, so ergibt sich eine Spiegelung des Objektes. Eine Spiegelung ist damit - mathematisch gesehen - nur ein Sonderfall der Skalierung.
Bild 10 zeigt einen Teil der Variationsmöglichkeiten unter Verwendung der Gleichung (22). Sinngemäss lassen sich so auch andere Spiegelungen - bei gleichzeitiger Verzerrung - festlegen. Mit den jetzt bekannten Transformationen (Translation, Rotation und Skalierung) wird es also möglich, ein Objekt mit verschiedenen Grössen (Skalierung) und Formen (Verzerrung) auf beliebigen Positionen im Raum abzubilden. Eine gemeinsame Anwendung dieser Verfahren zeigt der nächste Abschnitt. [zum Seitenanfang]Unterscheidung zwischen Modell- und WeltkoordinatenIn diesem Abschnitt geht es darum, aus mehreren gleichartigen Objekten eine komplexere Szene zusammenzustellen. Dabei sollen möglichst wenige Operationen zur vollständigen Beschreibung ausreichen. Grundsätzliche BetrachtungEin geometrisches Objekt lässt sich durch eine geschlossene Verbindung mehrerer Punkte über bestimmte Kurven beschreiben. Die Lage eines dieser Punkte P wird dabei durch seine Koordinaten (xP, yP, zP) festgelegt. Das hierfür benötigte Bezugssystem wird so gewählt, dass sich dieses spezielle Objekt möglichst einfach beschreiben lässt. Ein derartiges Koordinatensystem wird als Modellkoordinatensystem (x, y, z) oder auch MC (master coordinate system) bezeichnet. Bild 11 zeigt 8 Punkte, die in einem beispielhaften Modellkoordinatensystem definiert sind. Die Verbindung bestimmter Punkte durch Linien ergibt die Darstellung eines Quaders.
Die einfache Beschreibung dieses Körpers ist dadurch gekennzeichnet, dass ein Teil der Punkte auf jeweils einer Koordinatenachse liegt. Beim Zusammenstellen des Objektes ist es leichter, die gewünschten Seitenlängen direkt auf die Achsen zu übertragen, als eine Umrechnung auf eine beliebig verschobene und verdrehte Position im Raum vorzunehmen. Jetzt soll eine Szene, bestehend aus zwei Quadern mit der gleichen Geometrie, aufgebaut werden. Eine Möglichkeit zu deren Realisierung ist die Definition eines zweiten Quaders bezüglich des Koordinatensystem des ersten Quaders. Damit sind zwei wesentliche Konsequenzen verbunden: Der zweite Quader lässt sich nicht mehr einfach - im Sinne weniger Punkte ausserhalb der Koordinatenachsen - beschreiben. Ausserdem muss der Verlauf der Verbindungslinien (Geradengleichung: y = m·x + n) zwischen den Punkten für diesen Quader neu bestimmt werden. Eine andere Möglichkeit besteht nun darin, das bereits definierte MC einschliesslich des Quaders zu duplizieren und die Positionen dieser beiden Modellkoordinatensysteme in Bezug auf ein drittes Koordinatensystem zu beschreiben. Im Bereich der Computergrafik wird hierzu auf ein speziell definiertes unabhängiges Koordinatensystem zurückgegriffen, das als Weltkoordinatensystem bezeichnet wird. Die übliche Kurzschreibweise lautet WC (world coordinate system). Zur Unterscheidung von einem Modellkoordinatensystem werden dessen Achsen im folgenden mit Grossbuchstaben (X, Y, Z) beschriftet.
In Bild 12 ist eine nach dem zweiten Verfahren - Bestimmung der relativen Positionen - zusammengestellte Szene zu erkennen. Das aus Bild 11 bekannte Modellkoordinatensystem mit dem darin definierten Quader wurde hierzu dupliziert und die mit MC1 und MC2 bezeichneten Kopien an bestimmte Positionen im Raum verschoben. Die Positionierung eines Objektes bezüglich des Weltkoordinatensystems bezeichnet man als Modelltransformation. Eine Modelltransformation besteht im allgemeinen aus mehreren, in einer bestimmten Reihenfolge ausgeführten Transformationsschritten. Zum leichteren Verständnis werden die Einzelschritte zur Positionierung eines Modellkoordinatensystems - und damit auch dem entsprechenden Objekt - im nächsten Abschnitt ausführlich vorgestellt. [zum Seitenanfang]Modelltransformation an einem BeispielDie Positionierung eines Objektes im Raum lässt sich durch eine Modelltransformation realisieren. Dabei wird ein deckungsgleich zum Weltkoordinatensystem liegendes MC durch die schrittweise Ausführung von Einzeltransformationen gedanklich in die gewünschte räumliche Lage gebracht. Soll jetzt ein Objekt in diesem MC definiert werden, bildet man dazu das Objekt zuerst im WC ab und multipliziert dann die Koordinaten aller Objektpunkte mit den einzelnen Transformationsmatrizen, die zur Positionierung des MC benötigt wurden. Als Ergebnis erhält man die Weltkoordinaten des Objektes, kann dieses also mit der korrekten Lage und Orientierung im Raum abbilden.
Im allgemeinen besteht eine Modelltransformation aus einer aufeinanderfolgenden Ausführung von Rotation, Translation, Skalierung und Spiegelung. Für das folgende Beispiel soll aber eine mehrfache Rotation ausreichen. Bild 13 links zeigt dazu ein deckungsgleich zum WC (X, Y, Z) liegendes MC (x, y, z), in dem bereits ein würfelförmiges Objekt definiert ist. Das Objekt soll dabei nur der besseren Erkennbarkeit dienen, denn grundsätzlich ist die Definition eines Objektes vor abgeschlossener Positionierung des MC nicht notwendig. Im folgenden wird dieses MC von der in Bild 13 links erkennbaren Position in die Position gemäss Bild 13 rechts transformiert. Damit die Rotationen um die Achsen des Modellkoordinatensystems erfolgen können, werden die Richtungsvektoren der Achsen (x, y, z) durch die drei - in Weltkoordinaten angegebenen - Punkte Px (1, 0, 0), Py (0, 1, 0) und Pz (0, 0, 1) beschrieben. Der erste Schritt der Modelltransformation soll nun eine Rotation um die z-Achse, beschrieben durch Pz (0, 0, 1), und dem Winkel sein. Dafür lässt sich gemäss Gleichung (20) eine Rotationsmatrix RM1 aufstellen Gleichung 23: Beim Berechnen von Gleichung (23) wurde auf die symbolische Schreibweise verzichtet, da sich so auch die nächsten Transformationsmatrizen einfacher schreiben lassen. Für die Beispielrechnung soll die Ungenauigkeit durch die gerundeten Zwischenergebnisse in Kauf genommen werden. Mit der Transformationsmatrix RM1 lassen sich jetzt die Koordinaten der Punkte Px, Py und Pz berechnen. Pz bleibt für diesen Transformationsschritt unverändert, so dass nur die Punkte Px auf (0.87, 0.5, 0) und Py auf (-0.5, 0.87, ) transformiert werden. Die Zahlenangaben ermöglichen ein einfaches Skizzieren des gedrehten Koordinatensystems (Bild 14 links).
Der nächste Schritt soll aus einer Drehung um die y-Achse mit dem Winkel bestehen. Dabei ist zu beachten, dass zur Beschreibung der Drehachse in Gleichung (20) die Koordinaten des transformierten Punktes Py einzusetzen sind. Die zweite Transformationsmatrix ergibt sich deshalb zu Gleichung 24: Durch Multiplikation der Koordinaten mit RM2 berechnen sich die neuen Positionen der Punkte zu Px (0.75, 0.43, -0.5) und Pz (0.43, 0.25, 0.87); Py bleibt unverändert (Bild 2.14 rechts). Die abschliessende Rotation um die x-Achse mit ergibt die Rotationsmatrix RM3 Gleichung 25: und die endgültigen Punktkoordinaten Px (0.75, 0.43, -0.5), Py (-0.22, 0.88, 0.43) und Pz (0.63, -0.22, 0.75). Nach Durchführung dieses Transformationsschrittes befindet sich das MC an der erwarteten Position (Bild 13rechts), die Modelltransformation ist damit abgeschlossen. Es sind jetzt alle notwendigen Matrizen bekannt, um die Position eines Objektes in Weltkoordinaten anzugeben. Für das vorangegangene Beispiel berechnet man die Weltkoordinaten eines beliebigen Punktes Q (x, y, z, 1) nach der Gleichung Gleichung 26: Die Modelltransformation eines beliebig komplexen Objektes lässt sich realisieren, indem man mit Gleichung (26) alle Objektkoordinaten bezüglich des MC in die entsprechenden Weltkoordinaten umrechnet. [zum Seitenanfang]Vorteil einer gemeinsamen TransformationsmatrixEs ist leicht vorstellbar, dass für die Modelltransformation eines komplexeren Objektes nach Gleichung (26) eine grössere Anzahl von Matrizenmultiplikationen notwendig wird. Besitzt das Objekt beispielsweise 8 Eckpunkte und müssen jeweils 3 Rotationen und eine Translation durchgeführt werden, so ergeben sich 8*(3+1)=32 Multiplikationen einer Matrix mit einem Vektor. Es fällt allerdings auf, das jeder Punkt immer den gleichen Rechenschritten unterzogen wird. Fasst man deshalb die einzelnen Matrizen zu einer gesamten Transformationsmatrix MT zusammen Gleichung 27: ergibt sich statt dessen eine einmalige dreifache Multiplikation von Matrizen miteinander sowie weitere 8 Multiplikationen der resultierenden Matrix MT mit einem Vektor (für jeden Punkt eine). Damit werden insgesamt nur noch 11 Multiplikationen notwendig, wobei allerdings die dreifache Matrizenmultiplikation nach Gleichung (27) wesentlich aufwendiger ist als eine Multiplikation einer Matrix mit einem Vektor. Im folgenden soll deshalb kurz dargestellt werden, dass sich durch das Aufstellen von MT tatsächlich ein geringerer Rechenaufwand erreichen lässt. Die Multiplikation einer Matrix mit einem Vektor setzt voraus, dass diese die gleiche Dimension haben. Das ist durch die Einführung der homogenen Koordinaten und der Definition entsprechender Transformationsmatrizen sichergestellt Gleichung 28: Für eine Matrizenmultiplikation gemäss Gleichung (28) werden für jede Koordinate x*, y*, z*, w* vier Multiplikationen und vier Additionen notwendig. Insgesamt ergeben sich damit für einen Transformationsschritt der Modelltransformation 16 Multiplikationen und 16 Additionen. Jetzt sollen zwei Transformationsmatrizen zu einer neuen Matrix zusammengefasst werden Gleichung 29: Zur Berechnung der linken Matrix in Gleichung (29) sind, ähnlich wie für die vorangegangene Gleichung (28), für jede Komponente ai,j jeweils vier Multiplikationen und Additionen durchzuführen. Für 16 Komponenten ergeben sich also 64 Multiplikationen und 64 Additionen. Ohne Zusammenfassen der Transformationsmatrizen zu einer gemeinsamen Matrix MT nach Gleichung (27) sind für 8 Eckpunkte genau 32*16=512 Multiplikationen und Additionen notwendig. Dagegen beansprucht das andere Verfahren mit vorangegangener Berechnung der Matrix MT nur (3*64)+(8*16)=320 Multiplikationen bzw. Additionen. Allgemeiner formuliert heisst das also, zur Berechnung müssen folgende Anzahl an Multiplikationen bzw. Additionen ausgeführt werden 1. Variante, ohne MT: 16 · (Eckpunkte ·Transformationsschritte), 2. Variante, mit MT: 16 · (4 · (Transformationsschritte - 1) +Eckpunkte). Der zweite Rechenweg ermöglicht also mit steigender Anzahl der Punkte oder der Transformationsschritte einen zunehmend verringerten Rechenaufwand. [zum Seitenanfang]Ansichts- und ProjektionstransformationAnsichtstransformationAls Ergebnis der vorangegangenen Abschnitte liegen die Koordinaten aller Punkte bezüglich des Weltkoordinatensystems vor. Mit der jetzt folgenden Ansichtstransformation werden diese Koordinaten in die Augpunktkoordinaten umgerechnet. Für diesen Transformationsschritt wird ein neues Koordinatensystem, das Augpunktkoordinatensystem (u, v, n) definiert.
Bild 15 zeigt die drei zur Bestimmung der Lage und Orientierung des (u, v, n)-Systems notwendigen Angaben AP, ZP und VUP: Der erste dieser Kontrollpunkte ist der Koordinatenursprung des Augpunktsystems AP, welcher der Position der aufnehmenden Kamera entspricht. Mit der Angabe des zweiten Punktes ZP wird die Aufnahmerichtung der Kamera festgelegt. Dieser Punkt kennzeichnet damit auch das Zentrum der modellierten Szene und fällt deshalb in Bild 15 mit dem Koordinatenursprung des Weltkoordinatensystems zusammen. Die n-Achse des Koordinatensystems wird jetzt so definiert, dass sich der Punkt ZP immer auf dem negativen Ast dieser Achse befindet. Mit der Angabe des Vektors VUP (view up vector), der die "von unten nach oben"-Richtung im (u, v, n)-Systems angibt, wird dann die vollständige Berechnung des Koordinatensystems ermöglicht. Allerdings muss berücksichtigt werden, dass sich bei der unveränderten Übernahme von VUP nicht notwendigerweise ein rechtwinkliges Koordinatensystem ergibt: Der vorgegebene Richtungsvektor VUP steht nicht immer senkrecht auf dem berechneten Blickrichtungsvektor. Zur weiteren Berechnung des (u, v, n)-Systems wird dieses zunächst gedanklich im Koordinatenursprung des (X, Y, Z)-Systems positioniert.
Bild 16 zeigt die Punkte Pu, Pv und Pn, deren Ortsvektoren parallel zu den entsprechenden Achsen des (u, v, n)-Systems liegen sollen. Ausserdem skizziert ist der Punkt PVUP, dessen Ortsvektor parallel zum vorgegebenen VUP-Vektor verläuft. Zunächst werden aus den Angaben von Bild 15 und 16 die normierten Ortsvektoren und für die Punkte Pn und PVUP berechnet Gleichung 30: Während die Komponenten des Ortsvektors bereits direkt den normierten Richtungsvektor der n-Achse beschreiben, gilt keine vergleichbare Voraussetzung für . Die Ursache dafür findet sich in dem Umstand, dass die Festlegung von VUP nicht zwingend senkrecht zum Vektor erfolgen muss. Damit die Richtungsvektoren der Achsen ein orthogonales Rechtssystem bilden können, muss man deshalb einen passenden Vektor bestimmen, der senkrecht auf dem Blickrichtungsvektor bzw. dem dazu parallelen Vektor steht. Betrachtet man noch einmal die Skizze in Bild 16, so heisst das: Der Punkt PVUP muss entlang so weit verschoben werden, bis sich das Punktprodukt von und zu Null ergibt. Bezeichnet man den dafür zu bestimmenden Translationskoeffizienten mit t, so ergibt sich die Gleichung Gleichung 31: Setzt man in diese Gleichung die kartesischen Koordinaten ohne die homogene Komponente ein, so gilt ausserdem: , , . Damit lässt sich t errechnen: Gleichung 32: Gleichung (32) in Gleichung (31) ergibt dann das endgültige Ergebnis für Gleichung 33: Den Richtungsvektor der u-Achse dieses Orthogonalsystems berechnet man nun noch durch das Kreuzprodukt von und Gleichung 34: Jetzt ist das (u, v, n)-Koordinatensystem vollständig bestimmt, so dass nun die eigentliche Ansichtstransformation durchgeführt werden kann.
Die Herleitung der Transformationsmatrix gestaltet sich am einfachsten, wenn man zuerst mit einer Modelltransformation das (u, v, n)-System bezüglich des (X, Y, Z)-Koordinatensystems plaziert. Dann erhält man als Ergebnis dieses Schrittes die Weltkoordinaten der in Bild 17 eingezeichneten Punkte B1, B2 und B3. Es sei ausserdem vorausgesetzt, dass die Punkte W1 (1,0,0), W2 (0,1,0) und W3 (0,0,1) die Richtungsvektoren der Achsen des Weltkoordinatensystems beschreiben und die Punkte B1,2,3 diejenigen des Bildkoordinatensystems. Deshalb haben die Punkte B bezüglich des (u, v, n)-Systems die Koordinaten B1 (1,0,0)u,v,n, B2 (0,1,0)u,v,n und B3 (0,0,1)u,v,n. Die zunächst durchzuführende Transformation soll das anfangs noch deckungsgleich zum WC liegende (u, v, n)-System durch mehrfache Rotation bereits richtig orientieren, ohne aber eine Verschiebung des Koordinatenursprungs nach AP vorzunehmen. Durch diese Transformation gehen die Punktkoordinaten von W1,2,3 in die entsprechenden Koordinaten Pu (ux, uy, uz), Pv (vx, vy, vz) und Pn (nx, ny, nz) über. Fasst man jetzt die Punktkoordinaten von W1,2,3 bzw. Pu,v,n jeweils zeilenweise in einer gemeinsamen Matrix W bzw. P zusammen, so ergibt sich die Gleichung Gleichung 35: Die Lösung für M1 lautet dann Gleichung 36: Jetzt kann die Verschiebung des Koordinatenursprungs nach AP erfolgen. Die Komponenten von AP (APx, APy, APz) werden dazu in die Translationsmatrix M2 eingesetzt Gleichung 37: Multipliziert man jetzt M2 mit M1, so erhält man die Transformationsmatrix MB_W Gleichung 38: mit der die Weltkoordinaten der Punkte B1,2,3 berechnet werden können. Ziel der Ansichtstransformation ist es aber, die Bildschirmkoordinaten von beliebigen Punkten zu erhalten, die im Weltkoordinatensystem definiert sind. Die endgültige Matrix für die Ansichtstransformation MAT entspricht deshalb der hier nur symbolisch dargestellten inversen Matrix Gleichung 39: ProjektionstransformationDie soeben durchgeführte Ansichtstransformation definiert alle modellierten Objekte in dem Augpunktkoordinatensystem, also ihre Positionen relativ zum Betrachter bzw. der aufnehmenden Kamera. Mit der folgenden Projektionstransformationen Zentralprojektion und Parallelprojektion werden zum einen die Eigenschaften des Aufnahmegerätes beschrieben und zum anderen die Gesetzmässigkeiten für die Darstellung einer dreidimensionalen Szene auf einem zweidimensionalen Aufnahmegerät festgelegt. Beiden Projektionsarten gemeinsam ist die Definition eines sogenannten Viewing-Volumens, welches den von der Kamera erfassten Raum beschreibt. Die Projektion der so erfassten Punkte auf die Bildfläche erfolgt dann nach der jeweiligen Abbildungsvorschrift. Wesentliches Merkmal dieses Transformationsschrittes ist der durch die Reduzierung von drei auf zwei Dimensionen bedingte Informationsverlust über die Lage (weiter vorn oder weiter hinten) und die Form (zwei Punkte ergeben eine Gerade) von Objekten. Allerdings lassen sich diese Informationen mit Hilfe des Z-Buffers und des Clippings speichern, so dass trotz der zweidimensionalen Abbildung noch sämtliche räumliche Eigenschaften bekannt sind. Diese und andere 3D-spezifische Methoden werden im Bereich [OpenGL-Technik] noch etwas genauer vorgestellt. [zum Seitenanfang]ZentralprojektionDurch die Ansichtstransformation wurden der Standort der Kamera AP sowie ihre Aufnahmerichtung entlang der negativen n-Achse definiert. Im folgenden werden noch Informationen über den Öffnungswinkel des Kameraobjektives und der erfassbaren Raumtiefe benötigt, auf die anhand der Skizze in Bild 18 näher eingegangen werden soll.
In allen vorangegangenen Transformationsschritten wurde der Informationsgehalt einer Szene nicht verändert, sondern lediglich die beschreibenden Koordinatensysteme gewechselt. Die Projektionstransformation beschränkt erstmals die Anzahl der abgebildeten Punkte, indem sie nur diejenigen Punkte berücksichtigt, welche sich im erfassten Viewing-Volumen befinden. Dieses wird durch die anzugebenden, in Bild 18 eingezeichneten Parameter Vorderfront, Rückfront, Öffnungswinkel v in vertikaler Richtung sowie dem Höhen-Breiten-Verhältnis beschrieben. Dabei wird die Begrenzung in Blickrichtung durch die parallel zur u,v-Ebene liegende Vorder- bzw. Rückfront realisiert, während die Seiten- bzw. Deckflächen jeweils symmetrisch zur n-Achse verlaufen und den Winkel u bzw. v einschliessen. Die Positionsangabe der Vorder- bzw. Rückfront erfolgt dabei betragsmässig durch den Abstand vom Augpunkt AP (0,0,0) zum Schnittpunkt der Fläche mit der n-Achse. Der Öffnungswinkel v entspricht dann dem Winkel zwischen der oberen und unteren Deckfläche des Viewing-Volumens, während das Höhen-Breiten-Verhältnis das Verhältnis der Öffnungswinkel v zu u angibt. Die Umwandlung der dreidimensionalen Szene in eine zweidimensionale Entsprechung erfolgt durch die Definition einer Bildfläche, für die im folgenden die in Bild 18 als Vorderfläche dargestellte Ebene gewählt wird. Die Herleitung der Zentralprojektionsmatrix soll jetzt durch die beispielhafte Abbildung eines Punktes aus dem Viewing-Volumen auf dieser Bildfläche erfolgen. Bild 19 zeigt dazu den Ausschnitt einer Szene in der v,n-Ebene mit u = 0, in der die drei definierten Punkte P, Q1 und Q2 zu erkennen sind. Die ebenfalls erkennbaren Eckpunkte E1 und E2 stellen zwei Schnittpunkte der Vorder- bzw. Rückfront mit der Deckfläche dar, deren kartesische Koordinaten sich aus geometrischen Überlegungen ergeben Gleichung 40: Mit Gleichung (40) lassen sich somit für jede zur u,v-Ebene parallelen Fläche diejenigen Grenzwerte berechnen, nach denen eine Entscheidung über die abzubildenden Punkte getroffen werden kann. Am Beispiel von P, Q1 und Q2 heisst das, es wird nur P auf die Bildfläche projiziert, weil gilt Gleichung 41:
Verlässt man die beispielhaft gewählte v,n-Ebene (u = 0), so muss eine zu (41) vergleichbare Abfrage auch für die u-Komponente von P erfolgen. Dafür ist dann der Winkel u einzusetzen. Nachdem die abzubildenden Punkte selektiert worden sind, können die Gesetzmässigkeiten für die Abbildung auf der Bildfläche aufgestellt werden. Aus Bild 19 ergibt sich die Verhältnisgleichung für die v-Komponenten von P und P’ Gleichung 42: Für die Koordinatenrichtung u gilt die rechte Seite der Gleichung (42) ebenfalls, so dass sich die nach den unbekannten Grössen von P’ umgestellten Gleichungen ergeben Gleichung 43: Diese Abbildungsvorschriften werden jetzt in der Transformationsmatrix MZP zusammengefasst Gleichung 44: ParallelprojektionDurch gedankliches Verschieben des Viewing-Volumens in eine unendliche Entfernung vom Augpunkt AP lässt sich erreichen, dass die einzelnen Projektionsstrahlen innerhalb dieses erfassten Raumes annähernd parallel verlaufen. Damit kann die Parallelprojektion als ein Spezialfall der Zentralprojektion dargestellt werden. Definiert man die Parallelität der Projektionsstrahlen als Abbildungsgesetz und lässt als Blickrichtung wiederum nur die Richtung entlang der negativen n-Achse zu, muss sich das in Bild 20 gezeigte Viewing-Volumen ergeben.
Der abzubildende Raum in Bild 2 20 wird durch die Punkte E1 und E2 beschrieben, indem durch E1 der hintere, oben rechts liegende Eckpunkt und durch E2 der vorn, unten links liegende Eckpunkt angegeben wird. Die Abbildung erfolgt auf der Vorderfront. Durch die parallel verlaufenden Projektionsstrahlen ändert sich bei der Projektion eines Punktes lediglich seine n-Koordinate, so dass die entsprechende Transformationsmatrix MPP lautet Gleichung 45: Abgebildet werden nur diejenigen Punkte, für deren jeweilige Koordinaten u, v, n gilt und Auf die nachfolgenden Schritte bis zur endgültigen Darstellung auf dem Ausgabegerät soll hier nicht mehr detailliert eingegangen werden. Um dennoch den vollständigen Ablauf bis zur Darstellung auf dem Ausgabegerät zu umreissen, werden diese aber noch kurz angesprochen: Im Anschluss an die Projektionstransformation erfolgt eine Normierung der abgebildeten Koordinaten. Diese lassen sich dadurch einfacher in das ebenfalls normierte Koordinatensystem des Ausgabegerätes DC (device coordinate system), also zum Beispiel dem des Monitors transformieren. Mit einer abschliessenden Viewport-Transformation kann man zusätzlich erreichen, dass die modellierte Szene nur in einem kleineren Bereich des Bildschirms, zum Beispiel einem eigenen Fenster, dargestellt wird. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Fragen oder Ideen an: Thomas.Kern@3Dsource.de |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C) Thomas Kern |