PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Valves eigenartiges Normalmapping


Niall
2005-06-29, 19:28:52
Hi zusammen !

Also also ich vor ein paar Jahren das erste mal vom Normalmapping hörte, gab es ein Plugin von ATI mit welchem man die Licht-/Schatteneigenschaften von HighPoly Modellen mittels Normalmapping auf ein LowPoly Modell mappen konnte. (kennt ihr ja)

gab auch noch das Programm Orb und andere, aber das ist nicht mein Thema.

Dies wird ja nun auch von z.B. Doom³, der UE3 oder FarCry exzessiv genutzt.

Wirft man aber einen Blick auf die Normalmaps die in Half Life ² /CS Source etc. verwendung finden, so fällt sofort eines auf:


Diese Normalmaps sind nicht durch ein "Aufziehen" von Licht-Schatteneigenschaften eines HighPoly Modelles entstanden sondern schlichtweg durch z.B. Das nVidia Normalmap Plugin oder ein anderes Programm welches lediglich aus einer Height-/Bumpmap eine Normalmap generiert.

Die Frage ist nun:

"Was soll das ?"

Verbraucht Normalmapping weniger Rechenleistung /Ressourcen als "normales" DOT3 Bumpmapping oder warum nutzt Valve sie?

Verfehlt es nicht den Sinn von Normalmaps, wenn man nicht mehr von Licht-/Schattenmodellen ausgeht, sondern sie sich einfach mal so per Heightmap "aus dem Hut zaubert"?

Diese durch Normalmapping hervorgebrachte Grafik hätte man aus qualitativer Sicht durchaus auch mit normalem Bumpmapping realisieren können oder nicht? (Ich meine jetzt bei HalfLife2 und CS Source).

Vielleicht kann mir ja jemand die Antwort darauf geben.

Gruß, Niall

Beispiele:

So sieht es aus wenn man die Highpoly/Lowpoly Schose macht:
http://people.freenet.de/Raytrace/Images/nnn.jpg


Und so sieht es bei Valve aus:
http://people.freenet.de/Raytrace/Images/nnv.jpg

storms18
2005-06-29, 20:11:00
Is halt einfacher und leichter für mapper:)

Gast
2005-06-29, 20:23:36
normalmapping=DOT3-bump-mapping

bump-mapping ist einfach der überbegriff für alle techniken die strukturen in oberflächen erzeugen ohne die geometrie zu verändern (echtes displacement-mapping gehört also nicht mehr dazu)

um die normalmaps zu bekommen gibt es nun verschiedene möglichkeiten.

einerseits kann man wie du erwähnt hast ein high-poly und ein low-poly-modell nehmen und aus der differenz die normalmap errechnen (wobei die normalen eigentlich nur aus der höhendifferenz errechnet werden).

andererseit kann man natürlich auch aus einer high-map die normalmap erstellen, oder natürlich die normalmap selbst zeichnen.

das ändert aber an der technik des normalmapping nichts, du könntest HL2 normalmaps in doom3 verwenden und umgekehrt.

bei HL2 fällt es nur wesentlich weniger auf weil es kein specular-lighting gibt welches mit der normalmap verrechnet wird.

Coda
2005-06-29, 22:12:56
Wie schon gesagt ist Normalmapping DOT3-Bumpmapping :)
Es gibt kein anderes Bumpmapping, das nach was aussieht.

Also also ich vor ein paar Jahren das erste mal vom Normalmapping hörte, gab es ein Plugin von ATI mit welchem man die Licht-/Schatteneigenschaften von HighPoly Modellen mittels Normalmapping auf ein LowPoly Modell mappen konnte. (kennt ihr ja)Nix Licht-/Schatteneigenschaften. Die Höhendifferenz High-Poly/Low-Poly wird errechnet und dann eine Normalmap draus generiert.

njoooo.. valve halt :rolleyes:Mein glückwunsch für den sinnfreiesten Beitrag des Tages. :uclap:

Gast
2005-06-29, 22:48:20
Wie schon gesagt ist Normalmapping DOT3-Bumpmapping :)
Es gibt kein anderes Bumpmapping, das nach was aussieht.



naja, parallax-mapping und relief-mapping könnte man auch als bump-mapping sehen und sieht ja nicht gerade schlechter als normal-mapping aus ;)

Neomi
2005-06-29, 23:02:32
naja, parallax-mapping und relief-mapping könnte man auch als bump-mapping sehen und sieht ja nicht gerade schlechter als normal-mapping aus ;)

Diese Mappingtechniken nutzen Normalmapping, sie ersetzen es nicht. Es wird nur zusätzlich die Sampleposition für Basistextur und Normalmap höhenabhängig errechnet.

