User Tag List

Ergebnis 1 bis 6 von 6

Thema: HDR (High Dynamic Range)

  1. #1
    Mitglied Avatar von chuuuuucky
    Registriert seit
    20.06.2010
    Beiträge
    374
    Blog-Einträge
    1
    Renommee-Modifikator
    8

    HDR (High Dynamic Range)

    HDR (High Dynamic Range)

    Ok. In diesem Tutorial werde ich euch erklären, was HDR ist, welchem Zweck es dient und wozu man es überhaupt braucht.

    (Ich werde mich nach dem Valve Wiki richten aber nur auf die Basisfunktion des tonemap_controllers eingehen)

    Um euch zu zeigen was HDR macht, habe ich hier ein Beispiel eingefügt:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Mit und ohne HDR.jpg 
Hits:	62 
Größe:	96,7 KB 
ID:	1022

    Wenn man ganz am Anfang, als HDR im kommen war, darüber geredet hat, was HDR eigentlich macht, wurde einem in der Regel gesagt:
    "Das macht das es blendet, wenn man von drinnen nach draußen geht."
    Das ist im Großen und Ganzen richtig aber bei weitem nicht alles was HDR so mit eurer Map treibt.

    Was macht HDR dann genau?

    HDR, ausgeschrieben „High Dynamic Range“, erweitert die 256 möglichen Helligkeitsabstufungen pro Farbkanal und ermöglicht es so stärkere Kontraste darzustellen. Durch die hohe Anzahl an verschiedenen Beleuchtungsstärken ermöglicht HDR eine realistische Beleuchtung von Objekten, sowie eine wesentlich realistischere Berechnung von Lichtstreuung und Lichtreflexionen.
    Dies bedeutet, dass man mit HDR in der Lage ist, neben den Effekten wie „Lens Flare“, „Blendeffekt“ und die „Trägheit der Pupillen“, vor allem auch eine realistische Ausleuchtung von Innen und Außenbereichen zu simulieren.
    Hier 3 Bilder um zu zeigen was, das im Klartext bedeutet. (Bilder aus Lost Coast)

    Jeweils immer links mit und rechts ohne HDR

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Geländer mit und ohne HDR.jpg 
Hits:	48 
Größe:	103,2 KB 
ID:	1023Klicke auf die Grafik für eine größere Ansicht 

Name:	Durchgang mit und ohne HDR.jpg 
Hits:	48 
Größe:	88,0 KB 
ID:	1024Klicke auf die Grafik für eine größere Ansicht 

Name:	Kirchenfenster mit und ohne HDR.jpg 
Hits:	58 
Größe:	100,2 KB 
ID:	1025

    Vor allem die realistische Beleuchtung von Innenräumen ist eine sehr wichtige Aufgabe von HDR. So ist es nicht mehr nötig etliche Lichter in einen Raum zu packen um sämtliche dunklen Ecken zu entfernen. Vielmehr reicht es natürliche Lichteinlässe wie Fenster oder Löcher zu schaffen. Das einfallende Licht wird gestreut und beleuchtet so die direkte Umgebung.

    Soviel zur Theorie, kommen wir nun zur Anwendung von HDR im SDK.
    Grundlagen zum Einsatz von HDR

    Die einfachste Methode, den HDR Effekt in seine Map zu bekommen, wäre es auf Run Map zugehen VBSP, VVIS und VRAD auf „Normal“ zu stellen und beim „Run Rad-Fenster“ ein Häkchen bei „HDR“ zu setzen.

    Name:  Compile Window.jpg
Hits: 183
Größe:  77,7 KB

    Wenn ihr nicht den Hammer Standart Compiler benutzt, könnt ihr mit folgenden Befehlen in den „Command Zeilen“ mit HDR compilen:
    -both --> compiliert sowohl LDR als auch HDR
    -ldr --> compiled nur LDR
    -hdr --> compiled nur HDR
    -final --> compiled HDR mit höherer Qualität
    Hier taucht ein neuer Begriff auf. „LDR“ ist die Beleuchtungsvariante vor HDR und bedeutet „Low Dynamic Range“. Damit compiliert man wesentlich schneller, sieht aber nicht so gut aus. Um nur mit „LDR“ zu kompilieren, einfach das Häkchen bei „HDR“ weglassen.
    Achtung: -final erhöht die Compilezeit unter umständen dramatisch. Dieser Befehl sollte nur für den letzten Durchgang verwendet werden.
    Haben wir Compiled müssen wir HDR im Spiel zum laufen bringen. Um dies zu erreichen gibt es mehrere Möglichkeiten:

    a) Ihr geht im Spiel auf: Optionen -> Video -> Fortgeschritten -> High Dynamic Range -> Alle
    Name:  HDR aktivieren.jpg
