Dreamotion3D 3D (Game) Engine

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von X0r am 18.07.2007 17:30, insgesamt 2-mal geändert.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag 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.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag 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.
I´a dllfreak2001
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag 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.
I´a dllfreak2001
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag 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.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

echt?
weil Hl2 ist ja eigentlich nur ein SM2-Spiel, vielleicht kennen die Tricks wie ei HDR
I´a dllfreak2001
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag 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.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag 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.
I´a dllfreak2001
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag 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.
Antworten