micki
2005-06-30, 00:25:00
Wie schon gesagt ist Nix Licht-/Schatteneigenschaften. Die Höhendifferenz High-Poly/Low-Poly wird errechnet und dann eine Normalmap draus generiert.
nein, es wird die normale des highpolys genommen und auf das lowpoly gemapped. ist zwar ein kleiner, aber wichtiger unterschied, denn du kannst eine parymide aus 4 triangles haben, die gesmoothed ist, oder hardedges hat, bei ein und derselben geometrie und man möchte ja dass das lowpoly objekt diese eigenschaften möglichst gut nachbildet. (fürs paralaxmapping speichert man natürlich zusätzlich noch die höcheninformationen).

jedenfalls ist es bei den tools die ich kenne so.


ach ja, zum topic, manchmal zeichnet man heightmaps anstatt sie von highpolys zu generieren, denn das zeichnen ist nicht viel aufwendiger als das erstellen von albedo texturen, aber ein highpoly model, damit es wirklich gut ausschaut, kann einiges an zeit fressen. bei spielen wie z.B. X2 waren die muster auch nur gezeichnet.

MfG
micki

Niall
2005-06-30, 07:39:58
O.k. dann hab ich das mit dem DOT3 wohl etwas falsch verstanden. :rolleyes:

Aber eine Frage bleibt trotzdem noch unbeantwortet:

Warum nutzt Valve dann nicht anstatt Normalmapping Reliefmapping ?

Den Umweg über die Normalmaps hätten die sich doch sparen können oder worin liegt der Vorteil Normalmaps zu nutzen ?

Doom³ und FarCry als Beispiel nutzen sowohl Normalmapping als auch Reliefmapping. Also beide Techniken parallel.

Versteht ihr was ich meine ?

Danke erstmal für die klärenden Worte in Bezug auf "DOT3".

Grüße, Niall

Coda
2005-06-30, 11:40:13
Warum nutzt Valve dann nicht anstatt Normalmapping Reliefmapping ?Was soll das sein? DOT3 ist das schnellste Bumpmapping das noch brauchbar ist.

Doom³ und FarCry als Beispiel nutzen sowohl Normalmapping als auch Reliefmapping. Also beide Techniken parallel.Nicht wirklich. Woher hast du das?

Neomi
2005-06-30, 11:41:05
Warum nutzt Valve dann nicht anstatt Normalmapping Reliefmapping ?

Wer Reliefmapping nutzt, nutzt das nicht anstatt Normalmapping, sondern automatisch zusammen mit Normalmapping. Normales Normalmapping ist nämlich als Teil von Reliefmapping für die Beleuchtung zuständig.

Den Umweg über die Normalmaps hätten die sich doch sparen können oder worin liegt der Vorteil Normalmaps zu nutzen ?

Der Vorteil dabei, Reliefmapping nicht zu nutzen, ist ganz einfach die Geschwindigkeit des Pixelshaders. Außerdem kann man eine Normalmap recht gut komprimieren, wenn man den Alphakanal nicht noch für etwas anderes (in dem Fall die Heightmap) braucht.

Doom³ und FarCry als Beispiel nutzen sowohl Normalmapping als auch Reliefmapping. Also beide Techniken parallel.

Ich weiß zwar nicht, was bei den Spielen noch mit offiziellen Patches nachgeliefert wurde, aber von Haus aus war da kein Reliefmapping zu sehen. Bei Doom 3 habe ich zwar Reliefmapping später mal gesehen, aber das wurde von einem anderen in die gut zugänglichen Shader reingebastelt, war also ein Mod und damit keine offizielle Unterstützung.

Gast
2005-06-30, 12:15:30
Wie heißt denn bitte diese Ur-Bumpmapping Technik, in der mittels Heightmap (Graustufenmap). (ich dachte diese heißt Reliefmapping).

Ich meine diese "stinknormale" Bumpmappingtechnik.

Irgendwie komm ich mitlerweile ein bisschen durcheinander, denn im 3D Design sagt man sowohl Reliefmap als auch Bumpmap. (kein Normalmapping /Displacementmapping / Parallaxmapping etc....)

Grüße, Niall

PS: Danke für eure Gedult, ich glaub ich hab mich irgendwie nur falsch ausgedrückt.

Niall
2005-06-30, 12:20:01
Wie heißt denn bitte diese Ur-Bumpmapping Technik, in der mittels Heightmap (Graustufenmap). (ich dachte diese heißt Reliefmapping).

Ich meine diese "stinknormale" Bumpmappingtechnik.

Irgendwie komm ich mitlerweile ein bisschen durcheinander, denn im 3D Design sagt man sowohl Reliefmap als auch Bumpmap. (kein Normalmapping /Displacementmapping / Parallaxmapping etc....)

Grüße, Niall

PS: Danke für eure Gedult, ich glaub ich hab mich irgendwie nur falsch ausgedrückt.


Ups, Geduld schreibt man natürlich mit "d" und der Satzbau ist auch irgendwie komisch geworden... Sorry :rolleyes:


Gruß, Niall

micki
2005-06-30, 12:46:52
Wie heißt denn bitte diese Ur-Bumpmapping Technik, in der mittels Heightmap (Graustufenmap). (ich dachte diese heißt Reliefmapping).

meinst du Embossing bumpmapping das mit der voodoo2 aufkam?

MfG
micki

Coda
2005-06-30, 12:48:04
Emboss ist der größte Dreck. Das kann man nicht vernünftig einsetzen und sieht scheiße aus.

Außerdem würde es nicht mit dem speziellen Bumpmapping funktionieren das Valve einsetzt. Das ist nämlich etwas anderes als bei Doom und Farcry, deshalb auch kein Specular.

Niall
2005-06-30, 13:27:46
Also nochmal mit Beispielen (ID sei mir gnädig)

Diffusemap:
http://people.freenet.de/Raytrace/Images/a/diffuse.jpg

Specularmap:
http://people.freenet.de/Raytrace/Images/a/specular.jpg

Normalmap:
http://people.freenet.de/Raytrace/Images/a/normal.jpg

Height- /Bump was auch immer -map:
http://people.freenet.de/Raytrace/Images/a/height.jpg


Mir geht es nur um die hier als Normal- und Heightmap deklarierten Maps.(Oder wie auch immer die im Echtzeit-3D Bereich genannt wird).

Die Technik die man in Zusammenhang mit der Graustufenmap verwendet hatte ich irrtümlicherweise als Reliefmapping und im letzten Post als "stinknormale"... bezeichnet.



Gruß, Niall

Niall
2005-06-30, 13:34:02
Diese beiden "Bumpmapping" - Techniken werde in Doom³ und Far Cry miteinander kombiniert.

Das meinte ich.

Und warum nutzt Valve nicht nur die "Graustufenmaptechnik" sondern generiert aus den Graustufen oder Diffusemaps per Plugin Normalmaps? Ist das genauer, Ressourcensparender /schneller als die "Graustufenmaptechnik"?

Das war meine Kernfrage.

Sorry wenn ich euch mit falschen Begriffen verwirrt haben sollte.

Grüße, Niall

Gast 2005
2005-06-30, 13:51:04
Doom 3 (also das Spiel selber) benutzt die Heightmap überhaupt nicht. Es werden nur die Diffuse-, Specular- und Normalmap geladen. Bei Farcry ist es IMHO genauso.
Für Dot3-Bumpmapping(=Normalmapping) brauchst du auch lediglich die Normalmap.

Die Heightmap wird nur bei fortgeschrittenen Techniken wie Paralaxmapping verwendet, es gibt aber noch kein Spiel was Paralaxmapping bietet, soweit ich weiß.

micki
2005-06-30, 14:05:44
@Niall
woher stammen die bezeichnungen der maps, also dass es normal, specular,heightmap,diffuse sind? steht das in nem script oder dateinamen? oder nimmst du das nur an?

es könnte sonst sein, dass das was du als heightmap bezeichnest auch für specular zuständig ist. ich hab schön öfters gesehen dass man einen chan für specular power und einen für specular intensity benutzt hat und da D3 eigentlich kein paralaxmapping usw benutzt, wäre es ziemlich sinfrei heightmaps generiert zu haben.

ist aber alles nur eine vermutung.

MfG
micki

Niall
2005-06-30, 14:09:54
Also bei Far Cry werden sie soweit ich weiß benutzt, das sieht man z.B. bei diesen komischen zweibeinigen Monstern die so rumhüppen.

Niall
2005-06-30, 14:15:58
Also das das so ist, kann man sowohl den Materialshadern als auch dem Dateinamen entnehmen.

head_d.tga = Diffusemap

head_spec.tga = Specularmap

head_h.tga = heightmap (Dieses "alte" Bumpmapping)

head_local.tga =Normalmap /wird bei Far Cry z.B. mit *_ddn benannt.

Habe mich damals schon Materialtechnisch mit der Doom³-Alpha und dem Maps befasst, von daher kann ich euch zu 99,9% sagen daß die wirklich so verwendet werden wie sie im Shader und den Dateinamen deklariert sind.

eXistence
2005-06-30, 15:16:30
Doom 3 (also das Spiel selber) benutzt die Heightmap überhaupt nicht. Es werden nur die Diffuse-, Specular- und Normalmap geladen.

Doom3 benutzt die Heightmaps sehr wohl, beim laden werden diese jedoch in normalmaps "konvertiert" und mit der normalen normalmap verrechnet.

Gewisse Dinge sind als Graustufenmap schlicht einfacher zu erzeugen und zu bearbeiten. Feine Oberflächenstrukturen (Stoff, Hautrisse, etc.) lassen sich so nachträglich sehr viel einfacher einbauen, als wenn man sie aufwendig in der highpoly-Version des models mit-modelliert.