Hits: 184
Größe:  26,9 KB

    b) Man kann HDR oder LDR auch beim Start über die Command Zeilen starten, dazu braucht man folgende Befehle:
    +mat_hdr_enabled 0/1
    0 steht für LDR und 1 steht für HDR.
    oder
    +mat_hdr_level 0/1/2
    0 bedeutet ohne HDR oder LDR, 1 bedeutet LDR mit Bloom Effekt, 2 bedeutet HDR mit Bloom Effekt.
    Um die Source Engine nun dazu zu zwingen HDR zu benutzen, geht ihr unter Steam in die Bibliothek - Rechtsklick auf das Spiel -> Properties -> Startoptionen festlegen und fügt z.B für Full HDR +mat_hdr_enabled 1 +mat_hdr_level 2 ein.
    Oder ihr erstellt ein Desktop Icon, geht in Eigenschaften und fügt diese Zeile entsprechend ein.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Hdr_engine_shortcut.jpg 
Hits:	38 
Größe:	27,1 KB 
ID:	1028

    Nun müsst ihr im Spiel noch die „cubemaps“ bilden, damit HDR richtig dargestellt werden kann. Buildcubemaps muss sowohl für HDR, als auch für LDR durchgeführt werden, um vernünftige „cubemaps“ zu erhalten.

    Dafür gehen wir ins Spiel und Starten die Map. Habt ihr HDR mit einer der oberen Möglichkeiten aktiviert, gebt ihr in die Konsole buildcubemaps ein.
    Ist dieser Vorgang beendet, gebt mat_hdr_enabled 0 in die Konsole ein, um LDR zu aktivieren und gebt noch einmal buildcubemaps in die Konsole ein.
    Dieser Vorgang muss nach jedem Compilevorgang wiederholt werden.

    HDR läuft nun in beiden Fällen mit den von Valve vordefinierten Einstellung und verhält sich nicht selten ziemlich zügellos und sorgt zumeist eher für ein Kopfschütteln, als für ein anerkennendes Kopfnicken.

    Um HDR kontrolliert einzusetzen, benötigt ihr das Entity „env_tonemap_controller“.

    env_tonemap_controller

    Klicke auf die Grafik für eine größere Ansicht 

Name:	tonemap controller.jpg 
Hits:	27 
Größe:	37,3 KB 
ID:	1029

    Der Tonemap Controller hilft euch, den HDR Effekt in den Griff zu bekommen und nach euren Wünschen einzustellen. Wird kein Tonemap Controller in die Map eingefügt und HDR aktiviert, wird der Standartwert für HDR benutzt, welcher sich in manchen Situationen sehr seltsam verhält.

    Was brauchen wir um den Tonemap Controller benutzen zu können?

    Entities:
    env_tonemap_controller
    trigger_multiple (optional)
    logic_auto
    Der env_tonemap_controller hilft euch HDR zu bändigen und den Effekt zu erzielen den ihr haben wollt.

    Hier die Einstellungen die ihr im env_tonemap_controller vornehmen könnt.
    SetTonemapScale
    Hier könnt ihr die Intensität des Lichteinfalls bestimmen. 0 bedeutet kein Lichteinfall, 1 bedeutetAugen halb offen und 2 bedeutet Augen ganz offen (200% Lichtintensität)
    Die bedeutet das 1 der Standartwert für HDR ist.
    BlendTonemapScale <string>
    Diese Eeinstellung ermöglicht es euch den tonemapScale Wert innerhalb einer bestimmten Zeit zu ändern. Dabei gilt für string folgendes <string> = <neuer tonemapScale Wert> <Überblenddauer> 0.5 10 würde z.B bedeuten das man innerhalb von 10 Sekunden auf einen TonemapScale Wert von 0.5 überblenden würde. Für TonemapScale gelten die Werte von SetTonemapScale.
    UseDefaultAutoExposure
    Setzt den Belichtungswert auf Standard
    SetAutoExposureMin <float>
    Setzt den minimalen Belichtungswert fest.
    SetAutoExposureMax <float>
    Setzt den maximalen Belichtungswert fest.
    SetBloomScale <float>
    Mit dieser Funktion kann man einen eigenen Bloom Wert bestimmen.
    Wir wollen nun also den tonemap controller konfigurieren. Dies ist bei diesem Entitie nur über das I/O System möglich.
    Fangen wir also an.

    1. Zuerst setzen wir den env_tonemap_controller irgendwo in die Map. Wählt einen Ort aus an dem ihr ihn jederzeit wiederfindet. Den Start der Map, neben die Sonne, es spielt im Endeffekt keine Rolle.

    2. Nun gebt ihr dem Controller einen Namen. Nennt in z.B tonemap.

    3. In diesem Beispiel werden wir die Startparameter bei Levelbeginn einstellen. Um den env_tonemap_controller zu beginn verwenden zu können, müsst ihr ein logic_auto Entitie verwenden. In diesem tragt ihr die Werte aus dem folgenden Bild ein.

    Name:  Hdr_logic_auto.png
