Einführung in Physically Based Rendering

Physically Based Rendering oder PBR simuliert die Reaktion von Werkstoffen auf realistisches Lichtverhalten. Bestimmte metallische Eigenschaften führen zu Reflexionen und das Licht wird durch verschiedene Arten von Glas gebeugt und gebrochen.

In dieser Anleitung wirst du einige der grundlegenden Arbeitsabläufe bei der Entwicklung von PBR-Texturen in Minecraft: Bedrock Edition kennenlernen. Du wirst eine Reihe von Texturen erstellen, die die einzelnen neuen Arten von Texturkarten präsentieren.

Am Ende dieser Anleitung wirst du Folgendes wissen:

  • Welche neuen Texturkarten für Texturen in Minecraft verfügbar sind
  • Wie mithilfe von Rauheits- und Metallkarten ein Spiegeltexturset erstellt werden kann

Voraussetzungen

Du musst die folgenden Tutorials abschließen:

Es werden zwar Texturen zur Verfügung gestellt, doch du benötigst Software für digitale Malerei mit Ebenen zum Erstellen deiner Texturen.

Was macht eine PBR-Textur aus?

Texturen verwenden eine gängige Rendering-Methode mit dem Namen Texture Mapping. Mithilfe von Texturkarten können Ersteller mehrere Bilder übereinanderlegen, um hoch detaillierte 3D-Objekte zu erstellen. Vanilla Minecraft-Texturen verwenden eine einzelne Karte mit der Bezeichnung color. Farbkarten setzen sich aus vier Farbkanälen zusammen: Rot, Blau, Grün und Alpha (gemeinsam als RGBA bezeichnet). Die ersten drei Kanäle steuern das Rendering der Textur, während der Alphakanal die Transparenz der Textur steuert.

Mit der Einführung von PBR in Minecraft können für Texturen jetzt fünf zusätzliche Karten genutzt werden, um die Erstellung realistischer Werkstoffe zu erleichtern.

Jede Karte wird Teil des Textursets für den Block sein. Dabei werden die einzelnen Karten überlagert, um verschiedene Werte in der Textur festzulegen. Dieser Prozess ermöglicht dem Ersteller eine starke Kontrolle über das Rendering eines Blocks, wenn dieser in der Welt platziert wird.

Wichtig

Nicht für alle PBR-Textursets werden alle Karten benötigt. Wenn Karten leer gelassen werden, verwendet das Texturset den Standardwert.

Metallkarte

Eine Metallkarte ist eine Graustufentextur, die bestimmt, welche Bereiche einer Texturkarte wie Metall aussehen.

  • Wenn ein Pixel auf schwarz gesetzt ist, gilt dies als Wert 0 und das Pixel ist nicht metallisch. Gras, Erde oder Baumrinde sind Beispiele für nicht metallische Objekte.
  • Wenn ein Pixel auf weiß gesetzt ist, gilt dies als Wert 1 und das Pixel wird als zu 100% metallisch behandelt. Eisen, Gold oder Kupfer sind Beispiele für metallische Gegenstände.

weißer Betonblock mit metallischen Kanten und einem matten Zentrum

In dem Bild oben wird die folgende MER-Textur verwendet:

weißer Betonblock mit Metallic-MER-Textur

Emissionskarte

Eine Emissionskarte ist eine Graustufentextur, die bestimmt, welche Bereiche einer Texturkarte Licht abgeben.

  • Wenn ein Pixel auf schwarz gesetzt ist, gilt dies als Wert 0 und das Pixel leuchtet nicht.
  • Wenn ein Pixel auf weiß gesetzt ist, gilt dies als Wert 1 und das Pixel leuchtet sehr hell.
  • Da es sich um eine Graustufenkarte handelt, kannst du Werte zwischen 0 und 1 festlegen.

weißer Betonblock mit vertikalen leuchtenden Streifen

In dem Bild oben wird die folgende MER-Textur verwendet:

weißer Betonblock mit Emissive-MER-Textur

Rauheitskarte

Eine Rauheitskarte ist eine Graustufentextur, die bestimmt, welche Bereiche einer Texturkarte Licht abgeben.

  • Wenn ein Pixel auf schwarz gesetzt ist, gilt dies als Wert 0 und das Pixel wird als sehr glatt behandelt. Objekte wie glatter Marmor, Glas oder glatter Kunststoff sind sehr glatt.
  • Wenn ein Pixel auf weiß gesetzt ist, gilt dies als Wert 1 und das Pixel wird als sehr rau behandelt. Ziegel, Baumrinde oder Steine sind sehr rau.
  • Da es sich um eine Graustufenkarte handelt, kannst du Werte zwischen 0 und 1 festlegen.

weißer Betonblock mit horizontalen rauen und glatten Streifen

In dem Bild oben wird die folgende MER-Textur verwendet:

weißer Betonblock mit Roughness-MER-Textur

Normalkarte

Eine Normalkarte ist eine RGB-Textur, die die Tiefe und das Verhaltens des Lichts beim Auftreffen eines Lichtstrahls auf die Textur steuert.

  • Da Normalkarten RGB verwenden, kannst du Oberflächendetails erstellen, die der Textur das Aussehen eines plastischen 3D-Objekts verleihen.
  • Wenn die RGB-Werte auf 128,128 bzw. 255 gesetzt werden, führt dies zu einem flachen Erscheinungsbild des Pixels.

