Material-Eigenschaften

  • Material-Eigenschaften definieren, wie ein Material aussieht und "sich verhält".

    1 Material-Typ

    Die wichtigste und zuerst einzustellende Material-Eigenschaft ist der Material-Typ. Der Material-Typ legt den grundsätzlichen Charakter des Materials fest. Je nach Materialtyp kann der Render-Aufwand erheblich variieren und ebenso können sich die weiteren Materialeigenschaften erheblich unterscheiden.


    Intern entspricht jeder Material-Typ einem Shader-Satz.


    Momentan verfügt LOTUS über folgende Materialtypen:

    • Simple: Dieses Material lässt sich recht effizient rendern, unterstützt dafür aber nur Transparenz (weich/hart), Glanz (ggf. über den Alphakanal), Schnee und Nachttextur. Damit ist es vor allem für normale Szenerieobjekte geeignet.
    • Direct Texture, no light: Dieses Material rendert NUR eine Textur, ohne jeden Effekt
    • Terrain: Dieses Material ist insbesondere für die Materialien der Boden-Polygone im Map-Editor vorgesehen. Gegenüber Simple verfügt es zwar nicht über Schnee (der wird auf dem Boden anders realisiert) und Nachttextur, dafür aber über eine Detailtextur, die dem Material in naher Distanz eine zusätzliche Struktur gibt.
    • Complex: Dieses Material ist ein universell einsetzbares Material, insbesondere für normale Fahrzeug-Fächen. Neben den Effekten von Simple kann eine Detailtextur und Ambient Occlusion ergänzt werden sowie die Intensität der Nachttextur vorgegeben werden.
    • Complex with normal map: Wie Complex, jedoch zusätzlich mit einer Normalen-Textur und der Möglichkeit von Relief Mapping
    • Raindrops: Spezialmaterial für regennasse Fensterscheiben. Wird im entsprechenden Artikel beschrieben.
    • Human: Wird später für KI-Menschen verwendet. Bitte nicht benutzen.
    • Complex+Normal+Simple Meshanim: Erweiterung von Complex with normal map: Mit diesem Material kann eine einfache Meshanimation realisiert werden. Siehe Mesh-Animationen
    • User Vehicle Windows: Spezialmaterial, welches dringend für die Innenseite der Frontscheibe verwendet werden sollte! Dieses Material wird mit der Grafik-Option "Beleuchtete Frontscheibe" gekoppelt. Hierbei ergibt sich u.U. ein erheblicher Performancegewinn!
    • Roller Blind Display: Spezialmaterial für Rollband-Anzeigen. Siehe Tutorial: Rollbandanzeige .

    2 Auf die Schnelle: Einstellungen für einfache Effekte

    Als Motivation, für den schnelleren Einstieg und gleichzeitig als Beispiel für die einzelnen Parameter, die anschließend detaillierter beschrieben werden, hier einige typische Effekte und die nötigen Einstellungen:

    2.1 Material ohne Transparenz

    • Blendmodus Normales Rendern
    • Min. Alpha = 0

    2.2 Material mit "weicher" Transparenz

    • Standard-Textur muss über entsprechenden Alphakanal verfügen (schwarz = transparent, weiß = keine Transparenz)
    • Blendmodus Alpha-Transparenz
    • Min. Alpha = 0 oder ggf. zur Reduzierung von eventuellen Reihenfolgefehlern 0.1 bis 0.5

    2.3 Material mit "harter" Transparenz

    • Blendmodus Normales Rendern
    • Min. Alpha = 0.5 (0.1 bis 0.9, je nachdem, wie viel "stehenbleiben" soll)

    2.4 Mattes Material

    • Glanz-Faktor = 0
    • Alpha-Wert für Glanz nutzen aus

    2.5 Konstant seidenmattes Material

    • Glanz-Faktor = 0.25
    • Helligkeit des Glanzpunktes = 1
    • Alpha-Wert für Glanz nutzen aus
    • Seidenmattere Charakteristik an

    2.6 Konstant hochglänzendes Material

    • Glanz-Faktor = 1
    • Helligkeit des Glanzpunktes = 1
    • Alpha-Wert für Glanz nutzen aus

    2.7 Material mit variierendem Glanz

    • Standard-Textur muss über entsprechenden Alphakanal verfügen (schwarz = matt, weiß = hochglänzend)
    • Glanz-Faktor = 1
    • Helligkeit des Glanzpunktes = 1
    • Alpha-Wert für Glanz nutzen ein
    • Seidenmattere Charakteristik aus

    2.8 Material mit Nachttextur, die automatisch (global) geschaltet wird

    • Gebäude-Nachtvariable an Variable NightTex koppeln
    • Die vorbereitete Textur bei Nachttextur eintragen
    • Bei Complex oder Complex with normal map: Helligkeit der Nachttextur = 1

    2.9 Material mit Nachttextur, die stets aktiv ist

    • Gebäude-Nachtvariable = 1
    • Die vorbereitete Textur bei Nachttextur eintragen
    • Bei Complex oder Complex with normal map: Helligkeit der Nachttextur = 1

    2.10 Schneetextur mit kompletter Abdeckung

    • Alpha-Wert für Schneemenge nutzen aus
    • Schneetextur = snow.dds (oder ggf. eigene Textur auswählen)

    2.11 Schneetextur mit Abdeckung abhängig vom Untergrund

    • Standard-Textur muss über entsprechenden Alphakanal verfügen (schwarz = kein Schnee, weiß = wird komplett beschneit)
    • Alpha-Wert für Schneemenge nutzen ein

    3 Begriffsklärung Alphakanal

    Für einige Einstellungen ist der Begriff Alphakanal von entscheidender Bedeutung.

    3.1 Allgemein

    Auch wenn landläufig der Alphakanal oft mit Transparenz gleichgesetzt wird, ist dies so nicht unbedingt zutreffend!


    Für die Darstellung einer Textur werden für jeden Pixel lediglich ein Rot-, ein Grün- und ein Blau-Wert benötigt. Für die gesamte Textur spricht man auch von Kanälen. Aus technischen Gründen bietet aber jeder Pixel noch Speicher für einen vierten Wert, der Alpha-Wert getauft wurde. Jede Textur verfügt also über vier Kanäle: Den roten, den grünen, den blauen und den Alphakanal.

    3.2 Textur- und resultierender Alphakanal

    Wenn ein Pixel mit einem bestimmten Material gerendert wird, dann kann man dies als "Rechenaufgabe" verstehen: Hinein gehen diverse Texturinformationen und Parameter und heraus kommt die Farbe und der Alpha-Wert des Pixels.


    Im Folgenden wird daher unterschieden zwischen dem Alphakanal der jeweiligen Textur und dem resultierenden Alphakanal, d.h. dem jeweiligen Alpha-Wert des fertigberechneten Pixels.

    4 Script- und Variablen-Einbindung

    Die meisten Material-Eigenschaften können wahlweise über Konstanten fest eingestellt oder über Variablen gesteuert werden.




    Solche Parameter verfügen nicht nur über ein Eingabefeld für den jeweiligen Wert, sondern dahinter auch über einen Haken und eine Auswahl-Box. Über die Auswahl-Box kann nun eine globale oder vom eingebundenen Script bereitgestellte Variable ausgewählt werden, wodurch automatisch der Haken gesetzt wird.


    In der Folge wird die Variable den Wert dieser Eigenschaft steuern. Wichtig ist aber, dass insbesondere bei Fließkomma-Zahlen der Variablenwert mit der davor stehenden Konstante multipliziert wird! Es sollte also dann vorne "1" eingetragen werden, um den Variablenwert 1:1 zu übernehmen.


    Um die Variablen-Anbindung wieder zu deaktivieren, muss lediglich der Haken wieder entfernt werden.

    5 Material-Einstellungen

    Im Folgenden werden die Material-Eigenschaften im Detail beschrieben. Es werden hierbei die Parameter nach den verschiedenen Effekten gruppiert beschrieben. Im Einstellungsdialogfeld tauchen diese Parameter aber an unterschiedlichen Stellen auf, da sie dort nach ihrem Datentyp sortiert auftreten.

    5.1 Transparenz

    Es gibt vier Möglichkeiten für Transparenz: Hart, weich, additiv und Multiplikation.

    5.1.1 Hart

    Hierbei ist das Material entweder zusehen oder nicht, die Kanten sind also hart und es kann keine Halbtransparenz dargestellt werden. Hierfür muss die Standard-Textur über einen Alphakanal verfügen, wobei 0/schwarz = transparent und 1/weiß = nicht transparent gilt.


    Hierfür muss die Variable Min. Alpha auf 0.5 gesetzt werden. Es können auch andere Werte > 0 oder < 1 gesetzt werden, dementsprechend verschiebt sich die "Schneidgrenze".

    5.1.2 Weich

    Hierbei ist der Übergang zwischen nicht transparent, halbtransparent und ganz transparent fließend. Nachteil ist allerdings, dass die Zeichen-Reihenfolge eine ganz entscheidende Rolle spielt und der Effekt somit zu Problemen führen kann: Bisweilen sind Objekte hinter der transparenten Fläche nicht sichtbar und es entwickelt sich ein "Röntgenblick". Es ist daher, wenn möglich, die "harte" Transparenz zu wählen; allerdings ist die weiche Transparenz bei halbtransparenten Objekten wie Glasscheiben unumgänglich.


    Es gibt zwei Möglichkeiten: Entweder konstant halbtransparent - dafür wird kein Alphakanal benötigt. Hierfür wird der Blendmous auf Halbtransparent gestellt.


    Oder der Alphakanal steuert die Transparenz: Hierfür muss die Standard-Textur natürlich über einen Alphakanal verfügen, wobei 0/schwarz = transparent und 1/weiß = nicht transparent gilt. Außerdem muss der Blendmodus auf Alpha-Transparenz eingestellt werden.


    Insbesondere in diesem Fall gibt es noch den speziellen Faktor über den Alpha-Kanal, mit welchem die Transparenz zusätzlich manipuliert werden kann. Wird hier beispielsweise eine Script-Variable verknüpft, dann kann das Script die Transparenz steuern, indem es die Variable zwischen 0 und 1 einstellt.

    5.1.3 Additiv

    Diese Form der Transparenz nutzt keinen Alphakanal, sondern die eigentliche Farbe der zu zeichnenden Fläche, wobei diese den Hintergrund aufhellt. Je heller die Farbe ist, desto stärker wird der Hintergrund aufgehellt - ist die Flächenfarbe schwarz, passiert nichts. Hierfür wird der Blendmodus auf Additives Rendern oder Echte Addition gestellt, wobei Additives Rendern etwas korrigiert wird, damit es natürlicher wirkt, Echte Addition aber mathematisch exakt durchgeführt wird.

    5.1.4 Multiplikatives Rendern

    Dieser Blend-Modus wirkt wie ein (Farb)-Filter. Hiermit kann man z.B. eine getönte Scheibe realisieren, wobei der Farbwert des Materials der Tönungsfarbe entspricht.

    5.1.5 Mit zunehmender Entfernung ausblenden

    Sofern der Materialtyp "Complex with Normal Map" gewählt und vom Alphakanal gesteuerte, weiche Transparenz aktiviert wird, ist es möglich, das Mesh mit zunehmender Entfernung allmählich transparenter werden zu lassen, bis es schließlich vollständig unsichtbar ist. Hierzu muss der Wert von "Mit zunehmender Entfernung ausblenden" auf einen Wert größer 0 und üblicherweise kleiner als 1 gestellt werden. Je kleiner der Wert, desto weiter ist das Objekt sichtbar. Während sich dieser Bereich bei einem Wert von "1" nur in der Größenordnung eines Meters bewegt, steigt er bei "0,1" auf 10m und bei "0,01" auf 100m.

    5.2 Glanz

    5.2.1 Beleuchtung und Glanzpunkt

    Der eine Teil des Glanzes ist die Frage, wie das Objekt auf die Beleuchtung der umliegenden Lichtquellen reagiert. Objekte können matt, seidenglänzend oder hochglänzend (oder eine beliebige Charakteristik darzwischen) dargestellt werden und der Glanzfleck kann heller oder dunkler sein.


    Zunächst ist zu unterscheiden, ob der Alphakanal der Standardtextur für den Glanz zuständig sein soll oder die Parameter konstant sein sollen. Je nachdem ist die Option Alpha-Wert für Glanz nutzen ein- oder auszuschalten.


    Gesteuert wird der Glanz über die Parameter Glanz-Faktor und Helligkeit des Glanzpunktes. Bei konstantem Glanz kann mit Glanz-Faktor eingestellt werden, ob das Objekt matt (0), seidenmatt (0.1 oder 0.25, s.u.) oder hochglänzend (1) dargestellt werden soll.


    Wenn der Alphakanal aktiviert ist, dann wird dieser mit dem Parameter Glanz-Faktor multipliziert, sodass dieser den Maximalwert darstellt. Demzufolge sollte bei aktiviertem Alphakanal der Wert Glanz-Faktor normalerweise den Wert 1 haben.


    Helligkeit des Glanzpunktes sollte normalerweise auf 1 eingestellt sein; mit ihm kann bei Bedarf der Glanzeffekt heller oder dunkler eingestellt werden.


    Wichtig ist außerdem der Haken Seidenmattere Charakteristik: Für Objekte, bei denen der Alpha-Kanal vor allem dafür verwendet wird, hochglänzende und matte Oberflächen zu unterscheiden, wie z.B. bei Gebäuden, sollte der Haken aus sein. Die Zuordnung Alphawert ==> Glanz ist dann dafür optimiert, den Übergang Hochglanz/Matt mit möglichst wenig Fehlern darzustellen.


    Wenn es jedoch darum geht, mit dem Alpha-Wert (oder auch ohne Verwendung des Alphakanals) eine Vielzahl verschiedener Glanzstärken zu erzeugen, dann empfiehlt es sich, den Haken Seidenmattere Charakteristik anzuschalten, da dann eine bessere Steuerung möglich ist.


    Hier einige exemplarische Glanz-Faktoren mit eingeschaltetem Haken Seidenmattere Charakteristik mit den jeweiligen Ergebnissen, angewendet auf eine graue Test-Kugel:



    5.2.2 Reflexionstextur

    Ein technisch völlig anderer Effekt sind Reflexionstexturen. Reflexionstexturen sorgen für eine scheinbar mehr oder weniger spiegelnde Oberfläche, in dem sie die Umgebung des Objektes wiedergeben. Diese kann entweder eine von LOTUS selbst in Echtzeit generierte Abbildung der Umgebung sein ("Echtzeitreflexionen") oder über eine konstante Textur, die im Vorfeld bereits erzeugt wurde.


    Gesteuert wird die Reflexion über den Blend-Faktor der Reflexionstextur. Dieser gibt an, wie stark die Reflexionstextur sichtbar sein soll. Zusätzlich sorgt die bereits bekannte Option Alpha-Wert für Glanz nutzen dafür, dass der Blend-Faktor zusätzlich mit dem Alphakanal multipliziert wird.


    Natürlich muss eine Reflexionstextur ausgewählt werden. Standardmäßig liefert LOTUS die beiden Texturen sharp_envir.bmp und smooth_envir.bmp mit. Es können aber wahlweise auch eigene Texturen verwendet werden - es muss sich dann aber um eine sogenannte Cube Map handeln (https://en.wikipedia.org/wiki/Cube_mapping). LOTUS bietet die Möglichkeit, Cube Maps auch als Screenshot herzustellen; dies führt an dieser Stelle aber zu weit.


    Die Besonderheit bei sharp_envir.bmp und smooth_envir.bmp ist, dass sie automatisch ausgetauscht werden, wenn der User die Grafikoption für Echtzeitreflexionen einschaltet. Der Unterschied zwischen den beiden ist, dass die eine die Umwelt scharf wiedergibt (für verchromte/verspiegelte Oberflächen oder Glas) oder unscharf wiedergibt (für normales Metall usw.).


    Wichtig: Die Reflexionstextur kann zwar mit der besagten Option abhängig vom Alphakanal eingestellt werden, ist aber immer unabhängig von Glanz-Faktor und Helligkeit des Glanzpunktes!

    5.3 Nachttextur

    Die Nachttextur wird über die Standardtextur (additiv) gelegt und ist immer "hell", d.h. unabhängig von Sonnenstand und sonstiger Beleuchtung des Objektes. D.h. sie "leuchtet".


    Die Textur selbst kann bei Nachttextur ausgewählt werden.


    Im Normalfall wird die Nachttextur einfach zur normalen Textur hinzugefügt. Es ist aber alternativ möglich, dass die Nachttextur keine "eigene" Struktur besitzt, sondern nur die normale Textur "aufhellt", d.h. mit ihr multipliziert wird. Hier muss die Option Nachttextur mit normaler Textur multiplizieren eingeschaltet werden.

    5.3.1 Automatischer Modus / Gebäude-Nachttextur

    Um den "Automatikbetrieb" zu aktivieren, muss für die Option Gebäude-Nachtvariable die Variable "NightTex" ausgewählt werden. Um die Nachttextur dauerhaft zu aktivieren, wird hier lediglich 1 eingestellt. Für den Automatikbetrieb kann die Nachttextur ihrerseits ebenfalls über einen Alphakanal verfügen, welcher dann steuert, welche Bereiche wann aktiviert werden sollen. Details hierzu werden hier (fehlt!) erläutert.

    Manueller Modus / Script-gesteuert

    Wahlweise kann die Nachttextur auch direkt über das Script gesteuert werden. Hierfür wird bei Gebäude-Nachtvariable 0 eingestellt und darauf geachtet, dass keine Variable eingetragen ist. Dann kann die Textur direkt über den Wert Helligkeit der Nachttextur gesteuert werden.


    Wenn die Nachttextur manuell gesteuert wird, dann sollte sie auch nicht über einen Alphakanal verfügen.

    5.4 Translumination

    Hiermit ist gemeint, dass das Licht durch Objekte durchscheinen kann. Typisches Beispiel sind die Blätter eines Baumes; wenn man einen Baum im Gegenlicht betrachtet, dann sieht man, dass die Blätter hell strahlen, weil die Sonne von der gegenüberliegenden Seite aus durchscheint.


    Die Transluminationstextur wird unter Nachttextur eingetragen, dazu aber die Option Translumination eingeschaltet.

    5.5 Schneetextur

    LOTUS verfügt über einen automatischen Schnee-Effekt. Hierzu wird eine beliebige Schnee-Textur, für die jedoch im Normalfall die "snow.dds" verwendet werden sollte, von oben senkrecht auf das Objekt projeziert. Die Sichtbarkeit variiert abhängig von der gefallenen Schneemenge und dem Neigungswinkel der jeweiligen Fläche, sodass also steile Dachflächen automatisch weit weniger Schnee abbekommen als Flachdächer.


    Eingestellt wird die Schnee-Textur im gleichnamigen Parameter.


    Bei besonders strukturierten Flächen, wie z.B. Dachziegeln, kann zusätzlich der Alphakanal hinzugezogen werden, um die Intensität zu beeinflussen; in der Folge lässt sich auch die ursprüngliche Struktur trotz Schnee erkennen. Hierfür muss lediglich der Haken bei Alpha-Wert für Schneemenge nutzen gesetzt werden.

    5.6 Detail-Textur (nur Terrain, Complex, Complex with normal map, Complex+Normal+Simple Meshanim und Roller Blind Display)

    Damit Flächen sowohl bei ferner als auch naher Betrachtung über einen ausreichenden Detailgrad verfügen, ist es möglich, die "großflächige" Standardtextur mit einer "kleinräumigen" Detail-Textur zu versehen, die eingemischt wird. Bei naher Betrachtung dominiert also die Detail-Textur die Struktur, bei entfernter Betrachtung die Standardtextur.


    Die Detail-Textur kann über den gleichnamigen Parameter aktiviert werden. Um welchen Faktor die Detail-Textur kleiner ist, steuert der Parameter Skalierung der Detailtextur.


    Die Arbeitsweise unterscheidet sich je nachdem, ob der Haken "Alpha-gesteuerte Detailtextur" gesetzt wird, oder nicht.


    Falls er nicht gesetzt ist, dann wird die Mischung so vorgenommen, wie es für die Bodenpolygone empfehlenswert ist. Siehe auch Detailtexturen.


    Falls er gesetzt ist, dann muss der Alphakanal der Standard-Textur vorhanden sein und dieser wird ausschließlich für das Mischungsverhältnis genutzt: 0/Schwarz = keine Detailtextur, Standardtextur dominiert, 1/Weiß = nur Detailtextur, Standardtextur unsichtbar. Hinzu kommt noch eine Spezialität: Zwar wird der Alpha-Kanal der Standard-Textur so gemappt, wie die Textur im 3D-Programm ursprünglich gemappt wurde, jedoch werden die Farben der Standard-Textur selbst so gemappt, wie die Detailtextur!


    Genau genommen werden also eigentlich zwei Detailtexturen gegeneinander abgemischt, abgemischt über den "normal" gemappten Alphakanal.

    5.7 Ambient Occlusion (nur Complex, Complex with normal map, Complex+Normal+Simple Meshanim und Roller Blind Display)

    Ambient Occlusion ist eine Technik, bei der die weichen Schatten, die sich infolge der indirekten Umgebungsbeleuchtung ergeben, vorberechnet und in eine separate Textur gespeichert werden. Der Hintergrund ist der sehr hohe Rechenaufwand, der heutzutage eine Echtzeitberechnung nicht erlaubt und die Tatsache, dass die Umgebungsbeleuchtung näherungsweise konstant ist.


    Es gibt drei Möglichkeiten, wie Ambient Occlusion (kurz AO) in LOTUS realisiert werden kann:

    • Pro Mesh-Eckpunkt: Hierbei werden die Helligkeitsinformationen in den einzelnen Eckpunkten des Meshs gespeichert. Dies kann direkt im ContentTool durchgeführt werden. Hierzu das Mesh auswählen, links auf Ausgewähltes Mesh klicken, ganz unten im Abschnitt Per-Vertex-Ambient Occlusion die Qualität einstellen und auf Generieren klicken.
      In den Materialeigenschaften ist dann der Haken AO-Textur aktivieren nicht gesetzt.
    • Mit einer AO-Textur, die genauso gemappt wird, wie die Haupttextur: Hierzu werden in den Material-Eigenschaften die Haken AO-Textur aktivieren und AO verwendet das originale Mapping gesetzt und es wird bei Ambien Occlusion (AO) Textur die entsprechend angefertigte AO-Textur eingestellt
    • Mit einer AO-Textur, die mit abweichenden Texturkoordinaten gemappt werden soll: Hierzu wird in den Material-Eigenschaften der Haken AO-Textur aktivieren gesetzt und der Haken AO verwendet das originale Mapping nicht gesetzt und es wird bei Ambien Occlusion (AO) Textur die entsprechend angefertigte AO-Textur eingestellt. Außerdem muss das importierte Mesh über sekundäre Texturkoordinaten verfügen (s.u.).

    In allen Fällen kann die Intensität der AO mit dem Parameter Intensität der AO-Textur justiert werden.


    Siehe hierzu bitte auch den Hauptartikel: Ambient Occlusion einrichten


    Normalen-Textur (nur Complex with normal map und Complex+Normal+Simple Meshanim)

    Die Lage einer Fläche im Raum wird u.A. über die sogenannte Normale beschrieben. Hierbei handelt es sich um eine gedachte Linie (Vektor), die senkrecht auf der Fläche steht. Sie beeinflusst insbesondere, wie die Berechnung des Lichteinfalls und des Glanzes erfolgt.


    Mittels einer Normalen-Textur lässt sich nun diese Information mittels einer eigenen Textur beeinflussen. Hierdurch können beispielsweise feine Strukturen wie Nieten oder Beulen im Material simuliert werden, die das Licht anders reflektieren als ihre Umgebung. Landläufig wird auch von einer Bump-Map gesprochen, was aber insofern nicht korrekt ist, weil eine Bump-Map eine andere Information enthält als eine Normalen-Textur (lokaler Höhenunterschied statt Flächennormale).


    Im Dialogfeld muss hierfür lediglich der Materialtyp und unter "Normal-Textur" eine Textur ausgewählt werden. Allerdings müssen die betroffenen Meshs auch mit zusätzlichen Tangenten-Informationen versehen werden - siehe hierzu die allgemeine Beschreibung des Object & Vehicle Tools. (fehlt!)


    Die Intensität der Normalen-Textur lässt sich mit dem Faktor Intensität der Normal-Textur justieren.

    5.8 Parallax Mapping

    Hierbei handelt es sich um ein Verfahren, bei dem dem Betrachter eine räumliche Tiefe nicht nur durch die Beeinflussung der Normalen vorgegaukelt wird, sondern bei dem bei schräger Betrachtung tatsächlich einen vertikalen Versatz der Struktur erkennen kann, wie im folgenden Beispiel erkennbar:



    Die Konfiguration des Materials erfolgt zunächst wie bei einer Normalen-Textur. Zusätzlich benötigt der Effekt eine Normalen-Textur mit einem Alphakanal, der die Höheninformationen enthält. Die zum Beispiel zugehörige Normal-Map enthält folgenden Alpha-Kanal:



    Ersichtlich ist, dass die tieferliegenden Bereiche dunkler sind als die höherliegenden. Sind Bereiche reinweiß, dann befinden sie sich in der eigentlichen Polygon-Ebene, es sieht also so aus, als wäre das Parallax Mapping deaktiviert.


    Zu beachten sind folgende Dinge:

    • Auch hier müssen die Tangenten-Informationen hinzugefügt werden (siehe Abschnitt Normalen-Textur).
    • Tieferliegende Bereiche benötigen mehr Performance als höherliegende. Die Bereiche, die reinweiß sind, benötigen gegenüber Normal Mapping (fast) keinen höheren Rechenaufwand.
    • Da die Tiefe nur simuliert wird, das Polygon aber weiterhin an derselben Stelle liegt, entstehen z.T. erhebliche Darstellungsfehler, wenn der Alphakanal an den Rändern nicht weiß ist. Im gezeigten Beispiel werden tieferliegende Fenster "modelliert", was grundsätzlich fehlerfrei möglich ist. Erhabene Strukturen dagegen erfordern, dass die "Grundfarbe" nicht mehr weiß ist, sondern ein Grauton. Damit werden die Ränder aber gemäß der genannten Regel unsauber und bei zunehmend schrägem Betrachtungswinkel extrem fehlerhaft.
    • Es kann bei bestimmten Polygon-Textur-Mapping-Konstellationen zu erheblichen Problemen kommen. Ein Beispiel:



      Hier treffen zwei Polygone aufeinander, die mit demselben Texturbereich gemappt wurden, wobei dieser gespiegelt wurde. Auf diese Weise greifen die Polygone in der Mitte auf exakt denselben Eckpunkt zu (sowohl Position als auch Texturkoordinate sind identisch). Durch das Spiegeln benötigen die Polygone jedoch unterschiedliche Tangenten-Informationen. Es kommt beim Berechnen der Tangenten somit zu groben Fehlern, was sich natürlich auf die Darstellung auswirkt. Die Lösung besteht darin, das Mapping von einem der Polygone ein kleines bisschen zu ändern, sodass es an den betroffenen Punkten nicht mehr komplett identisch ist. Dann erhält jedes Polygon seinen "eigenen" Punkt und das Berechnungsproblem tritt nicht mehr auf.
    • Je "steiler" die Übergänge sind, d.h. je scharfkantiger der Alphakanal ist, desto unsauberer wird die Darstellung. Exemplarisch habe ich das kreisförmige Fenster über dem Portal ganz scharf konstruiert - die Konsequenz ist sehr gut im Screenshot sichtbar: Einerseits entsteht ein nahezu 1-Pixel-Mapping, andererseits sieht es schnell so aus, als wäre der Ausschnitt "scheibchenweise" ausgefräst! ;)

    Empfehlung: Wenn es sich um Texturen handelt, die vor allem durch sehr weiche Übergänge charakterisiert werden, sollte erwogen werden, auf die Parallax Occlusion zu verzichten, indem der Alphakanal komplett weiß gelassen wird, damit es nicht zu Stufen kommen kann! Ein Beispiel wäre die Beblechung von Fahrzeugen, die mit einer Normal-Map leicht "wabbelig" gezeichnet werden soll. Hier ist Parallax Occlusion unangebracht.


    Die Tiefe wird ebenfalls wie die Normalen-Textur über den Parameter Intensität der Normal-Textur gesteuert.

    5.9 Manipulation des Z-Buffers

    Als Z-Buffer wird eine Information bezeichnet, die darüber Auskunft gibt, wie weit ein bestimmter Pixel des fertigen Bildes vom Betrachter entfernt ist. Diese Information wird insbesondere beim weiteren Zeichnen des Bildes genutzt, um zu entscheiden, ob der neue Pixel gezeichnet werden soll (wenn er "vor" dem bisher gezeichneten Bild liegt) oder nicht (wenn er "hinter" dem bisher gezeichneten Bild liegt).


    Für spezielle Einsätze kann die Verarbeitung des Z-Buffers manipuliert werden:

    • Verschiebung Richtung Betrachter tut so, als sei der zu zeichnende Pixel dichter am Betrachter als er es tatsächlich ist. Typischer Anwendungsfall ist bspw. ein auf ein zuvor gezeichnetes Polygon aufgebrachtes Label. Die sog. Z-Prüfung steht dann "auf Messers Schneide" und kommt zufällig zu unterschiedlichen Ergebnissen - es kommt zum typischen Flimmern. Der Verschiebungsparameter sorgt nun dafür, dass die neuen Pixel "angeblich" dichter am Betrachter liegen und die Prüfung somit in allen Fällen positiv erfolgt.
    • Wenn Tiefen-Buffer schreiben deaktiviert wird, dann sorgt diese Einstellung dafür, dass der neu zu zeichnende Pixel im Z-Buffer "unsichtbar" bleibt. Alles, was danach gezeichnet wird, berücksichtigt dieses Polygon nicht. Auch hier ist das Beispiel des Labels passend: Durch die Verschiebung Richtung Betrachter würde der falsche Wert normalweise in den Z-Buffer geschrieben werden. Da der richtige Wert aber zuvor schon vorhanden war (weshalb die Verschiebung ja überhaupt nötig geworden ist), kann auf das Schreiben der Offset-Z-Daten verzichtet werden, da sie nur zu Fehlinformationen führen würden.

    6 Spezielle Texturkoordinaten

    6.1 Anlegen sekundärer Texturkoordinaten

    Sekundäre Texturkoordinaten müssen angelegt werden, wenn das Material mit einer AO-Textur mit separatem Mapping oder Meshanimationen enthalten soll (siehe Meshanimationen).


    Es wird zunächst eine Kopie des zu animierenden 3D-Objektes angelegt. Dieses erhält den Namen des Originalobjektes und zusätzlich den Präfix "@2m_". Heißt das Originalobjekt also "Objekt", dann heißt die Kopie "@2m_Objekt".


    Diese Kopie muss künftig in JEDEM Export des Originalobjektes mit exportiert werden und muss - nach Änderungen am Originalobjektes - diesem von der Form her wieder genau angeglichen werden, idealerweise muss eine neue Kopie angelegt werden. Kleinste Abweichungen der Vertex-Daten (Position, Normale usw.) sind ok, aber mehr wird nicht toleriert.


    Die Technik ist nun die Folgende: Beim Import von Original-Objekt und @2m_-Kopie in das ContentTool werden nun die Texturkoordinaten der Kopie in das Originalobjekt übernommen und als zweiten Satz Texturkoordinaten gespeichert.

    6.2 Globale Texturkoordinaten

    Es gibt Fälle, in denen sich Splines überlappen können sollen, nicht jedoch flimmern ("Z-Fighting") dürfen. Klassischer Fall ist die Schotterbettung: Im Weichenbereich nähern sich die zwei Schotterbettungen der beiden Gleise immer weiter, beginnen sich dann zu überlappen und tun dies an der Weichenspitze exakt, bis das nun folgende, eine Gleis wieder eine einzelne Schotterbettung generiert. Da sich die Textur einerseits ohnehin gleichmäßig mappen lässt und es sogar von Vorteil ist, wenn die Wiederholungen der Textur nicht unbedingt dem genauen Gleisverlauf folgt, wurde die Möglichkeit eingerichtet, diese Textur global im Koordinatensystem der Kachel zu mappen. Während die Spline im ContentTool und während des Verlegens im Map-Editor noch "ursprünglich" gemappt wurde, werden die Koordinaten beim "Backen" der Kachelmeshs automatisch umgerechnet. Sich überlappende Splines werden dadurch dann – global betrachtet – exakt identisch gemappt und können nicht mehr gegenseitig flimmern.


    Um diese Funktion zu aktivieren, kann nach Auswählen des betreffenden Meshs im ContentTool im Abschnitt "Ausgewähltes Mesh" der Parameter Glob. Tex-Gr. auf einen Wert größer 0 eingestellt werden. Dieser Wert beeinflusst dann die Mapping-Größe der Textur relativ zur Kachel, d.h. wie oft die Textur in x- und y-Richtung auf die Kachel passt.