DE19721416A1 - Verfahren zum Antialiasing von Bump-Maps - Google Patents
Verfahren zum Antialiasing von Bump-MapsInfo
- Publication number
- DE19721416A1 DE19721416A1 DE1997121416 DE19721416A DE19721416A1 DE 19721416 A1 DE19721416 A1 DE 19721416A1 DE 1997121416 DE1997121416 DE 1997121416 DE 19721416 A DE19721416 A DE 19721416A DE 19721416 A1 DE19721416 A1 DE 19721416A1
- Authority
- DE
- Germany
- Prior art keywords
- bump
- roughness
- map
- maps
- roughness information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 7
- 230000008859 change Effects 0.000 claims abstract description 6
- 238000009826 distribution Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000005070 sampling Methods 0.000 claims description 3
- 238000012935 Averaging Methods 0.000 claims 1
- 230000007613 environmental effect Effects 0.000 abstract 1
- 230000003746 surface roughness Effects 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 57
- 239000011159 matrix material Substances 0.000 description 13
- 238000001914 filtration Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000005315 distribution function Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 2
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241000208140 Acer Species 0.000 description 1
- 241000283086 Equidae Species 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000012885 constant function Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 229910052742 iron Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
Es ist bekannt, für die Darstellung rauher Oberflächen in der Computergraphik Einrichtungen zum Bump-Mapping
zu verwenden, die in PC-Graphikkarten inzwischen weit verbreitet sind. Diese Einrichtungen arbeiten normalerweise
wie von Blinn beschrieben [4]. Dabei findet ein eigentlich notwendiges Antialiasing entweder nicht statt, oder es
wird eine einfache Filterung wie beim Texturmapping durchgeführt, wie das von Blinn [4] beschrieben wird. Die
dort als korrekte Lösung angegebene Überabtastung wird wegen des hohen Aufwands in Echtzeitsystemen
normalerweise nicht eingesetzt.
Die übliche Art der Filterung führt allerdings bei Bump-Maps dazu, daß die durch die Bump-Map dargestellten
Höcker (Bumps) verlorengehen und als Resultat - bei genügend kleiner Abtastrate - eine glatte Oberfläche
übrigbleibt. Die vorliegende Erfindung beruht darauf, daß zur korrekten Darstellung rauher Oberflächen ein Speicher
verwendet wird, in dem in Form einer sog. Rauhigkeitspyramide die isotrope oder anisotrope Rauhigkeitsinformation
gespeichert wird, die in allen Auflösungsstufen erhalten bleibt.
Antialiasing von Bump-Maps ist ebenso notwendig wie das Antialiasing von Texturen im allgemeinen (s. Fig. 1).
Allerdings führt die gewöhnliche Filterung, wie sie bei Texturen verwendet wird dazu, daß die Bumps verschwinden.
Je kleiner dabei die Auflösung wird, desto stärker muß gefiltert werden und desto größere Bumps werden entfernt (s.
Fig. 2).
Die Tiefpaßfilterung der in Bump-Maps gespeicherten Information bedeutet also die Vernichtung der gesamten
Information über die Bumps. In der Realität kann dagegen eine höckerige Oberfläche leicht von einer glatten
Oberfläche unterschieden werden, auch wenn diese so weit entfernt ist, daß einzelne Bumps nicht mehr getrennt
wahrgenommen werden können (s. Fig. 3). Statt einzelner Bumps sieht man die Höckrigkeit oder Rauhigkeit der
Oberfläche.
Bump-Maps können als Höhen- bzw. Offset-Feld dargestellt werden [4]. In der hier beschriebenen Erfindung wird
eine Darstellung der Bump-Map vorgeschlagen, bei der ein zweidimensionales Feld von Offset-Vektoren benutzt
wird, die zum Normalenvektor addiert werden. Diese Darstellung wird unten ausführlicher behandelt. Die genannten
Effekte bei der Filterung einer Bump-Map treten allerdings unabhängig von der Darstellung der Bump-Map auf.
Becker und Max [1] behandeln das Problem der Darstellung von Bump-Maps in verschiedenen Auflösungen. Sie
lösen es dadurch, daß sie zwischen der ungefilterten Darstellung und einer Darstellung mit einheitlichem Grauwert
aus einer BRDF (bi-directional reflection distribution function) umschalten. Um Inkonsistenzen zwischen beiden
Darstellungen zu vermeiden, wird für jeden Betrachtungswinkel eine andere sog. redistribution function verwendet,
um das Ergebnis des Standard-Bump-Mapping-Verfahrens zu modifizieren. Um keine abrupten Übergänge zu
erhalten, wird zwischen der Ergebnissen der beiden Algorithmen überblendet. Die Verwendung der BRDF ist die
korrekte Lösung, wenn es darum geht, höckrige Oberflächen darzustellen, die so weit entfernt sind, daß die einzelnen
Bumps bei einer gegebenen Bildauflösung nicht mehr unterscheidbar sind. Allerdings müßte korrekterweise
eigentlich an jeder Stelle einer nicht homogenen Bump-Map eine andere BRDF verwendet werden, da sonst die
ganze Fläche einheitliche Helligkeit erhält, auch wenn z. B. Teile der Bump-Map gar keine Bumps enthielten. Der
Punkt, an dem vom Bump-Mapping zur BRDF übergegangen wird, kann grundsätzlich nur für eine bestimmte
Bump-Frequenz bestimmt werden. Die Bump-Map darf deshalb nur einen schmalen Frequenzbereich enthalten.
Bump-Maps mit einem breiteren Frequenzbereich müssen in mehrere Maps aufgespalten werden, von denen jede nur
einen schmalen Frequenzbereich enthält. Der Aufwand für das Verfahren ist, auch ohne diese Aufspaltung in
mehrere Bump-Maps, sehr hoch.
Kirk [5] schlägt vor, zum Zweck des Antialiasing das Ray-Tracing-Verfahren dahingehend zu verändern, daß statt
eines einzelnen Strahls ein Strahlkegel verfolgt wird. In seinem Aufsatz erwähnt er sogar die Anwendung auf das
Bump-Mapping, wobei er allerdings nicht die Rauhigkeit einer Oberfläche, sondern nur deren Krümmung in
Betracht zieht (durch die Differenz zwischen den Normalenvektoren im Zentrum und an den Rändern des
Strahlkegels). Die im folgenden zur Beschreibung und zum Verständnis des Antialiasing von Bump-Maps
verwendeten Reflektionskörper können als Verallgemeinerungen von Kirks Strahlkegeln aufgefaßt werden.
Um die wichtigen Oberflächeneigenschaften beim Antialiasing zu erhalten, wird zusätzlich zu den Bump-Maps eine
neue Art von Maps eingeführt: die Rauhigkeitsmap. In ihr wird die Varianz der Normalenvektoren aus dem Gebiet
gespeichert, das zu einem Pixel in der gefilterten Bump-Map gehört. Dies wird am Beispiel eines Sees deutlich, der
aus einiger Entfernung betrachtet wird. Auch wenn Wellen vorhanden sind, kann die Normalenrichtung für das
Gebiet des Sees, das auf ein Pixel abgebildet wird, nur durch einen einzigen Normalenvektor repräsentiert werden.
Ist dieses Gebiet groß genug, so wird der durchschnittliche Normalenvektor senkrecht nach oben zeigen. Verwendet
man nur diesen sich durch konventionelle Tiefpaßfilterung ergebenden Normalenvektor, so erhält man die gleiche
Spiegelung der Sonne (oder jeder anderen Umgebung) wie in einem glatten Spiegel, unabhängig davon, ob kleine
Wellen vorhanden sind oder nicht. Speichert man dagegen die Rauhigkeit der Oberfläche auch mit ab, kann man
diese Wellen berücksichtigen und erhält eine weitaus bessere Approximation für die Spiegelungseffekte. Die
Rauhigkeit kann z. B. im Blinn-Phong-Beleuchtungsmodell als Maß für den dort verwendeten Exponenten dienen
[3]. Bilder hervorragender Qualität erhält man, wenn man Environment-Maps benutzt, und die Rauhigkeit die
Parameter für anisotropes Antialiasing der Environment-Map liefert.
Hier soll zunächst ein praktisches Verfahren zur Darstellung der Bump-Maps vorgestellt werden, sodann ein
anisotropes Maß für die Rauhigkeit eingeführt werden und dann gezeigt werden, wie Auflösungspyramiden
aufgebaut und in praktischer Weise abgespeichert werden können. Dabei kann wahlweise eine einfache isotrope oder
eine aufwendigere anisotrope Version der Bump-Rauhigkeitspyramiden verwendet werden.
Bump-Mapping wird, auch ohne Antialiasing oder Environment-Mapping, erst seit kurzem in Echtzeitsystemen
eingesetzt, da es bisher noch zu viel Rechenleistung erforderte. Teilweise rührt dies daher, daß beim konventionellen
Bump-Mapping [4] die Ableitungen der Bump-Funktion berechnet werden müssen.
Eine mögliche Lösung, bei der die Berechnung der Ableitungen der Bump-Funktion vermieden wird, besteht darin,
die Ableitungen im voraus zu berechnen und diese Ableitungen statt der Bump-Funktion selbst abzuspeichern
[5][2]. Dadurch kann die Berechnung in Echtzeit vermieden werden. Außerdem hat das Verfahren den Vorteil, daß
die Skalierung von Bump-Maps ebenso einfach wird wie die Skalierung von rgb-Texturen. Wenn gewöhnliche
Bump-Maps mit einem unbekannten Faktor skaliert werden, können die Ableitungen nicht mehr berechnet werden.
Ein Problem muß allerdings noch gelöst werden: An jedem Abtastpunkt auf dem dargestellten Objekt muß ein
geeignetes lokales Koordinatensystem gefunden werden, das aus dem Normalenvektor und zwei zur Oberfläche
tangentialen Vektoren besteht (dieses Problem gibt es allerdings auch bei der bisherigen Methode). Ist dieses lokale
Koordinatensystem n, e1, e2 festgelegt, wird die Berechnung des veränderten Normalenvektors dadurch
vorgenommen, daß der durch die in der Bump-Map gespeicherten Werte b1 und b2 im lokalen Koordinatensystem
vorgegebene Offsetvektor zur Flächennormale addiert wird:
n' = n+b1e1+b2e2.
Theoretisch kann ein geeignetes lokales Koordinatensystem für die Berechnung der durch die Bump-Map
modifizierten Normalenvektoren frei gewählt werden. Die in der Bump-Map gespeicherten Daten hängen natürlich
von dem gewählten System ab. Leider existiert kein Koordinatensystem, das für das Bump-Mapping ideal geeignet
ist. Zwei Bedingungen sollten allerdings mindestens erfüllt sein:
- - Die Richtungen der Achsen sind eine stetige Funktion des Orts.
- - Das System sollte so flexibel sein, daß es möglich ist, eine vorhandene Bump-Map in jeder Orientierung auf ein Objekt aufzubringen, ohne die gesamte Bump-Map neu zu berechnen. Nur so ist es möglich, mit einer Bump-Map, die die Buchstaben des Alphabets (hervorstehend oder eingraviert) enthält, eine Beschriftung an jeder Stelle eines Objekts mit beliebiger Orientierung anzubringen.
Wünschenswert ist außerdem, daß
- - das Koordinatensystem rechtwinklig ist (dies ist nicht notwendigerweise der Fall für die Projektionen der u- und v-Linien auf die Oberfläche; auch beim normalen Bump-Mapping sind daher die Achsen oft nicht orthogonal).
Zur Beschreibung einiger möglicher Koordinatensysteme wird hier eine Nomenklatur ähnlich der von Blinn [4]
verwendet:
Die Punkte auf der ursprünglichen Oberfläche sind gegeben durch
Die Punkte auf der ursprünglichen Oberfläche sind gegeben durch
die partiellen Ableitungen durch
die Oberflächennormale ist daher n = pu×pv. Eine ausreichend kleine Offset-
Funktion f (mit partiellen Ableitungen fu und fv) definiert eine neue Oberfläche:
Der neue Normalenvektor ist
Es wird definiert:
Damit erhält man:
n = pu×pv = su×sv und
n' = n + fusu + fvsv.
n = pu×pv = su×sv und
n' = n + fusu + fvsv.
In der Bump-Map werden die Werte b1 = fu und b2 = fv abgelegt. Es handelt sich hier um das klassische Bump-
Mapping mit möglicherweise nichtorthogonalem u-v-Koordinatensystem und beliebigen |pu| und |pv|.f wird als
Offsetfunktion aufgefaßt, und entsprechend ist die "Höhe" der Bumps konstant und ändert sich nicht, wenn die
Bump-Map in u- und v-Richtung skaliert wird. Wenn die Abbildung der u- und v-Koordinaten auf die Oberfläche
stetig ist, so ist damit auch die erste Bedingung (s. o.) erfüllt, und su und sv können durch Interpolation über
Dreiecken approximiert werden (die perspektivische Korrektur bei der Bildschirmdarstellung ist natürlich
erforderlich). Probleme gibt es beispielsweise bei einer Kugel, wenn für u und v sphärische Koordinaten verwendet
werden, da am Pol eine der Koordinaten nicht eindeutig ist.
Bei der Interpolation von su und sv müssen die Längen von su und sv getrennt von den Vektoren selbst
interpoliert werden. Da die perspektivische Division die Richtung eines Vektors nicht ändert, sondern nur dessen
Länge, müssen nur die Längen korrigiert werden. Die perspektivische Korrektur der Richtung ergibt sich bei
richtiger Wahl der Vektorlängen an den Eckpunkten von selbst. Wird zwischen zwei Vektoren mit unterschiedlicher
Länge interpoliert, so ändert sich die Richtung in der Nähe des kürzeren Vektors schneller.
Wie schon in der Originalarbeit von Blinn [4] erwähnt, kann es erwünscht sein, daß die Form der Bumps beim
Skalieren der Bump-Map erhalten bleibt. Dazu muß der Störungsvektor mit n skaliert werden, unabhängig von der
Skalierung von p (oder su und sv). Das kann allerdings zu geometrisch unmöglichen Normalen führen, wenn die
Bump-Map mit unterschiedlichen Faktoren für u und v skaliert wird, was daher ausgeschlossen werden sollte. Als
geeignetes Koordinatensystem ergibt sich das vorhergehende System, aber mit normierten Vektoren su und sv; die
Interpolation der Längen erübrigt sich also. Auch hier ist die perspektivische Division für die Vektoren nicht nötig,
da ohnehin normiert wird.
Eine interessante Alternative bietet ein orthogonales System, das aus dem Normalenvektor n und einer
Hauptrichtung m berechnet werden kann. Die Einheitsvektoren e1 und e2 sind senkrecht zu n. Mit Hilfe von m
werden sie so definiert, daß e2 senkrecht auf m steht und e1 in der Ebene von n und m liegt [5]. Für die
Hauptrichtung m kann z. B. pu oder pv gewählt werden (in diesem Fall wie oben interpoliert), aber es besteht
auch die Möglichkeit, einen konstanten Vektor für ein ganzes Objekt zu wählen. Ein gutes Beispiel ist die Abbildung
auf eine Kugel (wie z. B. die Erde) mit Hilfe von sphärischen Koordinaten. Die Richtung der Erdachse würde als
Hauptrichtung m verwendet; dadurch würde e1 immer von West nach Ost und e2 von Süd nach Nord zeigen. Ein
wichtiger Vorteil einer konstanten Hauptrichtung m ist es, daß abgesehen vom Normalenvektor kein weiterer
Vektor über dem Dreieck interpoliert werden muß. Dazu kommt, daß das Koordinatensystem im
Rasterisierer/Shader in mit geeigneter Hardware berechnet werden kann und nicht für alle Eckpunkte von einem
Setup-Prozeß berechnet werden muß. Zur Berechnung des lokalen Koordinatensystems n, e1, e2 aus dem
interpolierten Normalenvektor nI und der Hauptrichtung m werden die folgenden Formeln benutzt (s. Fig. 5):
Auf diese Weise erhält man zwei zur Objektfläche tangentiale Vektoren:
- - e2 in der Ebene von n und m und
- - e1 senkrecht zu dieser Ebene.
Wenn die Vektoren nicht normiert sein müssen (z. B. weil sich die Länge in einem späteren Rechenschritt
heraushebt) werden alle drei mit |nI| multipliziert, und man erhält:
e2|nI| = nI×e1.
Mit Hilfe der oben definierten Koordinatensysteme können Bump-Maps durch vorausberechnete Ableitungen bzw.
Störungsvektoren dargestellt werden. Es stellt sich die Frage, wie die Rauhigkeitsinformation dargestellt werden
kann, d. h. die Information über die Bumps, die zu klein sind um einzeln in der Bump-Map in der betrachteten
Auflösungsstufe in Erscheinung zu treten, jedoch für den visuellen Gesamteindruck der Oberfläche trotzdem
entscheidend sind. Diese Rauhigkeitsinformation bestimmt letztendlich die Größe und Form der Reflektionskörper
(Fig. 3), in die die kleinen, pixelgroßen Sehstrahlenkegel durch die rauhe Oberfläche reflektiert werden. Zur
korrekten Berechnung der Reflektionskörper aus der Bump-Map wird die komplette Verteilung von
Normalenvektoren innerhalb des betrachteten Gebiets benötigt. Was gegenüber der kompletten ursprünglichen
Bump-Map wegfällt, ist lediglich der genaue Ort eines Normalenvektors innerhalb des betrachteten Gebiets.
Allerdings enthält die gesamte Verteilungsfunktion für die Normalenvektoren immer noch viel zu viel Information,
um sinnvollerweise eingesetzt oder abgespeichert zu werden. Ein üblicher Ausweg besteht darin, daß eine bestimmte
Form der Verteilungsfunktion angenommen wird. Dadurch wird es möglich die Verteilungsfunktion durch einige
wenige Parameter darzustellen. Im eindimensionalen Fall sind Mittelwert und Varianz ein Beispiel für solche
Parameter, wobei für die Form der Verteilungsfunktion eine Normalverteilung angenommen wird. Im
zweidimensionalen Fall entspricht der Varianz die Kovarianzmatrix K, mit deren Hilfe die Verteilungsfunktion
beschrieben wird. Auf der Ellipse (x - x)TK-1(x - x) = 1 ist die Wahrscheinlichkeitsdichte konstant; der
Abstand eines Punktes x auf der Ellipse zum Mittelwert x beschreibt die Standardabweichung, die sich in
Richtung (x - x) ergibt. Selbstverständlich ist die Annahme, daß die Normalen normalverteilt sind, nicht allgemein
erfüllt, aber die Darstellung mit Hilfe der Kovarianzmatrix ermöglicht es, die Verteilung der Normalenvektoren als
elliptischen Kegel zu repräsentieren, für dessen Beschreibung nur drei Parameter benötigt werden (plus zwei für den
durchschnittlichen Normalenvektor). Diese Darstellung ist für sehr viele in der Praxis vorkommende
Normalenverteilungen geeignet und ermöglicht es, anisotrope Spiegelungseffekte zu erzeugen und realistisch
aussehende Bilder von Wellblech, gebürstetem Metall, kleinen Kratzern in sonst glatten Oberflächen, oder Wellen
auf einem See u.s.w. zu erzeugen.
Die Kovarianzmatrix wird aus den b1- und b2-Werten aus dem von einem Texel (bzw.
Roughxel=Rauhigkeitselement) bedeckten Gebiet auf folgende Weise berechnet:
Diese Matrix beschreibt eine Ellipse, die in Fig. 6 dargestellt ist (die Ellipse in der Mitte der Zeichnung). Die Ellipse
(x - x)TK-1(x - x) = 1
enthält etwa 63% der Störungsvektoren, wenn es sich bei der Verteilung um eine zweidimensionale
Normalverteilung handelt. Wenn allerdings die Vektoren (b1 b2) innerhalb eines Rechtecks mit Kantenlängen g
und h gleichverteilt sind, erhält man eine Ellipse mit den Hauptachsen 2g/√3 und 2h/√3. Dieser Effekt kann
durch einen Korrekturfaktor ausgeglichen werden.
K enthält also die Parameter einer Ellipse, die die Verteilung der Störungsvektoren und damit die Verteilung der
Normalenvektoren beschreibt.
Diese Information kann bei der Bildberechnung dazu verwendet werden, die korrekte Pixelhelligkeit zu berechnen.
Abhängig vom verwendeten Shadingverfahren gibt es verschiedene Möglichkeiten, die Rauhigkeitsinformation in
die Berechnung einzubeziehen: Beim Ray-Tracing kann die Normalenellipse zum Antialiasing durch Überabtastung
eingesetzt werden. Eine andere Möglichkeit bestünde darin, das Blinn-Phong-Shading so abzuwandeln, daß die
Rauhigkeitsinformation berücksichtigt wird (s. unten). Allerdings ist es wenig sinnvoll, bei hohem Rechenaufwand
zur Berechnung der Bump-Map anschließend ein sehr einfaches Beleuchtungsmodell zu verwenden. Ein Verfahren,
mit dem ein ausgewogenes System mit hoher Bildqualität erreicht werden kann, benutzt die Rauhigkeitsinformation
für anisotropes Antialiasing von Environment-Maps.
Fig. 7 zeigt, wie die Information über die Oberfläche in zwei Auflösungspyramiden abgespeichert wird, der
Bumppyramide und der Rauhigkeitspyramide. Bei der Bumppyramide handelt es sich um eine Standard-Mip-Map,
deren kleinere Auflösungsstufen durch Filterung aus den höher aufgelösten Stufen berechnet werden. Bei der
Rauhigkeitspyramide enthalten dagegen die Stufen niedriger Auflösung nicht nur die Information, die aus den
Rauhigkeitsstufen höherer Auflösung, sondern auch die Rauhigkeitsinformation, die aus der nächsten Stufe der
Bump-Map stammt, d. h. die Rauhigkeitsinformation aus den Bumps, die in der betrachteten Stufe der Bump-Map
gerade heraus gefallen sind. Diese Information wird durch eine Kovarianzmatrix dargestellt, die wie oben
beschrieben berechnet wird. Dazu kommt die gefilterte Kovarianzmatrix aus der nächsten Stufe der Rauhigkeitsmap.
Als Ergebnis erhält man folgende rekursive Regel für die Berechnung der Kovarianzmatrix in der Stufe 1 (wenn für
die Berechnung der Mip-Map ein 2×2-Boxfilter eingesetzt wird):
Die Berechnung nach dieser Formel führt zum selben Ergebnis wie die Berechnung der Kovarianzmatrix für alle
Vektoren (b1 b2) aus dem Gebiet der höchsten Auflösungsstufe, das dem betrachteten Texel in Stufe 1 entspricht.
Aus zwei Gründen ist es allerdings nicht sinnvoll, die Kovarianzmatrizen selbst in der Rauhigkeitsmap
abzuspeichern:
- - Die Kovarianzmatrix enthält die Quadrate der Standardabweichungen; um einheitliche Quantisierungsfehler über den gesamten Wertebereich der Standardabweichung zu erhalten, muß eine Größe, die proportional zur Standardabweichung ist abgespeichert werden.
- - Wenn die Rauhigkeitsinformation für das Antialiasing von Environment-Maps eingesetzt werden soll, wird nicht die Kovarianzmatrix K benötigt, sondern eine Matrix D mit DDT = K.
Eine günstige Darstellung ergibt sich, wenn man
wählt, und die drei Zahlen d1, d2 und d3 abspeichert, wobei d1 und d3 so gewählt werden können, daß sie nicht
negativ sind:
Mit
Mit
erhält man
Durch diese Daten sind nun die Parameter einer Ellipse gegeben, die die Verteilung der Störungsvektoren und
dadurch auch die Verteilung der Normalenvektoren beschreibt.
Beschränkt man sich auf eine isotrope Rauhigkeitsinformation, so erhält man eine kompaktere Darstellung. Statt
dreier Werte muß nur noch ein Wert gespeichert werden: die Standardabweichung der Störungsvektoren in Richtung
der größten Varianz. Diese Zahl erhält man durch Diagonalisieren der Kovarianzmatrix
Der Wert, der in der Rauhigkeitsmap abgespeichert wird ist λ1, wobei λ1, λ2 ≧ O und λ1 ≧ λ2. Auf diese Weise
erhält man eine konservative Abschätzung der Standardabweichung der Normalenvektoren im betrachteten Gebiet
der Bump-Map. Beim Shading kann eine einfachere Version des modifizierten Blinn-Phong-Modells verwendet
werden (s. Modifiziertes Blinn-Phong Model). Werden Environment-Maps mit Standard-Mip-Mapping eingesetzt,
so kann λ1 zur Festlegung des Mip-Map-Levels verwendet werden, da mit Standard-Mip-Mapping ohnehin keine
Möglichkeit zum anisotropen Antialiasing bietet.
Mit den Rauhigkeitsmaps und Rauhigkeitspyramiden wird es möglich, Antialiasing von Bump-Maps effizient und
durch leicht zu entwickelnde Hardware unterstützt durchzuführen. Neben dem Aufbringen von Farben
(Texturmapping) und Bumps (Bump-Mapping) wird es dadurch möglich, eine weitere Oberflächeneigenschaft auf
Objekte aufzubringen. Ohne Rauhigkeitsmaps kann eine große Klasse von Objekten nicht wirklichkeitsgetreu
dargestellt werden, ohne sehr hohen Aufwand zu treiben. Beispiele sind kleine Kratzer auf sonst glatten Oberflächen,
gebürstete Oberflächen, aber auch jede Oberfläche mit Bump-Map, wenn sie aus einiger Entfernung betrachtet wird.
Die - allerdings sehr aufwendige - Alternative zur Darstellung dieser Objekte wäre massives Supersampling.
Im folgenden wird eine Abwandlung des Blinn-Phong-Modells beschrieben, bei der die Rauhigkeitsinformation aus
den Rauhigkeitsmaps benutzt wird. Es wird das Blinn-Phong-Modell (Helligkeit proportional zum Skalarprodukt
von Oberflächennormale n und Halfway-Vector h) im Gegensatz zum ursprünglichen Phong-Modell (Helligkeit
proportional zum Skalarprodukt von reflektiertem Lichtquellenstrahl r und Sehstrahl v verwendet. Diese beiden
Modelle werden oft als mehr oder weniger Äquivalent betrachtet, oder es wird wenigstens angenommen, daß beide
die physikalische Wirklichkeit gleich gut oder schlecht widerspiegeln. Dies ist allerdings nicht der Fall; das Blinn-
Phong-Modell nähert ein Mikro-Facetten-Modell an, wobei die Wahrscheinlichkeit, eine Facette mit
Normalenvektor nmicro = h (genau diese Facetten spiegeln Strahlen, die von der Lichtquelle ausgehen, direkt ins
Auge) zu sehen proportional zu (nTh)m ist. Dies ist einem physikalischen Modell viel näher, als das ursprüngliche
Phong-Modell, wo der Winkel zwischen einem reflektierten Lichtquellenstrahl und der Richtung zum Augpunkt als
Maß für die Wahrscheinlichkeit genommen wird, den reflektierten Lichtstrahl zu sehen, was physikalisch nicht
motiviert werden kann. Wenn in der Literatur ein Unterschied zwischen den beiden Modellen gemacht wird, werden
sie allerdings meist dadurch verglichen, daß die Form des Glanzgebiets auf einer Kugel verglichen wird. Einem nicht
geschulten Beobachter fällt es allerdings sehr schwer, die korrekte Form eines solchen Glanzgebietes auf einer Kugel
zu beurteilen. Würde statt dessen die Form des Glanzgebiets auf einer ebenen Fläche herangezogen, so wäre der
Unterschied offensichtlich (s. Fig. 14).
Die Abwandlung des Algorithmus besteht darin, daß statt des Skalarprodukts nTh = cos(α) ein modifizierter
Wert verwendet wird, wobei die Änderung abhängig von der Richtung von n-h gemacht wird. Zeigt n-h in
die Richtung größerer Varianz von n, wird der Winkel verkleinert, ist die Varianz von n in dieser Richtung
kleiner, wird der Winkel vergrößert. Ist d die Projektion von n-h in die e1-e2-Ebene, kann man cos(α') statt
cos(α) verwenden (s. Fig. 15 für die verwendete Geometrie), wobei:
und cos2(α)=1-|d|2.
Man erhält α'<α, wenn die Varianz von n in der betrachteten Richtung größer als 1 ist, sonst erhält man
α'≧α. Soll nur isotrope Rauhigkeitsinformation verwendet werden, die durch λ1 gegeben ist, so kann diese
Formel vereinfacht werden:
Die Größe des Highlights und der Helligkeitsabfall zu seinem Rand hin kann immer noch durch den Exponenten m
gesteuert werden. Da allerdings die Rauhigkeitsinformation in D (bzw. λ1) enthalten ist, ist es möglich, auch einen
konstanten Exponenten m zu benutzen. Die Größe des Highlights wird dann ausschließlich durch die Rauhigkeit
gesteuert. Eine weitere Möglichkeit besteht darin, eine feste Funktion f (cos2(α)) mit dem gewünschten
Helligkeitsabfall zu verwenden, um die endgültige Pixelhelligkeit auszurechnen.
[1] Becker, B.G., Max, N.L., Smooth Transitions between Bump Rendering Algorithms, Proceedings of SIGGRAPH
'93, Computer Graphics 27, Annual Conference Series, pp. 183-190.
[2] Bennebroek, K., Ernst, I., Rüsseler, H., Wittig, O., Design Principles of Hardware-based Phong Shading and
Bump Mapping, in Proceedings of the 11thEurographics Workshop on Graphics Hardware, Poitiers Aug. 1996.
[3] Blinn, J., Models of Light Reflection for Computer Synthesized Pictures, SIGGRAPH 77, pp 192-198.
[4] Blinn, J., Simulation of Wrinkled Surfaces, SIGGRAPH 78, pp 286-292.
[5] Kirk, D.B., The Simulation of Natural Features Using Cone Tracing, The Visual Computer, vol. 3, no. 2, (August
1987), pp. 63-71.
[6] Schilling, A., Knittel, G., Straßer, W., Texram: A Smart Memory for Texturing, Computer Graphics &
Applications, May 1996, pp. 32-41.
Die Zeichnungen und Abbildungen zeigen:
Fig. 1 Antialiasing von Bump-Maps ist notwendig; andernfalls werden durch die Pixel (1) verlaufende Sehstrahlen
(2) in zufällige Richtungen reflektiert (reflektierte Strahlen (3)), bzw. man erhält zufällige Helligkeitswerte aus der
Beleuchtungsrechnung mit dem Phong-Modell.
Fig. 2 Tiefpaßfilterung bei Bump-Maps führt zu einer glatten Oberfläche, Bezeichnungen wie in Fig. 1.
Fig. 3 Die Rauhigkeit einer Oberfläche führt dazu, daß Strahlen aus mehr als einer Richtung in ein Pixel reflektiert
werden. Die durch die Pixel (1) verlaufenden Sehstrahlen (2) werden als Strahlbündel (3) reflektiert.
Fig. 4 Darstellung der Bump-Map mit Hilfe von Offset Vektoren. Der ursprüngliche Normalenvektor (1), der die
Länge 1 besitzt, wird durch durch Addition der beiden Komponenten (2) und (3) des Offsetvektors (4) zum neuen
Normalenvektor (5). Dabei haben die beiden Komponenten (2) und (3) die Längen b1 bzw. b2.
Fig. 5 Konstruktion des lokalen Koordinatensystems für die Bump-Map unter Verwendung einer Hauptrichtung
m (1). Dazu werden zwei zueinander und zum Normalenvektor senkrechte Vektoren e1 (2) und e2 (3) berechnet.
Der neue Normalenvektor n' (4) ergibt sich aus dem alten Normalenvektor n (5) durch Addition von b1e1 (6) und
b2e2 (7).
Fig. 6 Die Sehstrahlen, die zu einem Pixel gehören, bilden ein kegelförmiges Strahlenbündel (1). Dieses
Strahlenbündel wird durch eine höckerige Oberfläche (2) reflektiert. Das reflektierte Strahlenbündel (3) wird mit
Hilfe der Verteilung von Normalenvektoren (4) im getroffenen Gebiet als elliptischer Kegel approximiert. Um die
Richtungsverteilung als elliptische Kegel anschaulich zu machen, enden die Normalenvektoren (4) und die
reflektierten Strahlen (3) in der Zeichnung innerhalb von Ellipsen, obwohl ihr Ursprung nicht in einem Punkt
gezeichnet wurde.
Fig. 7 Bumppyramide (1) und Rauhigkeitspyramide (2) Die Pfeile (3), (4) und (5) veranschaulichen, wie mit der
Reduzierung der Auflösung stärkeres Antialiasing mit abnehmender Bumpinformation und zunehmender Rauhigkeit
einhergeht. Zu der Rauhigkeitsinformation aus den niedrigen, höher aufgelösten Stufen kommt in der
Rauhigkeitspyramide (2) noch zusätzliche Rauhigkeit aus der Bumppyramide (1), die dort durch die Reduktion der
Auflösung herausfallen muß, angedeutet durch die Pfeile (6).
Fig. 8 Mond über einem Rechteck; Die Wellen stammen aus einer Bump-Map. Antialiasing mit Hilfe von
Rauhigkeitspyramiden. Als Hintergrund und als Environment-Map wurde ein Bild des Mondes verwendet.
Fig. 9 Wie Fig. 8; kein Antialiasing.
Fig. 10 Reflektierte Zebras. Geometrie: ein flaches Viereck. Bump-Map: abgeleitet aus Fig. 12. Hintergrund:
Farbverlauf. Environment-Map:
Fig. 13. Antialiasing mit Rauhigkeitspyramide.
Fig. 13. Antialiasing mit Rauhigkeitspyramide.
Fig. 11 Wie Fig. 10, ohne Antialiasing.
Fig. 12 Geometrie der der Bump-Map von Fig. 10 und Fig. 11 zugrundeliegenden Fläche.
Fig. 13 Environment-Map zu Fig. 10 und Fig. 11.
Fig. 14 Phong-Shading (1) im Vergleich zu Blinn-Phong-Shading (2). Die Reflexion der Sonne (3) im See (4) ist
einmal als Phong Highlight (5) dargestellt, einmal als Blinn-Phong-Highlight (6). Die Kontur des BP-Highlights (6)
wurde mit dem Programm Maple numerisch berechnet.
Fig. 15 Modifikation von α (1) zu α' (2) für ein modifiziertes Blinn-Phong-Modell. Gezeigt werden die Größen
h-n (3), d (4) und d|d|/|Dd| (5).
Claims (4)
- l. Verfahren für das Antialiasing von Bump-Maps, insbesondere zum Zweck der Erzeugung der Farb- und Helligkeitswerte eines Ausgabegerätes, insbesondere eines Bildschirms, mit Hilfe einer elektronischen Schaltung für die aliasarme Darstellung geometrischer Objekte unter Verwendung von Bump-Maps, gekennzeichnet durch folgende Schritte:
- - Berechnung von Rauhigkeitsinformationen des darzustellenden Objekts, kurze oder auch längere Zeit vor der Darstellung des Objekts,
- - Speicherung dieser Rauhigkeitsinformationen in einer Speichervorrichtung,
- - Verwendung dieser gespeicherten Werte zur Modifikation der Helligkeitswerte durch
- - Veränderung der Parameter des Beleuchtungsmodells oder
- - Veränderung der Parameter eines Environmentmapping-Verfahrens oder
- - Berechnung einer Anzahl reflektierter Strahlen oder Strahlenbündel und Mittelung der resultierenden Helligkeitswerte.
- 2. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß die Rauhigkeitsinformationen aus einer vorliegenden Bump-Map berechnet werden.
- 3. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß die Rauhigkeitsinformationen in Form einer einzigen Zahl pro Abtastpunkt gespeichert werden, die ein Maß für die richtungsunabhängige Verteilung der Normalenwerte innerhalb des betrachteten Gebiets ist.
- 4. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß die richtungsabhängen Rauhigkeitsinformationen in Form mehrerer Zahlenwerte pro Abtastpunkt abgespeichert werden, die die Verteilung der Normalenwerte innerhalb des betrachteten Gebiets repräsentieren.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1997121416 DE19721416A1 (de) | 1997-05-22 | 1997-05-22 | Verfahren zum Antialiasing von Bump-Maps |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1997121416 DE19721416A1 (de) | 1997-05-22 | 1997-05-22 | Verfahren zum Antialiasing von Bump-Maps |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19721416A1 true DE19721416A1 (de) | 1999-01-14 |
Family
ID=7830179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1997121416 Withdrawn DE19721416A1 (de) | 1997-05-22 | 1997-05-22 | Verfahren zum Antialiasing von Bump-Maps |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19721416A1 (de) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2353453A (en) * | 1999-03-18 | 2001-02-21 | Evans & Sutherland Computer Co | System and method for antialiasing bump texture and bump mapping |
US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
-
1997
- 1997-05-22 DE DE1997121416 patent/DE19721416A1/de not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2353453A (en) * | 1999-03-18 | 2001-02-21 | Evans & Sutherland Computer Co | System and method for antialiasing bump texture and bump mapping |
US6525740B1 (en) | 1999-03-18 | 2003-02-25 | Evans & Sutherland Computer Corporation | System and method for antialiasing bump texture and bump mapping |
GB2353453B (en) * | 1999-03-18 | 2003-03-19 | Evans & Sutherland Computer Co | System and method for antialiasing bump texture and bump mapping |
US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
US10110876B1 (en) | 2011-10-06 | 2018-10-23 | Evans & Sutherland Computer Corporation | System and method for displaying images in 3-D stereo |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3855231T2 (de) | Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing | |
DE3689271T2 (de) | Verfahren zur Bildanzeige. | |
DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
DE69816824T2 (de) | Texturabbildung in 3-d-rechnergraphik | |
DE3650129T2 (de) | Verfahren zur Kantenglättung für Rechnerbilderzeugungssystem. | |
DE69836924T2 (de) | Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe | |
DE69127516T2 (de) | Verfahren und Gerät zur Bilderzeugung | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
EP2005259B1 (de) | Verfahren zum rendern und generieren computer-generierter videohologramme in echtzeit | |
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE19646194B4 (de) | Echtzeit-Wiedergabeverfahren zum wahlweisen Ausführen von Bump-Mapping- und Phong-Schattierungs-Prozessen und zugehörige Vorrichtung | |
DE60107130T2 (de) | Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente | |
DE69716877T2 (de) | System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem | |
EP0984397B1 (de) | Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster | |
EP2024793B1 (de) | Verfahren und einrichtung zum rendern und generieren computer-generierter videohologramme | |
DE69430647T2 (de) | Bilddarstellung | |
DE69331486T2 (de) | Bilddatenverarbeitung | |
DE102011016347A1 (de) | Hierarchisches Umgrenzen von verschobenen parametrischen Flächen | |
DE3022454A1 (de) | Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator | |
DE69130127T2 (de) | System und Verfahren zur Farbbilderanzeige | |
DE102010046507A1 (de) | Berechnung der Detailstufe für die anisotrope Filterung | |
DE69606177T2 (de) | Verfahren und gerät zur texturabbildung | |
DE69529732T2 (de) | Korrektur der Perspektive von Texturen in graphischen Bildern durch adaptive Approximation | |
DE69924230T2 (de) | Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten | |
EP0862141A2 (de) | Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8127 | New person/name/address of the applicant |
Owner name: SCHILLING, ANDREAS, DR., 72810 GOMARINGEN, DE |
|
8181 | Inventor (new situation) |
Free format text: ERFINDER IST ANMELDER |
|
8141 | Disposal/no request for examination |