micki
2005-06-30, 16:07:45
weißt du sicher dass sie in normalmaps kovertiert werden? könnte doch sein dass sie einfach nur dazu da sind die länge der normalen zu variieren um die bumpstärke festzulegen.

MfG
micki

Gast
2005-06-30, 16:20:22
Die Heightmap wird nur bei fortgeschrittenen Techniken wie Paralaxmapping verwendet, es gibt aber noch kein Spiel was Paralaxmapping bietet, soweit ich weiß.

doch, splinter cell 3, und farcry mit A64-patch.


die relief-mapping-mod für doom3 speicher übrigens die highmap in einem kanal der specular-map

Niall
2005-06-30, 16:43:52
weißt du sicher dass sie in normalmaps kovertiert werden? könnte doch sein dass sie einfach nur dazu da sind die länge der normalen zu variieren um die bumpstärke festzulegen.

MfG
micki


Also wenn man sich Valve's Normalmap mal genauer ansieht (erster Post), so fällt sofort auf, daß es mal eine Stinknormale Diffusemap war die einfach per z.B. Normalmap Plugin von Nvidia in eine Normalmap konvertiert wurde.

Sehr gut zu erkennen an den Quadratischen höhen/tiefen zwischen den UV-Koordinaten. (transparender Hintergrund von Photoshop-Ebene).

