Seite 4 von 9
Verfasst: 18.07.2007 17:25
von X0r
Es gibt aber noch eine weitere Methode, die sich Heightmapping(Kennen wir ja alle) nennt. Da liegen die Informationen in Form von relativen Höhendaten vor. Es wird eine Textur mit bestimmten Graustufen verwendet(Jede Graustufe bestimmt eine Höhe, 0 ist die tiefste Stelle, 255 die höchste). Wird zum erstellen von Terrains verwendet.
Verfasst: 18.07.2007 17:26
von PureLust
RaVeN99 hat geschrieben:Normal maps 'immitieren' ein hi-poly modell.
Zuerst wird ein solches erstellt, mit wirklich verdammt viel polys, dann wird die normal map erstellt, das Modell wird von den polys her zurückgeschraubt, die normal map wird drüber gelegt und das ganze sieht so aus, als hätte man ein hi-poly modell vor sich, frisst aber weniger performance.
Ahh ... eine NormalMap ist also eine Kombi aus mehr Polygonen und einer vorgerenderten Oberfläche.
Dann ist der (wenn auch geringe) Performanceverlusst verständlich.
Da beide "Map" heissen dachte ich, beide wären einfach nur BitMaps (was ja bei einer BumpMap im Grunde der Fall ist) aber eben mit anderen Auswirkungen beim Rendering.
Der Unterschied im Ergebnis (siehe z.B. die ANNO-Screenshot in meiner Signatur) ist nämlich erheblich.
Verfasst: 18.07.2007 18:12
von dllfreak2001
Ne Normalmap ist einfach nur eine erweiterte BumpMap.
@forge die Heightmap ist keine Bumpmap.
Bumpmap bedeutet Polygone mit einer textur simulieren.
Heightmap bedeutet aus 2D-Daten ein Polygonterrain machen.
Verfasst: 18.07.2007 19:53
von Zaphod
Eine Normalmap speichert oberflächennormalvektoren. Ein normalvektor ist ein einheitsvektor der Länge 1 und soll nur eine Richtung anzeigen. Es ist also keine erweiterte Bumpmap, eine Bumpmap die die Höhendifferenz darstellt ist für den schattenwurf zusätzlich nötig.
Das man normalvektoren (ich bin mir nicht sicher dass das der richtige deutsche begriff ist, gemeint sind normals) in einer Bitmap speichern kann liegt daran, dass eine Farbeinheit ja aus drei Komponenten besteht, die man ja auch als 3d Vektor im Farbraum interpretieren könnte.
Bei der Lichtdarstellung kann man dann für jeden darzustellenden Pixel in die entsprechende position der Normalmap gucken, sieht da die ausrichtung der Fläche an genau diesem punkt und kann dann abhängig vom Blickwinkel sehen, welche Lichtquellen wie reflektiert werden. Dadurch wirkt es als würden die Flachen details eine korrekte oberfläche haben. Bumpmaps alleine stellen immer nur richtungslos runde oberflächen dar, können aber zur ermittlung von schattenwurf genutzt werden. Hat man die oberflächenreflexe zusammen mit dem schattenwurf ergibt dass das sehr realitätsnahe bild der Doom3 engine.
Leider kann kein Mensch in vertretbaren Aufwand eine Normalmap zeichnen, weswegen man die 3d Modelle erst in "Kinoqualität" modelliert, davon ein polygonärmeres Modell ableitet und für die details die dadurch verloren gehen diese Normalenvektoren in eine Textur überführt.
@dllfreak2001:
Ich frag mich wie dann Modding für zB. die Source Engine betrieben werden soll, denn die guten Leute da bringen auch dem original gleichwertiges Material zustande.
sieh dir mal Half Life2, CounterStrike:Source und Mods/TCs auf basis der Source engine an... keine Normalmaps, keine Displacementmaps, nichteinmal Bumpmaps... stinknormale 3d Modelle wie zu zeiten von Quake3, nur halt mit ein wenig mehr Polygonen.
Die einzigen Effekte die es bei HL2 Modellen gibt sind environmentmaps, die problemlos zu erstellen sind und vielleicht noch glossmaps (also maps die definieren, wie stark eine Fläche glänzt), für die es bewährte einfache verfahren gibt um sie per Hand zu pinseln. Das es dafür 3D Modelle gibt wundert nicht, das ist ja auch kein annähernd so großer Aufwand wie bei Modellen mit Normalmapping... Quake 3 Modelle und UT2003/4 Modelle gibt es ja schließlich auch zuhauf.
Verfasst: 18.07.2007 20:04
von dllfreak2001
Stimmt nicht, HL2 nutzt Normal und Bumpmaps exessiv.
Was denkst du wie die Felsformationen entstehen?!
Das sind Normalmaps, dazu wurde sogar extra ein Tool für den Source-SDK präsentiert(mit dem wurde der gesamte Content aus Highpolymodels berechnet).
Genauso nutzt dass Spiel durchgängig Bumpmaps, geh mal in HL2/CSS einen dunklen Raum und beleuchte mal mit der Taschenlampe eine stark strukturierte Fläche.
Wenn du mal in Wikipedia reinschauen würdest, könntest du sehen das bei Normalmaps ebenfalls nur ein Beleuchtungseffekt angewandt wird um den plastischen Eindruck zu vermitteln. Das heißt bei Normalmaps wird nicht die Textur perspektivisch verzehrt sondern nur ein Glanz/Schattenwurf erstellt der wegen der nicht planen Fläche des ursprünglichen Hipolymodel mehr als nur eine Heightmap braucht, also die drei Normalvektorparameter.
Von daher ist eine Normalmap nichts weiter als eine erweiterte Bumpmap...
Auszug aus dem Wikipedia Artikel
http://de.wikipedia.org/wiki/Bumpmapping
In einer Normalmap werden anstatt von Höheninformationen Vektoren in ein RGB-Farbentripel konvertiert. Jeder Pixel besteht aus 3 Farbenkanälen: Rot, Grün und Blau. Diese können als X,Y und Z interpretiert werden: der Vektor muss nur mehr normalisiert werden, um daraus den Helligkeitsfaktor am betreffenden Punkt zu berechnen (siehe Per-Pixel-Lighting). Hierbei muss beachtet werden, dass der Vektor, der aus den Farbwerten berechnet wird, im Tangentenraum vorliegt. Um die nötigen Berechnungen durchführen zu können, muss dieser Vektor in das Weltkoordinatensystem transformiert werden. Alternativ könnten auch alle anderen Vektoren (Kamera-Punkt, Licht-Punkt) in das Tangentenkoordinatensystem verschoben werden.
Der Glanzeffekt heißt Specularmap.
Und Displacement wird erst mit Smartshader 3 genutzt funzt ähnlich wie Pralax-Scrolling. Das heißt HL2 hat tatsächlich keine Displacements.
Verfasst: 18.07.2007 21:08
von Sebe
Source kann Displacement Mapping und HL2 hat die auch teilweise (genauso wie Episode One, Lost Coast hat sogar für fast jede Texture Displacement Mapping). Wird nur nicht benutzt, Valve allein weiss warum.
Verfasst: 18.07.2007 21:12
von dllfreak2001
echt?
weil Hl2 ist ja eigentlich nur ein SM2-Spiel, vielleicht kennen die Tricks wie ei HDR
Verfasst: 18.07.2007 21:41
von Sebe
HL2 kann natürlich auch SM3.0 nutzen. Gab doch damals das Geschiss, dass zuerst nur ATI Karten für SM3.0 bei Source unterstützt wurden und die NVidia Karten auf SM2.0 gezwungen wurden.
Verfasst: 18.07.2007 21:47
von dllfreak2001
Ne, Source kann keinen SM3 ab.
zB. HDR wird in HL2 mit reduzierter Farbtiefe dargestellt
damit es SM2.0 kompatibel bleibt.
Ich denke auch Displacements werden dort getrickst dargestellt.
Aber ich schau nochmal nach.
Edit:
Hast Recht, mit dem neuen HDR Modus kam auch SM3 ins Spiel rein.
Kann mich an diesen Geschieß aber nicht erinnern.
Verfasst: 18.07.2007 22:05
von Sebe
Naja, die Source Engine ist eh nicht so mein Ding. Zwar wunderbar skalierbar, aber ich ordne die trotzdem unterh Unreal Engine 3 und id Tech 5 ein.