In diesem Tutorial tauchst du tiefer in die Materialien und Material-Instanzen ein. Du lernst Material-Werkzeugsätze und Techniken kennen, die dir dabei helfen können, künstlerische Entscheidungen zu treffen, die Gentwicklungsgeschwindigkeit zu erhöhen und den Overhead in deinem Projekt zu kontrollieren. Später wirst du Materialien auf Spiel-Assets anwenden und Blueprints benutzen, um Materialien basierend auf Spieleractions in deinem Level zu steuern.
Bevor du anfängst
Dieses Modul erfordert helle Beleuchtung. Wenn du in deinem Level laut vorherigem Tutorial die Beleuchtung reduziert hast, verwende die folgenden Einstellungen:
Direktionale Lichtintensität | 6.0 |
Min EV100 | Nein |
Max EV100 | Nein |
Materialien und Material-Instanzen
Materialien definieren die Oberflächeneigenschaften von Assets in deinem Spiel. Ebenso wie Texturen sind Materialien wie Geschenkpapier, das ein Mesh umhüllt und verändert, wie dessen Oberfläche aussieht und auf Lichtquellen reagiert.
Im Gegensatz zu Texturen können Materialien durch knotenbasierten Workflow nicht-destruktiv angepasst werden. Zum Beispiel enthalten Materialien voreingestellte Eigenschaften , die Attribute von realen Substanzen wie Stein oder Metall nachahmen. Der einzige Unterschied zwischen den Materialien im Bild unten sind ihre Eigenschaften metallisch und Rauheit.
Materialien können Texturen und Logik kombinieren, um Schicht für Schicht komplexe Stoffe zu erzeugen. Durch diese Kombinationen kannst du künstlerische Entscheidungen treffen, die das Welt-Erstellung in deinem Projekt beeinflussen. Das kann so einfach sein wie das Hinzufügen von Kratzern zu metallischen Spielobjekten oder so komplex wie Wasser, das über Sand fließt.
Neben künstlerischen Entscheidungen können Materialien auch deinen Entwicklungsprozess optimieren. Zum Beispiel erzeugen Materialien sogenannte Child-Dateitypen, die Material-Instanzen genannt werden. Eine Material-Instanz ist eine Kopie, die Eigenschaften von ihrem Parent-Material erbt. Instanzen können diese Vererbungen nicht-destruktiv überschreiben, um ihre eigenen einzigartigen Eigenschaften zu enthalten.
In einer Entwicklungsumgebung kannst du Parent-Materialien und Material-Instanzen verwenden, um:
Erhalte sofortiges visuelles Feedback: Änderungen an Instanzen sind sofort in allen Viewports sichtbar, ohne den Shader des Parent-Materials neu kompilieren zu müssen.
Leistung verbessern: Instanzen verwenden denselben Shader-Code wie ihr Parent-Element, was die Gesamtanzahl der zu kompilierenden Shader verringern und den Shader-Wechsel zur Laufzeit reduzieren kann.
Optimierter Workflow: Instanzen reduzieren die Komplexität, indem sie nur relevante Eigenschaften für künstlerische Teams anzeigen.
Mit Blueprints interagieren: Da Materialien und ihre Child-Instanzen Logik verwenden, können Materialeigenschaften extern durch Blueprints gesteuert werden.
Tipps:
Materialien sind nicht auf Meshes beschränkt. Sie können für die Benutzeroberfläche, Nachbearbeitung, Beleuchtung und mehr eingesetzt werden.
Materialien sind keine Shader; sie sind ein Interface, das knotenbasierte Ausdrücke im Hintergrund in High-Level Shader-Sprache (HLSL) konvertiert, um das finale Aussehen eines Assets zu berechnen.
Ein Shader-Wechsel tritt auf, wenn die Unreal Engine den relevanten Shader für das Asset auswählt, das sie zeichnet. Häufiger Shader-Wechsel kann während der Laufzeit zu Ruckeln führen.
Machen wir uns mit den Werkzeugen und Interfaces vertraut, die du in diesem Tutorial verwenden wirst.
Die Anatomie eines Materials
Um die Material-Werkzeugsätze besser zu verstehen, öffnen wir ein bestehendes Material. Im Inhaltsbrowser navigiere zum folgenden Pfad:
Alle > Content > LevelPrototyping > Materialien
Suchr im Materialien -Ordner nach M_FlatCol.
Beachte die Benennungskonvention für dieses Material: Es verwendet das Präfix M_. Das ist eine in der Unreal Engine geläufige Benennungskonvention, die Materialien von anderen Dateien unterscheidet. Das genaue Präfix ist dir selbst überlassen, aber teamweite Benennungskonventionen können Missverständnisse vermeiden, wenn Teams mit Hunderten von Assets arbeiten.
Doppelklicke auf M_FlatCol. Es öffnet sich das Fenster des Material-Editors. Für dieses Tutorial sind die wichtigsten Tabs im Editor das Vorschaufenster, das Materialdiagramm und das Detailfenster .
| Nummer | Registerkartenname | Beschreibung |
|---|---|---|
1 | Vorschaufenster | Zeigt ein Beispiel des Materials in Echtzeit, das du bearbeitest. Enthält Optionen zum Ändern der Beleuchtung, des Ansichtsmodus und der Mesh-Vorschau. |
2 | Materialdiagramm | Materialien werden durch die Kombination von Knoten (sogenannte Ausdrücke) in diesem knotenbasierten Diagramm erstellt. Standardmäßig verfügen Materialien über einen Knoten im Diagramm, der Basismaterialknoten oder Materialstammknoten genannt wird. Anstatt eine Textur-Map zu verwenden, verwendet |
3 | Details-Panel | Ein Eigenschaftsfenster für alle ausgewählten Materialausdrücke. Wenn keine Knoten ausgewählt sind, werden die Basiseigenschaften des Materials angezeigt. Die Basiseigenschaften Material-Domain, Überblendmodus und Schattierungsmodell beeinflussen, welche Eigenschaften auf dem Materialstammknoten im Diagramm erscheinen. |
Versuche, die Basisfarbe des Materials wie folgt zu ändern:
Doppelklicke im Materialdiagramm auf den Basisfarbe-Knoten.
Gib im Farbwähler den HEX sRGB
FFBC00FFein und klicke auf OK.Speichere das Material, indem du auf Speichern, Datei > Speichern oder Strg + S klickst.
Wenn Assets in deinem Projekt M_FlatCol verwenden, bemerkst du möglicherweise eine Änderung in deinem Level.
Navigiere zurück zum Inhaltsbrowser und finde MI_DefaultColorway. Dies ist eine Material-Instanz, die M_FlatCol als ihr Parent-Material verwendet.
Doppelklicke darauf, um den Material-Instanz-Editor zu öffnen.
Im Gegensatz zum Material-Editor erlaubt der Material-Instanz-Editor keine Anpassungen. Beachte im Details Panel, dass M_FlatCol unter der Überschrift Parent angezeigt wird. Da Parent-Materialien Eigenschaften an ihre Children weitergeben, sollte die Basisfarbe dieser Instanz gelb sein – schau dir jedoch das Vorschau-Fenster an. Das Sample-Mesh ist noch grau.
Dies liegt daran, dass die Eigenschaft Basisfarbe in M_FlatCol offengelegt (also bearbeitbar) ist und aktuell von einer grauen Farbe überschrieben wird. Instanzen können ihre eigenen einzigartigen Eigenschaften behalten, indem sie exponierte Parent-Eigenschaften überschreiben.
Lass uns zwei unterschiedliche Experimente machen:
Entfernen des Überschreibens.
Anwendung der Überschreibung zur Änderung der Basisfarbe dieser Instanz.
Um mitzumachen, geh wie folgt vor:
Ideaktiviere im Details-Panel unter Oberflächeneigenschaften die Option Basisfarbe. Dies entfernt das Überschreiben. Im Vorschaufenster sollte das Beispiel-Mesh von Grau zu Gelb wechseln.
Um die Überschreibung erneut anzuwenden, aktiviere Basisfarbe. Klicke auf das Farbmuster, um den Farbwähler zu öffnen und eine neue Farbe auszuwählen.
Speichere die Material-Instanz.
Beachte, dass Assets in deinem Level, die diese Instanz verwenden, mit der neuen Basisfarbe aktualisiert werden, aber Assets, die M_FlatCol verwenden, gelb bleiben.
Das liegt daran, dass Materialien hierarchisch aufgebaut sind:
Parent-Materialien können Änderungen an ihre Child-Instanzen weitergeben.
Instanzen können einzigartige offengelegte Eigenschaften enthalten.
Instanzen können Änderungen an ihre eigenen Child-Instanzen propagieren.
Instanzen können Änderungen nicht an Parent-Materialien weitergeben.
Ein effizientes und nützliches Parent-Material fungiert als flexible Grundlage für alle Child-Instanzen und reduziert so das Ausmaß an Kompilieren, Shader-Wechsel und sich wiederholenden Actions in deiner Entwicklungspipeline. Berücksichtige bei der Erstellung eines Parent-Materials, welche Eigenschaften dein Team häufig verwendet und iteriert.
Um die in diesem Abschnitt geänderten Materialien zurückzusetzen, setze die Basisfarbe von M_Flat_Col auf 767676FF und die Basisfarbe von MI_DefaultColorway auf C0C0C0FF.
Für einen tieferen Einblick in die Benutzeroberfläche des Material-Editors, siehe hier: Benutzeroberfläche des Material-Editors.
Ein Parent Material erstellen
In diesem Abschnitt erstellst du ein Parent-Material mit den Eigenschaften Basisfarbe, Metallisch, Normal und Rauheit. Du steuerst diese Eigenschaften mithilfe von Texturen, Ausdrücken und einer Kombination aus beidem.
Um ein neues Material zu erstellen, führe die folgenden Schritte aus:
Klicke im Inhaltsbrowser im Dateipfad Alle > Inhalt> AdventureGame > Künstler > Materialien auf Hinzufügen und wähle Material aus der Liste.
Gib dem Material den Namen
M_Surfaces.Doppelklicke
M_Surfaces, um den Material-Editor zu öffnen.
Als nächstes verwendest du Texturen, um die Eigenschaften innerhalb des Materials zu steuern.
Eigenschaften durch Texturen steuern
Textur-Maps (oder Texturen) sind Bilddateien, die innerhalb eines Materials in Ebenen eingefügt und angepasst werden können, um verschiedene visuelle Ergebnisse zu erzielen.
Texturen sind nützlich für Materialien, die komplexe oder räumlich variierende Details aufweisen, da jedes Pixel einzigartige RGB- und Alpha-Informationen speichert. Zum Beispiel wird bei der Erstellung eines Materials, das zerkratztes Metall imitiert, eine Glanz-Map verwendet, die Alpha-Informationen nutzt, um Bereiche zu bestimmen, die Licht reflektieren sollen, und solche, die es nicht tun.
In diesem Abschnitt wirst du den Ausdruck TextureSample verwenden, um eine Streu-Map und eine Normal-Map auf dein Material anzuwenden.
Eine Streu-Map enthält grundlegende Farb- und visuelle Eigenschaften ohne Beleuchtungsinformationen. Eine Normal-Map imitiert die Oberflächentextur (etwa Beulen oder Risse), ohne dem Mesh Geometrie hinzuzufügen.
Folge diesen Schritten, um Texturkarten hinzuzufügen:
Klicke mit der rechten Maustaste in das Diagramm, suche und wähle dann TextureSample aus. Du kannst auch das Tastenkürzel T + LMB verwenden.
Füge zwei TextureSample-Knoten hinzu und ordne einen unter den anderen an.
Wähle den obersten TextureSample-Knoten aus. Im Details-Panel, unter Materialausdruck-Texturbasis, klicke auf die leere Textur-Dropdown-Liste und suche nach
DefaultDiffuse. Wähle die Streu-Karte aus der Liste aus.Während der obere TextureSample-Knoten noch immer ausgewählt ist, verbinde den RGB-Output mit dem Basisfarbe-Input des Materialstammknotens (
M_Surfaces).Wähle den untersten TextureSample -Knoten aus. Im Details-Panel unter Materialausdruck-Texturbasis klicke auf die Textur-Dropdown-Liste und suche nach
DefaultNormal. Wähle die Normal-Map aus der Liste aus.Während der untere TextureSample-Knoten noch ausgewählt ist, verbinde den RGB-Output mit dem Normal-Input des Materialstammknotens.
Speichere dein Material.
Dein Materialdiagramm sollte nun so aussehen:
Im nächsten Schritt verwendest du Ausdrücke zur Steuerung von Eigenschaften.
Eigenschaften durch Konstanten steuern
In diesem Abschnitt erstellst du ein steinähnliches Material, indem du einen konstanten Ausdruck verwendest, um die Eigenschaften metallisch und Rauheit zu steuern. Die Verwendung von Konstanten zur Steuerung von Eigenschaften ist nützlich für einheitliche, globale Anpassungen.
Konstanten steuern Eigenschaften über einen einzelnen Float-Wert. Zum Beispiel hat metallisch einen Float-Wertbereich von 0 bis 1. 0 imitiert nichtmetallische Oberflächen (wie etwa Plastik) und 1 imitiert metallische Oberflächen (wie Chrom).
In der Unreal Engine werden Reflexionen auf Metallic-Oberflächen durch die Basisfarbe getönt, während Reflexionen auf nicht-metallischen Oberflächen durch Umgebungslichtquellen getönt werden.
Rauheit hat ebenfalls einen Float-Bereich von 0–1. 0 imitiert glatte Oberflächen und 1 imitiert raue Oberflächen. Die Rauheit beeinflusst, wie Licht an einer Oberfläche gestreut wird; glatte Oberflächen haben eine engere, glänzende Reflexion (erscheinen glänzend), raue Oberflächen haben eine Streu-Reflexion (erscheinen matt).
Durch die Verwendung von Konstanten zur Steuerung dieser Eigenschaften kannst du Materialien wie mattes Kunststoff, glänzendes Kunststoff, raues Metall oder glattes Chrom imitieren.
Um dein Steinmaterial zu erstellen, gehe wie folgt vor:
Klicke mit der rechten Maustaste im Materialdiagramm und wähle Konstanteaus der Liste. Alternativ kannst du auch die Tastenkombination 1 + LMT verwenden. Füge zwei Konstanten hinzu.
Ziehe den ersten Constant-Pin ab und verbinde ihn mit dem metallischen Input des Basis-Knotens. Verbinde die zweite Konstante mit dem Rauheit eingang.
Wähle die metallische Konstante aus und stelle sicher, dass ihr Wert
0ist.Wähle die Rauheitskonstante aus und setze ihren Wert auf
1.Speichere dein Material.
Dein Materialdiagramm sollte nun so aussehen:
Im nächsten Abschnitt wirst du mehr über Kacheltexturen in Materialien erfahren.
Skalierung und Kachel-Texturen
Du hast vielleicht bemerkt, dass deine Streu- und Normal-Maps wie Kacheln aussehen. In diesem Abschnitt verwendest du Materialausdrücke, um UVs zu skalieren und einen Steinboden zu erstellen, der sich unendlich in alle Richtungen wiederholen kann. Dies wird als Kachelung bezeichnet.
Kachelung wird oft verwendet, um große Meshes abzudecken, ohne den Overhead zu erhöhen; das Skalieren und Kacheln einer Textur ist weniger kostenintensiv als die Nutzung großer, hochauflösender Texturen, die für bestimmte Meshes einzigartig sind.
Die Zuweisung von Ressourcen beeinflusst oft Entscheidungen, die in der Spieleentwicklung getroffen werden. Durch die Einsparung von Ressourcen in Bereichen, auf die Spieler möglicherweise nicht fokussieren (z. B. bei Bodenbelägen), hat dein Team mehr Ressourcen für hochauflösende, einzigartige oder handgemalte Texturen für Charaktere, Gegenstände oder Geometrie, die in Echtzeit-Filmsequenzen Nahaufnahmen erhalten.
Hier verwendest du den Texturausdruck , um die Kachelung für die Streu- und Normal-Maps zu steuern. Du verwendest außerdem einen neuen Ausdruck namens „Multiplizieren“. Der Multiplizieren-Ausdruck verwendet zwei Inputs und kombiniert sie zu einem Output.
Um eine kachelbare Textur zu erstellen, gehe folgendermaßen vor:
Lege im Vorschaufenster des Materialeditors das Mesh auf eine primitive Ebene fest, um das Material klarer zu sehen.
Du musst möglicherweise die Vorschau-Beleuchtung anpassen, um die Textur besser sehen zu können. Halte L und LMT im Vorschaufenster gedrückt, um die Lichtquelle zu ziehen.
Klicke mit der rechten Maustaste im Materialdiagramm und füge einen Textur-Koordinaten-Knoten aus der Liste hinzu.
Ziehe den Output des Textur-Koordinaten-Knotens, suche nach einem Multiplizieren-Knoten und erstelle diesen.
Ziehe den B-Input des Multiplizieren-Knotens ab und erstelle eine Konstante.
Setze den Float-Wert der Konstante auf
1.Ziehe den Output des Multiplizieren-Knotens und verbinde ihn mit dem UVs-Input der Streu- und Normal-Textur-Sample-Knoten.
Dein Kachelungsmaterial ist fertig. Machen wir zwei Experimente mit Fliesen; Skalierung mit ganzen Zahlen und Skalierung mit Brüchen.
Wähle im Materialdiagramm die Konstante aus, die die Texturkoordinate steuert.
Setze den Wert auf
2.
Da die Streu- und Normal-Maps im nativen Maßstab (1,0) ein 5x5-Raster bilden, ergibt eine Skalierung um 2 ein 10x10-Raster. Wenn du genau hinsiehst, kannst du erkennen, wo sich die Unregelmäßigkeiten der Textur wiederholen.
Setze den Wert auf 0,5. Beachte, dass die Textur nicht korrekt kachelt. Wenn die Streu-Map ein 6x6-Raster wäre, würde eine Skalierung auf 0,5 nicht abgeschnitten werden. Es ist wichtig, bei der Erstellung von Karten zu beachten, wie eine Textur in der Unreal Engine skaliert wird.
Die UVs eines Meshs können sich auch auf die Kachelung einer Textur auswirken; gestreckte UVs können zu unerwünschter Texturdehnung führen. Du wirst später in diesem Tutorial mehr darüber erfahren und in dieser Reihe eine Lösung finden.
Materialdiagramm-Housekeeping
Lassen wir uns eine Pause machen und über die Organisation nachdenken. Je komplexer dein Materialdiagramm wird, desto nützlicher kann es sein, Knoten zu organisieren und die Logik für ein Entwicklerteam transparent zu machen – oder dich selbst während der Entwicklung daran zu erinnern. Um organisiert zu bleiben, kannst du visuelle Abgrenzungen und Überschriften innerhalb des Diagramms erstellen, indem du Kommentarboxen verwendest.
Befolge diese Schritte, um ein Kommentarfeld zu erstellen:
Wähle die Texturkoordinaten und Multiplizieren-Knoten aus. Drücke die Tastenkombination Q, um sie horizontal auszurichten.
Wähle die Textur-Koordinate, Multiplizieren und Konstante aus und drücke zum Kommentieren die Tastaturkürzel C.
Umbenennen die Box in der
UV-Kachelungum.Speichere dein Material.
Doppelklicke auf die weißen Verbindungssplines, um einen Haltepunkt zu setzen. Drücke Q, um Ausdrücke oder Breakpoints horizontal auszurichten.
Dein Materialdiagramm sollte nun so aussehen:
Eigenschaften durch Constant3Vectors steuern
Jetzt, da du mit Konstanten vertraut bist, kannst du den Constant3Vector verwenden. Constant3Vectors können wie eine Vektor-Variable drei Float-Werte anstatt eines enthalten. Dies ist nützlich, um XYZ-Koordinaten oder RGB-Informationen anzupassen.
In diesem Abschnitt verwendest du einen Constant3Vector, um eine RGB-Farbe festzulegen. Du nutzt einen Multiplizieren-Knoten, um die Farbe mit deiner Streu-Map zu kombinieren und ihren Farbton nicht-destruktiv zu ändern.
Um den Farbton deiner Streu-Map zu ändern, folge diesen Schritten:
Ziehe im Materialdiagramm den RGB-Output des Streu-Texture-Sample -Knotens und erstelle einen Multiplizieren-Knoten aus dem Menü.
Ziehe den Multiplizieren-Knoten-Outputab und verbinde ihn mit dem Basisfarbe-Input des Materialstammknotens.
Ziehe den B-Output des Multiplizieren-Knotens und erstelle einen Constant3Vector-Knoten.
Doppelklicke in die Box des Constant3Vector-Knotens, um den Farbwähler zu öffnen und eine Farbe zu wählen, oder gib HEX sRGB
CDDAFFFFein.Wähle die Constant3Vector- und Multiplizieren-Knoten aus und drücke C, um eine Box namens
Farbton streuenzu erstellen.Speichere dein Material.
Dein Materialdiagramm sollte nun so aussehen:
Dein Parent-Material ist jetzt abgeschlossen. Im nächsten Abschnitt erfährst du mehr über die Arbeit mit Materialhierarchien und das Übertragen von Änderungen auf Instanzen.
Statische Werte und Parameter
Bisher hast du ausschließlich mit statischen Werten gearbeitet. Statische Werte sind Werte, die während der Kompilierungszeit festgelegt werden und zur Laufzeit nicht geändert werden können. Im nächsten Abschnitt erfährst du, wie du statische Werte in Parameter umwandelst. Parameter können zur Laufzeit über Blueprints geändert werden.
Erinnerst du dich an die Verbreitungshierarchie? Wie jede Eigenschaft werden Parameter vom Parent an das Child weitergegeben.
Anders als andere Eigenschaften können Parameter in Child-Material-Instanzen überschrieben werden. Du hast bereits mit Parametern gearbeitet, als du die Basisfarbe von MI_DefaultColorway geändert hast.
Man nennt das auch Exponierung und exponierte Parameter.
Wandle statische Werte in Parameter um.
Denk daran, dass Parent-Materialien als flexible Grundlage für alle Child-Instanzen dienen. Beim Freilegen von Eigenschaften ist es wichtig, dass du darüber nachdenkst, wie dein Material in verschiedenen Assets benutzt wird. In diesem Fall verwendest du M_Surfaces, um drei Spiel-Assets zu bearbeiten:
Dressing einstellen
Ein Boden
Ein nasser und trockener Look für den Boden (im nächsten Tutorial).
Dressing einstellen oder Deko einstellen (Set Dec) ist ein Begriff aus dem Film, der sich auf statische Assets in einem Level bezieht, mit denen ein Spieler nicht interagieren kann.
Für diese Anwendungen musst du die Konstanten umwandeln, die Folgendes steuern:
UV-Kachelung
Streu-Map
Farbton streuen
Normal-Map
Rauheit
Geh wie folgt vor, um einen Ausdruck in einen Parameter zu konvertieren:
Im Materialdiagramm von
M_Surfaceswähle die Konstante in der UV-Kachelung aus.Klicke mit der rechten Maustaste auf den Knoten und wähle In Parameter konvertieren.
Gib dem Parameter einen Namen, damit er identifizierbar und relevant für den Wert ist, den er ändert. In diesem Fall
UV-Kachelung.Wähle die Konstante aus, die der Eigenschaft Rauheit zugewiesen ist, klicke mit der rechten Maustaste darauf und wähle In Parameter umwandeln.
Nenne den neuen Parameter
Rauheit.Wähle den Constant3Vector aus, der Farbton streuen steuert, konvertiere ihn in einen Vektorparameter und benenne ihn in
Farbton streuenum.Wähle das Streu-TextureSample aus, konvertiere es zu einem Parameter und benenne es in
Diffuseum.Wähle das normale TextureSample aus, konvertiere es zu einem Parameter und benenne es in
Normalum.Speichere dein Material.
Dein Materialdiagramm sollte nun so aussehen:
Als Nächstes erstellst du Material-Instanzen, um deine Spiel-Assets mit der Oberfläche zu versehen.
Erstellen einer Materialinstanz
Erstellen wir eine Material-Instanz für jedes Asset, das du in diesem Abschnitt verwenden wirst: den Boden und das Set-Dressing.
Um eine Material-Instanz zu erstellen, gehe wie folgt vor:
Klicke im Inhaltsbrowser mit der rechten Maustaste auf
M_Surfaceund wähle Material-Instanz erstellen.Benenne es
MI_Surfaces_Floor.Erstelle eine zweite Material-Instanz namens
MI_Surfaces_Tile.Doppelklicke auf
MI_Surfaces_Floor, um den Material-Instanz-Editor zu öffnen.
Beachte, dass die Parameter, die du in M_Surfaces offengelegt hast, nun im Details-Panel dieser Child-Instanz gruppiert sind.
Im nächsten Schritt wendest du diese Instanzen auf das Mesh in deinem Level an und nimmst Anpassungen an den offengelegten Eigenschaften vor.
Material-Instanz-Überschreibungen
In diesem Abschnitt wendest du MI_Surfaces_Floor auf das Boden-Mesh in Hallway 2 von Lvl_Adventure an.
Um die Instanz auf den Boden anzuwenden, gehe folgendermaßen vor:
Im Outliner sucht den Ordner Hallway2 und wählt alle Objekte, deren Name
Floorenthalten.Ersetze im Details-Panel der Materialien Kategorie neben Element 0
MI_ProcGriddurchMI_Surfaces_Floor.
Schau dir den Boden genauer an. Man kann Wiederholungen in der Textur auf dem Bodenmesh erkennen. Abhängig von deinem Projekt sind offensichtliche Wiederholungen möglicherweise nicht wünschenswert.
Es gibt viele Möglichkeiten, Kachelungsprobleme zu verschleiern, zum Beispiel durch Texturüberblendung, Distanzüberblendung, Texturbombing oder Überlagerungen. Für dieses Tutorial hast du genug Texturauflösung, um sie zu skalieren.
Folge diesen Schritten, um die UVs in deiner Instanz zu skalieren:
Im Details-Panel von
MI_Surface_Floorunter Global Scalar Parameter Values prüfe UV-Kachelung und setze den Wert auf0,2.Speichere die Material-Instanz.
Mit hochskalierten UVs sieht der Boden weniger gekachelt aus, die Kacheln haben im Vergleich zum Spielercharakter eine angemessene Größe, die Textur ist aus Sicht des Spielers noch immer klar, und ein großes Gebiet des Levels ist abgedeckt. Du hast das alles erreicht, ohne unnötige Ressourcen für hochauflösende Texturen auszugeben.
Material-Instanzen wiederverwenden
Nehmen wir an, du musst schnell ein weiteres Asset aus Stein hervorheben. Durch das Überschreiben von Eigenschaften kannst du dein Parent-Material wiederverwenden, um kostengünstig einzigartige Assets zu erstellen. In diesem Fall erstellst du eine Set-Dekoration: einen Stapel Steinbodenmaterialien.
Um Boden-Kachel-Meshes zu erstellen, folge diesen Schritten:
Klicke in der Unreal Editor-Symbolleiste auf Hinzufügen > Formen > Würfel. Im Outliner benennst du es in
Kachelum.Mit ausgewähltem Tile im Details-Panel den Maßstab auf
0,5,0,5und0,05ändern.In der Werkzeugleiste des Unreal Editors klicke auf Hinzufügen > Formen > Würfel und benenne diesen
Slab.Ändere bei gewähltem Slab im Details-Panel den Maßstab auf
1,5,1,0und0,05.Halte bei gewählter Kachel Alt gedrückt und ziehe statische Meshes duplizieren in den Viewport. Mache dasselbe für Platte. Arrangiert die Assets nach Belieben.
Um die Kacheln subtil vom Boden abzuheben, folge diesen Schritten:
Doppelklicke auf
M_Surfaces_Tile, um es zu öffnen. Im Details-Panel prüfe die Option UV-Kachelung und setze den Wert auf0,2, um das Boden-Mesh anzupassen.Unter Global Vector Parameter Values prüfe Farbton struenund setze den HEX sRBG auf
A5AEC9FF.Speichere deine Instanz.
Wähle im Outliner alle Instanzen von Kachel aus. Füge im Details-Panel unter Materialien > Element 0
MI_Surfaces_Tilehinzu.Wähle alle Instanzen von Platte aus und wende
MI_Surfaces_Tilean.
Beachte, dass es ein Problem gibt. Die Auflösung der Kacheln ist mit der des Boden-Meshs vergleichbar, aber wenn du die Skalierung der Platteanpasst, skalieren ihre UVs (einheitlich oder uneinheitlich) mit dem Mesh. Dadurch wird dein Steinmaterial ausgedehnt. Das fällt besonders an den Seiten der Meshes auf.
Abhängig von deinem Projekt möchtest du wahrscheinlich, dass die Auflösung über verschiedene Assets hinweg kohärent skaliert erscheint – nicht gestreckt.
In einer Entwicklungsumgebung könntest du dieses Problem lösen, indem du die Mesh-Geometrie, das UV-Mapping oder die triplanare Projektion anpasst. Dabei handelt es sich um eine Methode, die ein Material einheitlich entlang der XYZ-Achsen des Meshes anwendet.
In diesem Beispiel erstellst du einen brandneuen Look für das Set-Dressing, indem du die von M_Surfaces übernommenen Textur-Maps überschreibst:
Setze im Details-Panel von
MI_Surfaces_Tileneben UV-Kachelung den Wert auf1.Markiere Streuenund suche nach
Grau.Markiere Normal und suche nach
T_Base_Tile_Normal.Gib neben Farbton streuen den HEX-sRGB-Wert
D0CECBFFein.Speichere deine Instanz.
Dein Set-Dressing und der Boden sind nun fertiggestellt.
In einer praktischeren Entwicklungsumgebung würdest du wahrscheinlich einen noch effizienteren Ansatz zur Erstellung von Set Dressings wählen. Zum Beispiel kannst du die losen Bodenfliesen als Teil des Boden-Meshs einfügen, um Geometrie zu sparen.
Du hast nun ein flexibles Parent-Material und zwei einzigartige Material-Instanzen erstellt. Dabei hast du auch Folgendes gelernt:
Verwaltung der Ressourcen: Eine sorgfältige Ressourcenallokation ermöglicht es dir, mehr für wichtige Spiel-Assets auszugeben.
Assets innerhalb des Editors organisieren: Organisations- und Benennungskonventionen verhindern Verwirrung, wenn Teams mit Hunderten von Assets arbeiten.
Aufbau eines modularen Workflows: Ein nicht-destruktiver, modularer Workflow vermeidet repetitive oder zeitaufwendige Arbeit. Dies ist bei knappen Entwicklungszeitplänen unerlässlich.
Künstlerische Entscheidungen mit technischen Einschränkungen in Einklang bringen: Bei der Spieleentwicklung geht es oft darum, kreativ zu denken, um technische Einschränkungen zu umgehen, und Kompromisse zu finden, die das künstlerische Erscheinungsbild möglichst wenig beeinträchtigen.
Als Nächstes
Im nächsten Tutorial lernst du mehr über triplanare Projektion, das Durchbrechen von Propagationshierarchien mit statischen Schaltern und die Verwendung von Blueprints zur Steuerung von Materialien basierend auf Spieleractions in deinem Level.