Dieser Checkerboard Hintergrund ist im Übrigen auch auf der Diffusemap vorhanden. (Interessiert jedoch nich, da sie außerhalb der UV's liegt.

Coda
2005-06-30, 16:44:46
Also bei Far Cry werden sie soweit ich weiß benutzt, das sieht man z.B. bei diesen komischen zweibeinigen Monstern die so rumhüppen.An was sieht man das da? Ich sehe bei Farcry ausschließlich DOT3 Bumpmapping, egal wo ich hinschaue.

Die Graustufenmap in Doom 3 hat den Hintergrund, das damit der Artist noch zusätzlich zur aus dem ursprünglichen High-Poly Model erzeugten Normalmap Bump-Details zeichen kann.

Das ganze wird aber bevor es auf die Grafikkarte kommt zu einer Normalmap verrechnet.

Niall
2005-06-30, 16:59:48
An was sieht man das da? Ich sehe bei Farcry ausschließlich DOT3 Bumpmapping, egal wo ich hinschaue.

Die Graustufenmap in Doom 3 hat den Hintergrund, das damit der Artist noch zusätzlich zur aus dem ursprünglichen High-Poly Model erzeugten Normalmap Bump-Details zeichen kann.

Das ganze wird aber bevor es auf die Grafikkarte kommt zu einer Normalmap verrechnet.


Also hat die Graustufenmap nicht direkt etwas mit einer anderen Bumpmapping Technik zu tun, sondern hat nur den Zweck zusätzliche Details die vormals nicht auf dem Highpoly Modell waren hinzuzufügen ?

Dann macht Valve das quasi nur um eine, sagen wir mal, 08/15-Struktur auf Basis der Diffusemap zu gewinnen, oder wie ?

Coda
2005-06-30, 17:26:11
Also hat die Graustufenmap nicht direkt etwas mit einer anderen Bumpmapping Technik zu tun, sondern hat nur den Zweck zusätzliche Details die vormals nicht auf dem Highpoly Modell waren hinzuzufügen ?Richtig.

Dann macht Valve das quasi nur um eine, sagen wir mal, 08/15-Struktur auf Basis der Diffusemap zu gewinnen, oder wie ?Ich glaube nicht daran, dass die Normalmap bei Valve aus der Diffusemap errechnet wurde, das gibt nämlich ganz großen Murks.

Wahrscheinlich machen die Artists in Photoshop Heightmaps dafür, speichern es aber als Normalmap ab.

eXistence
2005-06-30, 17:29:48
Also hat die Graustufenmap nicht direkt etwas mit einer anderen Bumpmapping Technik zu tun, sondern hat nur den Zweck zusätzliche Details die vormals nicht auf dem Highpoly Modell waren hinzuzufügen ?

richtig, das ist das, was ich weiter oben versuchte zu erklären.


Die Graustufenmap in Doom 3 hat den Hintergrund, das damit der Artist noch zusätzlich zur aus dem ursprünglichen High-Poly Model erzeugten Normalmap Bump-Details zeichen kann.

die direkt vorhandene normal-map kann durch die Graustufenmap (welche in den Doom3-materials auch als heightmap bezeichnet wird) auch komplett ersetzt werden, wird aber nicht sehr oft gemacht.
Technisch gesehen läuft dies aber eh auf das gleiche hinaus. Denn wenn keine normal-map vorhanden ist, benutzt die Engine eine Art "default-normalmap", welche eine ebene Fläche repräsentiert.

Spasstiger
2005-06-30, 17:56:11
- Doppelpost -

Spasstiger
2005-06-30, 18:00:30
Ich glaube kaum, dass Valve einfach die Diffuse-Maps in Normalmaps umgewandelt hat, dafür sieht das Normalmapping in HL2 einfach zu gut aus.
Z.b. könnte man die Normalmap aus folgendem Bild nicht aus der Diffuse-Map gewinnen:

http://img271.imageshack.us/img271/9734/wellblechwhitenormalmapping7wj.jpg

P.S.: Es kann sein, dass in einige Normalmaps ein Rauschen eingebaut wurde, z.b. bei rauhen Wandstrukturen.

san.salvador
2005-06-30, 18:06:49
- Doppelpost -
€: Ah geh, jetzt hatt er's editiert... :)

Spasstiger
2005-06-30, 18:08:20
€: Ah geh, jetzt hatt er's editiert... :)

Beim Editieren ist komischerweise ein neues Posting entstanden.

Niall
2005-06-30, 18:18:36
Also ich glaub schon, daß die Valve Artists die Normalmap einfach aus der Diffusemap generiert hat:

Diffusemap

http://people.freenet.de/Raytrace/Images/a/bd.jpg


Normalmap

http://people.freenet.de/Raytrace/Images/a/bn.jpg

Schaut man sich nur mal die Knöpfe am Ärmel an, welche auf der Diffusemap dunkel sind. Sie scheinen auf der Normalmap nach innen zu gehen.

Wäre die Normalmap nun durch eine eigens dafür gezeichnete Heightmap entstanden, wäre wohl keiner der Valve Artists so blöd, die Knöpfe am Ärmel nach innen "gehen zu lassen", sondern hätte die jeweiligen Stellen heller gezeichnet um mittels der Normalmap die Wirkung des "hervorhebens" zu erzielen.

Schaut auch mal auf die Hände, vergleicht die anderen hellen und dunklen Stellen auf der Diffusemap mit der Normalmap etc..

Meiner Ansicht nach war alles was sie vielleicht und auch nur vielleicht gemacht haben, ein bisschen mit dem Kontrast /der Helligkeit oder der Gammakurve rumzuspielen um den rauhen Effekt etwas zu verstärken.

Also für mich riecht das entweder nach Faulheit oder nach Zeitdruck.

PS: Fast alle wenn nicht alle Normalmaps in Half Life 2 sind offensichtlich so entstanden.

Grüße, Niall

Niall
2005-06-30, 18:21:43
Ich glaube kaum, dass Valve einfach die Diffuse-Maps in Normalmaps umgewandelt hat, dafür sieht das Normalmapping in HL2 einfach zu gut aus. "...."

P.S.: Es kann sein, dass in einige Normalmaps ein Rauschen eingebaut wurde, z.b. bei rauhen Wandstrukturen.


Aber doch kann es sein, den Effekt den du da aufzeigst könnte man z.B. erzielen, wenn man nur mal ein bisschen den Kontrast der Diffusemap hochdreht und sie dann per Normalmapplugin umwandelt.

Gast
2005-06-30, 18:46:48
Schaut man sich nur mal die Knöpfe am Ärmel an, welche auf der Diffusemap dunkel sind. Sie scheinen auf der Normalmap nach innen zu gehen.




sorry, aber wie willst du auf einer normalmap erkennen ob etwas "nach außen" oder "nach innen" steht, hast du den entsprechenden algorithmus im kopf?

vor allem da in der normalmap garkeine höhen gespeichert sind, man könnte höchstens eine "referenzhöhe" nehmen und über die normalen die höhe der umliegenden pixel berechnen.

hofmetzger
2005-06-30, 19:21:50
sorry, aber wie willst du auf einer normalmap erkennen ob etwas "nach außen" oder "nach innen" steht, hast du den entsprechenden algorithmus im kopf?

vor allem da in der normalmap garkeine höhen gespeichert sind, man könnte höchstens eine "referenzhöhe" nehmen und über die normalen die höhe der umliegenden pixel berechnen.

öhm, anhand der farbe? türkis z.b. sieht aus als ob die normale nach süden geneigt ist.

Bin ich eigentlich der einzige hier der die frage versteht?
"Warum benutzt valve eine rgb-normalmap die doch nicht mehr informationen enthält als die graustufen-map? Ist der Speicherplatzbedarf (rgb) weniger schlimm als die nötige Rechenleistung zur Laufzeit (graustufen)?"

Niall
2005-06-30, 19:28:17
öhm, anhand der farbe? türkis z.b. sieht aus als ob die normale nach süden geneigt ist.

Bin ich eigentlich der einzige hier der die frage versteht?
"Warum benutzt valve eine rgb-normalmap die doch nicht mehr informationen enthält als die graustufen-map? Ist der Speicherplatzbedarf (rgb) weniger schlimm als die nötige Rechenleistung zur Laufzeit (graustufen)?"


Danke, Danke ,Danke !!!!!!!

Und wie du schon sagtest: Man kann erkennen was hervorkommt und was hineinragt. Ist vielleicht ein klein bisschen subjektives Empfinden, aber es geht.

Genau so meinte ich das !!!

Und da die Normalmaps Augenscheinlich nicht durch den Highpoly- Lowpoly Vorgang hergestellt worden sind, werden die Fragezeichen noch größer.

Xmas
2005-06-30, 19:33:13
Ist der Speicherplatzbedarf (rgb) weniger schlimm als die nötige Rechenleistung zur Laufzeit (graustufen)?"
Häufig ja.

Spasstiger
2005-06-30, 19:45:11
Es gab mal ein Entwicklervideo von Valve, wo gezeigt wurde, wie aus einem 3D-Modell einer Felswand eine Normalmap erstellt wurde. Wenn man einfach das Photoshop-Plugin über die Diffuse-Map drüberjagt, würden fast nie brauchbare Ergebnisse rauskommen und das Normalmapping in Half-Life 2 ist eigentlich immer korrekt.

Niall
2005-06-30, 19:59:45
Es gab mal ein Entwicklervideo von Valve, wo gezeigt wurde, wie aus einem 3D-Modell einer Felswand eine Normalmap erstellt wurde. Wenn man einfach das Photoshop-Plugin über die Diffuse-Map drüberjagt, würden fast nie brauchbare Ergebnisse rauskommen und das Normalmapping in Half-Life 2 ist eigentlich immer korrekt.


Das stimmt, einige wenige sehen auch nicht nach Plug-in aus, aber bei vielen (wie auch im obigen Beispiel) wurde offensichtlich wirklich, wie du es so treffend sagst, einfach das Plug-in "drübergejagt".

Spasstiger
2005-06-30, 20:04:48
Das stimmt, einige wenige sehen auch nicht nach Plug-in aus, aber bei vielen (wie auch im obigen Beispiel) wurde offensichtlich wirklich, wie du es so treffend sagst, einfach das Plug-in "drübergejagt".

Ich vermute eher, dass ein Rauschen nachträglich drübergelegt wurde.

Coda
2005-06-30, 20:20:16
Man kann nicht einfach Heightmaps auf die Grafikkarte laden für Bumpmapping. Dann müsste man 4 mal die Heightmap samplen pro Pixel nur um den Normalenvektor zu generieren.

eXistence
2005-07-01, 09:59:39
Man kann nicht einfach Heightmaps auf die Grafikkarte laden für Bumpmapping. Dann müsste man 4 mal die Heightmap samplen pro Pixel nur um den Normalenvektor zu generieren.

Hat das jemand behauptet?
AFAIK konvertiert Doom3 die heightmaps einmalig beim Laden der Level-Daten. Dei Grafikkarte weiß von der ursprünglichen heightmap garnix :)