Hits: 181
Größe:  19,6 KB

    Damit habt ihr erreicht das ihr einen Bloomscale von 1.3, einen maximalen Blendwert von 2 und minimal 0.8 erreicht. Dies bedeutet, dass ihr an den hellsten Stellen doppelte Lichtstärke habt und in den dunkelsten Bereichen des Levels um den Wert 0.2 (20%) dunkler seid, als der Standartwert.

    4. Nun ist es aber so das ihr nich von vorne herein wisst welche Werte ihr braucht.
    Der beste Weg um sich seinen Werten anzunähern ist es, den Tonemap Controller zu setzen und die Werte im Spiel zu verändern bis ihr zufrieden seid und sie dann zu notieren.
    HDR kann in der Konsole allerdings nicht direkt verändert werden. Vielmehr müsst ihr mit dem ent_fire command arbeiten.
    Dieser hat folgende Formatierung:

    ent_fire <Name des tonemap_controllers> <Befehl> <Wert>
    Wenn ihr euren tonemap_Controller z.B tonemap_global genannt habt würdet ihr folgendes in die Konsole eingeben.

    ent_fire tonemap_global SetBloomScale 3
    ent_fire tonemap_global SetAutoExposureMax 6
    ent_fire tonemap_global SetAutoExposureMin .8
    Damit hättet ihr einen Bloomwert von 3 eine maximale Beleuchtungsstärke von 6 und eine minimale Beleuchtungsstärke von 0.8.
    Hier müsst ihr einfach herumexperimentieren bis euch der HDR Effekt zusagt.

    Nun wozu brauchen wir den trigger_multiple?
    HDR kann im Spiel dynamisch verändert werden. Wenn ihr z.B in einem bestimmten Bereich einen bestimmten HDR Effekt erzielen wollt, könnt ihr den Bereich mit einem trigger brush belegen und diesen den env_tonemap_controller ansteuern lassen. Dies ist aber nur für den Singelplayer geeignet, da ihr mit dieser Methode den HDR Effekt für alle Spieler in allen Bereichen der Map verändert was sehr seltsam aussehen würde.

    Hier noch einige Zusätzliche Befehle die ihr in der Konsole eingeben könnt.
    mat_dynamic_tonemapping 0/1 (Standard 1)
    Aktiviert bzw. deaktiviert den dynamischen HDR Effekt
    mat_autoexposure_max 0-20 (Standard 2)
    Legt den maximalen Beleuchtungswert fest der erreicht werden kann. Mehr als 20 sollte in den meisten Fällen nicht als Wert eingestellt werden.
    mat_autoexposure_min 0-20 (Standard 0.5)
    Legt den minimalen Beleuchtungswert fest der erreicht werden kann. Mehr als 20 sollte in den meisten Fällen nicht als Wert eingestellt werden Standartwerte bewegen sich unter dem Wert von 1.
    mat_hdr_tonemapscale 0-20
    Wird benutzt wenn mat_dynamic_tonemapping auf 0 gesetzt ist. Setzt einen spezifischen Beleuchtungswert fest. Dieser Wert sollte nicht größer als 20 sein.
    mat_disablebloom 0/1 (Standard 1)
    Aktiviert/Deaktiviert den Bloom Effekt
    mat_bloomscale 0-16 (Standard 1)
    Legt die Intensität des Bloom Effekts fest mehr als 16 wird nicht empfohlen
    Im Grunde habt ihr nun alle Werkzeuge die ihr benötigt um euer Level mit HDR auszustatten. Sollte es Kritik, Anregung oder Fragen geben bitte hier posten.

  2. #2
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    25
    Beiträge
    948
    Blog-Einträge
    3
    Renommee-Modifikator
    16
    Sehr schönes Tutorial, gut erklärt. Kann dir leider kein grünes geben.

  3. #3
    Erfahrenes Mitglied Avatar von Ikontflash
    Registriert seit
    20.06.2010
    Ort
    Oldenburg
    Alter
    23
    Beiträge
    769
    Renommee-Modifikator
    9
    Hab es für dich gemacht Dmx6
    Gott soll Himmel und Erde an 7 Tagen erschaffen haben...
    Unmöglich! So schnell mappen kann keiner.

  4. #4
    Mitglied Avatar von Neostorm
    Registriert seit
    21.06.2010
    Beiträge
    54
    Renommee-Modifikator
    7
    Super Tut. hast dir wirklich mühe gegeben und bist ins Detail gegangen. Denke das wird vielen helfen die mit dem Thema am Anfang stehen.

  5. #5
    Mitglied Avatar von damagefilter
    Registriert seit
    11.07.2010
    Ort
    Potsdam
    Beiträge
    363
    Blog-Einträge
    4
    Renommee-Modifikator
    8
    Wunderbar und super aufschlussreich.
    Mehr muss man nicht sagen ^^
    Logic is an amazing thing ...
    for people that have it.

  6. #6
    Mitglied Avatar von novice
    Registriert seit
    18.07.2010
    Beiträge
    313
    Renommee-Modifikator
    8
    Sehr gutes Tut!
    signatur.jpg

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]