Achtung

Wenn du noch keine Erfahrung mit dem Erstellen von Normalkarten hast, solltest du keine Normalkarten manuell erstellen. Es gibt Software von Drittanbietern, die dir beim Erstellen von Normalkarten helfen kann.

Höhenkarte

Eine Höhenkarte ist eine Graustufentextur, die die Tiefe einer Textur steuert. Höhenkarten sind eine Alternative zu Normalkarten. Sie sind jedoch nicht so effizient und können nicht so viele Texturen darstellen.

  • Wenn ein Pixel auf schwarz gesetzt ist, gilt dies als Wert 0 und führt dazu, dass das Pixel nach innen extrudiert wird.
  • Wenn ein Pixel auf weiß gesetzt ist, gilt dies als Wert 1 und führt dazu, dass das Pixel nach außen extrudiert wird.
  • Wenn ein Pixel auf 0.5 gesetzt ist, wird dies als Standardhöhe angesehen und es erfolgt weder eine Extrusion nach innen noch nach außen.

weißer Betonblock mit quadratischen Rillen

Im Bild oben wird die folgende Höhenkarte verwendet:

weißer Betonblock mit Height-MER-Textur

Spiegel herstellen

Wir werden nun eine Spiegeltextur für einen bestehenden Vanilla-Glasblock erstellen, indem wir eine Texturset-JSON-Datei erstellen und eine bereitgestellte Texturdatei verwenden.

Texturset-JSON-Datei erstellen

Damit das Texturset ordnungsgemäß funktioniert, musst du eine JSON-Datei zum Laden der Texturen definieren. In diesem Tutorial verwenden wir ein Spiegelbeispiel, bei dem der Block iron_block verwendet wird.

Tipp

Wenn du mehr über Textursets erfahren möchtest, besuche bitte die Dokumentation zu Textursets– Einführung in Textursets.

  1. Navigiere in deinem Verhaltenspaket zum Ordner textures/blocks.
  2. Erstelle eine neue JSON-Datei und nenne diese iron_block.texture_set.json.
  3. Doppelklicke auf iron_block.texture_set.json, um die Inhalte zu bearbeiten.
  4. Kopiere das folgende Beispiel.

iron_block.texture_set.json

{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "iron_block",
    "metalness_emissive_roughness": "iron_block_mer",
}
  1. Speichere und schließe die Datei.

Nachdem die JSON-Datei eingerichtet ist, kannst du jetzt die Texturen für den Wert color und den Wert metalness_emissive_roughness konfigurieren.

Raytraced-Fähigkeit hinzufügen

Die Datei manifest.json für das Paket verlangt, dass der Wert "raytraced" in einem Abschnitt capabilities unter den bestehenden Abschnitten header und modules hinzugefügt wird.

{
    "format_version": 1,
    "header": {
        "name": "RTX Sample Resources",
        "description": "",
        "uuid": "58d4560c-106d-4b0c-9847-eee47417fb05",
        "min_engine_version": [1, 12, 0],
        "version": [1, 0, 0]
    },
    "modules": [
        {
            "description": "",
            "type": "resources",
            "uuid": "2d3df25b-856a-406d-9a57-c87b9a4d7af8",
            "version": [0, 0, 1]
        }
    ],
    "capabilities" : [
        "raytraced"
    ]
}

Texturen hinzufügen

Um einen Spiegel in einem PBR-Arbeitsablauf zu erstellen, benötigst du eine Rauheitskarte und eine Metalkarte.

Eine Rauheitskarte mit dem Wert 0.0 oder schwarz erzeugt eine glatte Oberfläche, an der das Licht reflektiert wird.

Eine Metallkarte, die auf den Wert 1.0 oder weiß eingestellt ist, wird den Block wie reflektierendes Metall rendern.

Wenn dieser Spiegel eingerichtet ist, ist die Render-Dragon-Engine in der Lage, das Raytracing mit weniger Zeitaufwand für Berechnungen für diese Objekte durchzuführen.

Hauptfarbtextur: iron_block.png Minecraft-Eisenblock-Standardtextur

PBR-Textur: iron_block_mer.png Eisenblock-MER-Textur für Spiegeleffekt

  1. Speichere die Dateien iron_block.png und iron_block_mer.png.
  2. Kopiere beide PNG-Dateien und füge sie in den Ordner textures/blocks ein.

Texturpaket ausführen

Wenn die JSON-Datei ordnungsgemäß eingerichtet ist und beide Texturen vorhanden sind, kannst du jetzt dein Texturpaket laden, um es in Minecraft zu testen.

Eisenblock, der Blumen aus der Umgebung reflektiert

Wie geht es weiter?

Tutorial zu Physically Based Rendering

Du hast einen Spiegel mit Rauheits- und Metallkarte erstellt. Jetzt kannst du dich mit dem nächsten Teil dieser Anleitung befassen, in dem es um das Erstellen von benutzerdefinierten Texturen zum Erstellen deines eigenen Textursets geht.

Nebel in Ressourcen

Neben Raytracing wurde auch der Nebel in Minecraft aktualisiert. Es wird jetzt eine ähnliche JSON-Struktur verwendet, die es dir ermöglicht, Nebel zu erstellen und sein Erscheinungsbild im Spiel zu steuern.