Coda
2005-07-01, 10:06:14
"Warum benutzt valve eine rgb-normalmap die doch nicht mehr informationen enthält als die graustufen-map? Ist der Speicherplatzbedarf (rgb) weniger schlimm als die nötige Rechenleistung zur Laufzeit (graustufen)?" :rolleyes:

eXistence
2005-07-01, 10:22:04
ups, ok, mein Fehler, bezog sich auf was anderes :)

aths
2005-07-01, 12:40:35
öhm, anhand der farbe? türkis z.b. sieht aus als ob die normale nach süden geneigt ist.

Bin ich eigentlich der einzige hier der die frage versteht?
"Warum benutzt valve eine rgb-normalmap die doch nicht mehr informationen enthält als die graustufen-map? Ist der Speicherplatzbedarf (rgb) weniger schlimm als die nötige Rechenleistung zur Laufzeit (graustufen)?"Hast du den 3DC-Artikel zum Thema Bumpmapping gelesen?

hofmetzger
2005-07-01, 13:34:13
Hast du den 3DC-Artikel zum Thema Bumpmapping gelesen?

Ja. Doch trotzdem (und trotz meines Informatikstudiums mit Vorlesungen der graphischen Datenverarbeitung) kann man nicht immer alles im Kopf haben... :)

Normalmappig liefert Informationen zur Berechnung der Beleuchtungsgleichung, die im tangentspace zur Flächennormale des Dreiecks hinzugenommen werden. Je nach lookup in der Bumpmap, wird also die Normale verbogen, um den Eindruck von geometrischen Details auf einem an sich flachen Dreieck entstehen zu lassen. Die Richtung in die die Normale bezüglich der Lage des Dreiecks zeigt, wird durch die Farbwerte der Bumpmap bestimmt (3 Koordinaten - 3 Farben).
Soviel zu meinem Kenntnisstand -- ich hoffe ich habe keinen BS erzählt :)

Festzustellen bleibt, dass "früher" mit graustufenmaps gearbeitet wurde, um höhenunterschiede zu simulieren, heute trifft man zunehmend
"bunte" Bumpmaps an. Die Frage nach dem Sinn stellt sich umsomehr, wenn hier wirklich ein Tool am arbeiten war, statt dass die Bumpmap auf einem High-Poly-Modell basiert. Ich denke zwar, dass die paar MB Speicherplatz leichter zu verkraften sind, als lange Ladezeiten in denen die Konvertierung jedesmal on the Fly gemacht werden müsste.
Aber: wie war das früher? Warum damals Graustufen? Oder war das (wie angedeutet) gar kein echtes Bumpmapping?

Coda
2005-07-01, 14:48:36
Auf die Grafikkarte wandern immer "bunte" Bumpmaps. Man kann natürlich graustufen Heightmaps auf der Platte speichern um etwas Speicherplatz zu sparen.

aths
2005-07-01, 15:17:02
Festzustellen bleibt, dass "früher" mit graustufenmaps gearbeitet wurde, um höhenunterschiede zu simulierenWann und wo?

Aber: wie war das früher? Warum damals Graustufen? Oder war das (wie angedeutet) gar kein echtes Bumpmapping?Verwechselst du Detailmapping mit Bumpmapping?

hofmetzger
2005-07-01, 16:34:52
Wann und wo?


Bevor ich mich weiter aus dem Fenster lehne: Ich habs zumindest so in Erinnerung. Mir fällt da Forsaken ein (das hab ich aber nicht mehr).

Chris Lux
2005-07-02, 08:42:45
Hat das jemand behauptet?
AFAIK konvertiert Doom3 die heightmaps einmalig beim Laden der Level-Daten. Dei Grafikkarte weiß von der ursprünglichen heightmap garnix :)
sorry, wenn ich B*LLSH*T rufen muss. schau doch einfach mal in die pak files rein, da ist kaum eine heightmap, sondern nur normalmaps. für den parallaxmapping mod gibt es extra ein tool, welches aus den normalmaps heightmaps generiert.

UND das normalmapping von HL2 ist mit nichten perfekt, mir passiert es andauernt, dass ich mit der taschenlampe rumlaufe und der boden vor mir dunkel wird wobei die wände korrekt sind, wenn ich mich drehe wird er zunehmens heller. also bitte...

Demirug
2005-07-02, 09:26:42
Auf die Grafikkarte wandern immer "bunte" Bumpmaps. Man kann natürlich graustufen Heightmaps auf der Platte speichern um etwas Speicherplatz zu sparen.

In der schlechten alten Zeit als die Grafikhardware noch keine Dot3 Operationen beherschte und man für ein Chip mit 2 Texturen pro Pass mordete gab es einmal eine Technik die "Emboss Bump Mapping" genannt wurde. Die Shader verwöhnten Jungspunde kennen das natürlich nicht. Beim Embossing verwendete man keine Normalmap, was aufgrund der fehlenden Dot3 Operationen auch recht sinnloss gewesen wäre, sondern Highmaps. Diese wurde in der Regel im Alphakanal abgelegt. Es konnte allerdings auch sinnvoll sein sie in eine 1 Kanal Texturen zu legen. Aus diesem Grund speicherte man die Highmap gerne als Graustufen bitmap ab.

Das ganze war ein recht übler Fake konnte aber für damalige verhältniss ganz gut aussehen. Embossing neigt aber leicht zur Bildung von Artefakten. Das es nicht so pubulär wurde dürfte daran liegen das es das medienwirksamen spekuläre Licht nicht unterstüzt. Embossing ist eine Bump Mapping Technik welche nur für Diffuse Beleuchtung funktioniert.

eXistence
2005-07-02, 11:44:32
sorry, wenn ich B*LLSH*T rufen muss. schau doch einfach mal in die pak files rein, da ist kaum eine heightmap, sondern nur normalmaps. für den parallaxmapping mod gibt es extra ein tool, welches aus den normalmaps heightmaps generiert.


häh?
natürlich verwendet Doom3 in erster Linie direkt vorhandene normalmaps, ich hab auch nie was anderes behauptet.
Trotzdem ist teilweise(!) noch eine zusätzliche heightmap* vorhanden, um spezielle details nachträglich hinzuzufügen.

Wenn du willst, kann ich dir da zig Beispiele aus den material-definitions aufzählen...

*wie bereits erwähnt haben diese heightmaps aber nix mit parallax-mapping zu tun, sondern daraus werden beim Laden der level-Daten die normalen generiert und der normalmap hinzugefügt

R300
2005-07-02, 11:58:17
In der schlechten alten Zeit als die Grafikhardware noch keine Dot3 Operationen beherschte und man für ein Chip mit 2 Texturen pro Pass mordete gab es einmal eine Technik die "Emboss Bump Mapping" genannt wurde. Die Shader verwöhnten Jungspunde kennen das natürlich nicht. Beim Embossing verwendete man keine Normalmap, was aufgrund der fehlenden Dot3 Operationen auch recht sinnloss gewesen wäre, sondern Highmaps. Diese wurde in der Regel im Alphakanal abgelegt. Es konnte allerdings auch sinnvoll sein sie in eine 1 Kanal Texturen zu legen. Aus diesem Grund speicherte man die Highmap gerne als Graustufen bitmap ab.

Das ganze war ein recht übler Fake konnte aber für damalige verhältniss ganz gut aussehen. Embossing neigt aber leicht zur Bildung von Artefakten. Das es nicht so pubulär wurde dürfte daran liegen das es das medienwirksamen spekuläre Licht nicht unterstüzt. Embossing ist eine Bump Mapping Technik welche nur für Diffuse Beleuchtung funktioniert.


Hmmm ich erinnere mich noch an 3DMark 2000 auf meiner alten ATi rage128.
Also ich fand das eigentlich ganz gut. Habs aber leider nie in Spielen gesehen.
Gabs eigentlich mal ein Spiel das Emboss Bump Mapping eingesetzt hat?

hofmetzger
2005-07-02, 12:18:45
In der schlechten alten Zeit als die Grafikhardware noch keine Dot3 Operationen beherschte und man für ein Chip mit 2 Texturen pro Pass mordete gab es einmal eine Technik die "Emboss Bump Mapping" genannt wurde.[...]

Danke!
btw: Google liefert als ersten Treffer ein nvidia-ppt auf dessen siebter Folie das Verfahren ziemlich deutlich dargestellt ist.

Coda
2005-07-02, 12:55:01
Ich kenne Emboss. Aber es hätte bei Valve auch nicht funktioniert, weil sie pro Lightmap-Texel den Normalenvektor der Radiosity komprimieren und den kann man nur mit DOT3-Bumpmapping weiterverwenden.

Außerdem habe ich Emboss mit Absicht ausgeklammert, weil es absolut übel aussieht imho.

Demirug
2005-07-02, 13:02:53
Ich kenne Emboss. Aber es hätte bei Valve auch nicht funktioniert, weil sie pro Lightmap-Texel den Normalenvektor der Radiosity komprimieren und den kann man nur mit DOT3-Bumpmapping weiterverwenden.

Außerdem habe ich Emboss mit Absicht ausgeklammert, weil es absolut übel aussieht imho.

Das war auch nur auf das "immer" bezogen.

Zudem können GPUs auch Highmaps in Normalmaps umrechnen. Ist eine gute Sache wenn man dynamische Texturen braucht.

Coda
2005-07-02, 13:07:22
Zudem können GPUs auch Highmaps in Normalmaps umrechnen. Du meist jetzt beim Laden und nicht beim Samplen oder? Wie auch immer, Valve hätte beides keinen Vorteil gebracht.

OT: Heightmaps, nicht Highmaps :)

aths
2005-07-02, 13:32:19
Ich kenne Emboss. Aber es hätte bei Valve auch nicht funktioniert, weil sie pro Lightmap-Texel den Normalenvektor der Radiosity komprimieren und den kann man nur mit DOT3-Bumpmapping weiterverwenden.

Außerdem habe ich Emboss mit Absicht ausgeklammert, weil es absolut übel aussieht imho.Von PowerVR gibts eine Demo, in der Emboss BM nicht "absolut übel" aussieht, auch wenn die Qualität an Dot3 BM nicht ganz heranreicht.

zeckensack
2005-07-02, 16:28:25
Wenn man nur ein Format speichern kann/will, sollte man theoretisch height maps nehmen, und die normal maps daraus erzeugen.

HM=>NM ist die erste Ableitung
NM=>HM ist das Integral

Bekanntermaßen gehen bei der Ableitung konstante Terme verloren, sodass der Prozess nicht umkehrbar ist.

f(x):=x => f'(x)=1
g(x):=x+5 => g'(x)=1

f(x)!=g(x), dennoch f'(x)=g'(x)

Dh nun für normal maps, dass man nicht wissen kann wo auf der Textur die Höhe=0 ist, wenn überhaupt. Wenn man naiv einfach eine Ecke als Höhe=0 annimmt, und von da aus den Rest abarbeitet, kann das auch grob falsch sein.

Das Problem dabei ist nur, dass real existierende normal maps präziser sind als height maps, einfach schon weil sie mehr Bits haben. Die Entscheidung ist also nicht ganz so einfach. Im Zweifelsfall muss man beides vorliegen haben.

Trotzdem ist teilweise(!) noch eine zusätzliche heightmap* vorhanden, um spezielle details nachträglich hinzuzufügen.Das da oben könnte der Grund dafür sein :)