Physical Based Rendering (PBR)

  • Hey,


    ich bin schon seit einiger Zeit auf der Suche nach der Lösung zur PBR Material Erstellung in der UE4.

    Soweit ich mich richtig informiert habe braucht man einmal die Base Color, Ambient Occlusion, Heigh, Metallic, Normal und Roughness Texturen.

    Diese Texturen habe ich soweit alle. Nur mir mangelt es am Wissen wie man es im Graphen anwendet um ein perfektes PBR Material zu bekommen... Meine Frage bezüglich zu diesen Thema ist, ob mir jemand genau sagen kann wie ich ein perfektes PBR Material erstelle? Am Anfang hatte ich es mit Parallax Occlusion Mapping versucht und es auch problemlos hinbekommen. Aber das Ergebnis finde ich doch über Welten bei PBR Materials besser, da es viel realer und detaillierter ausschaut.

    • Offizieller Beitrag

    Base Color, Ambient Occlusion, Heigh, Metallic, Normal und Roughness Texturen.

    Dubrauchst nur die Base Color , Metallic, Roughness oder Specular glossiness Map.


    Roughness heißt wie Rau eine Oberfläche ist, ist sie absolut Glatt wie ein Spiegel und ein See der Still steht, ist die Roughness eher im Weiß. Werden die Wellen im See höher ist die Roughness eher Dunkel oder schwarz.


    Bei der Metallic ist das genau so, hier wird zwischen weiß und schwarz gesteuert wie Metallisch sich die Oberfläche verhalten soll.


    EIn Beispiel:

    Plastik zb hat meist keinerlei Reflektion also ist die die Roughness komplett schwarz.

    VIelleicht hat das Plastik aber Fingerabdrücke. Der HIntergrund wäre also schwarz und die FIngerabdrücke heller. Machst du die FIngerabdrücke komplett weiß, sieht es wahrscheinlich sehr seltsam aus. (Spiegel abdrücke)


    Plastik ist nicht metalisch also wäre die Metallic komplett schwarz in der Metallic..

    Nehmen wir an auf dem plastik befinden sich eisensplitter diese wären dann heller oder komplett weiß.


    Soll das Plastik mehr reflektieren, müsstest du die Roughness oder den Hintergrund heller machen usw.


    DIe Splitter reflektieren vermutlich stärker als die Fingerabdrücke also müssen die Splitter in der Roughness heller sein als die der Fingerabdrücke.


    Steuern kann man das ganze beispielsweise sehr gut durch Levels oder einer Tonwertkorrektur zb in Photoshop oder Levels im Substance Designer.

  • Ich bedanke mich für die ausführliche Antwort. Jetzt mangelt es mir nur noch am Graphen. Werden die Texturen direkt mit den Eigenschaften von der Liste die rechts von vornherein dabei ist verbunden, oder braucht man dazu dann noch zwischen Elemente?

  • Man kann wenn man die Texturen hat diese einfach mit den entsprechenden Kanälen verbinden.


    Berechnungen dazwischen benötigt man für komplexere Materials, z.B. falls man über Masken bestimmte Teile ausschneiden will oder um ein Material zu parametrisieren, damit man es während der Laufzeit verändern kann und vielleicht sogar komplexere Effekte. Im Grunde ist der Material Editor ein begrenzter Shader Editor. Das was in UE4 Material Instance genannt wird ist eher das was die meisten anderen Engines als Material verstehen.


    Falls du die Heightmap nutzen willst müsstest du noch einen Parallax Occlusion Mapping node einfügen und diesen richtig verbinden, was etwas komplizierter ist als Anfänger. Oder man nutzt Tesselation. Beides sind aber Effekte die man eher mit Erfahrung einsetzen sollte, da beide viel Performance kosten können, falls man es an den falschen stellen einsetzt.

  • Irgendwie bekomme ich es nicht hin ein PBR Material zu erstellen '^^

    Ich habe jetzt wieder zu Parallax Occlusion Mapping gegriffen und damit ein Landscape Material erstellt, doch jetzt sieht man so eine tansparente Schicht über dem eigentlichen Material. Kann mir einer sagen ob und wie ich das beheben kann und oder kann mir einer den Graphen schicken zu einem PBR Material (Landscape kein Laminat oder in die Richtung)?

    • Offizieller Beitrag

    Sorry ich kann auf dem oberen Bild nichts erkennen und auch auf dem untern Screenshot kann ich keine Fehler erkennen.


    Verwirred finde ich auch, das du PBR und Parallax durcheinander wirfst.

    Du sagst, PBR funktioniert nicht also nehme ich parallax occlusion und willst einen Graphen sehen aber kein Laminat oder in die Richtung. Den Satz verstehe ich auch schonmal nicht.


    Aber denoch will ich mal ein paar dinge klarstellen:


    1. Es macht absolut keinen Sinn mit Parallax Occlusion einen Laminat darzustellen.

    2. PBR ist die Roughness, Metallic Bei Stein hast du im Normalfall kein Metall und die Roguhness ist auch zu beinahe 100% eingestellt.

    Ich verstehe also auch nicht den komplexen Material aufbau, bei dem ich wie gesagt nichts erkennen kann.



    Glaube du solltest erstmal die Basics verstehen.


    Erstell doch mal ein neues Material lass in die Basecolor einfach einen Vector mit einer Farbe rein.

    In die Roguhness und Metallic eine Constante bei der du mit den werten etwas rumspielst.


    Eine Constante ist wie ein Farbverlauf zwischen weiß und Schwarz. 0 = Weiß 1 = Schwarz


    Du kannst die Constate also zwischen 0 und 1 anpassen.


    Schon ist dein PBR Material fertig.

  • Ich möchte halt einfach ein "3D" Material erreichen was möglichst nahe an die Realität ran kommt. Das ist mein Wunsch in kurz und knapp geschrieben. Das zweite Bild soll darstellen das eine "komische" Schicht über der haupt Textur ist. Ich schicke es nochmal rein, auf dem neuen Bild ist es besser zu erkennen. Dieses Problem besteht nur wenn ich vor einer Kante bergab stehe. Ich weiß wie man PBR bei Laminat bzw. glatte, glänzenden Oberflächen anwendet. Nur ich suche halt dach einer Lösung die man bei z.B. Wald Oberflächen anwenden kann, sodass die Stöcker herausragen nur ein kleineres Beispiel. Ich schicke soeben mal einen Link vom gewünschten Ergebnis: https://www.cgrecord.net/2016/…8k-real-displacement.html

    (dies ist ein real Displacement Material kein PBR). Das ist nur ein beispiel Material so ein Ergebnis hätte ich halt gerne bei allen Materials die Unebenheiten haben. Ich habe übrigens gelesen das man dafür auch gerne real Displacement Texturen nimmt aber da weiß ich wieder nicht wie man soetwas hinbekommt. Ja ich weiß Anfänger pur aber ich will lernen :). Ich verstehe jetzt auch nicht den wirklichen Unterschied zwischen Displacement Materials und PBR... ist meine Vermutung richtig oder fatal daneben?: Ich glaube PBR Materials werden eher bei realistischen spiegelnden und glänzenden Oberflächen wie auf Laminat und allgemein auf glatten Oberflächen Verwendet und real Displacement Materials eher bei unebenen Materials wie Waldböden und Steinböden, etc...

  • also > Displacement Materials und PBR


    PBR - Physically Based Rendering:


    Dafür verwendest du Texturen für verschiedene Channels um den Albedokanal, die Glanzlichtstärke, die Roughness und das Relief oder die Normalmap über Teturen zu definieren/festzulegen.


    Displacment - sub poly displacement:


    Displacement heißt in der Langform "sub poly displacement". Das hast du in allen gängigen 3D-Programmen. Der Name Sub deutet darauf hin das Material unterteilt wird. Dementsprechend muss ein Unterteilungsfaktor angegeben werden. Je höher der Faktor desto höher wird das Mesh unterteilt und zwar richtig unterteilt und zwar genau dann, wenn man auf den Renderbutton drückt um ein Bild berechnen zu lassen. Im Editor wäre das zu heftig, daher sieht man das Displacement dort auch nicht

    und dort wird es auch in einem 3D-Programm noch nicht berechnet, obwohl man das dort über Deformatoren teils schon erzwingen kann, in Cinema wäre das dann der "Displacer-Deformer".


    > Vor dem Rendern macht der Renderer aus der Geometry dann:

    aus einem Polygon entstehen 2 Polys und wenn der Unterteilungslevel höher ist dann eben 4, 8, 16, 32, 64, 128, usw. Polys aus jeder einzelnen Polygonfläche und diese werden dann anhand der Graustufeninformationen in der Höhe im 3D-Raum angeordne.


    Das ist sehr speicherintensiv (daher erfolgt die Berechnung auch im 3D-Programm erst kurz vor dem rendern!) und ich bin mir nicht ganz sicher, denke aber nicht das Unreal etwas so speicherhungriges überhaupt können will/machen kann...falls doch, würde mich das auch interessieren...


    Du kannst versuchen dich mit einer Normalmap da anzunäheren.

    Aber das ist nicht ganz das selbe.


    Anbei ein Link wie es in Cinema gehen würde, aber so ähnlich geht es auch in allen anderen 3D-Programmen:

    https://greyscalegorilla.com/t…isplacement-in-cinema-4d/


    Evtl. verstehst du jetzt besser was Displacment mit der Geometrie genau anstellt und wieso es so speicherintensiv ist.



    Wenn du Details (Blätter, Äste, Steine, Gras, etc.) willst musst du die Scattern/Pinseln. Damit hab ich mich in Unreal noch nicht beschäftigt, aber das geht dann in die Richtung:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Davon gibt es wirklich sehr viele schöne Tutorials und Videos auf Youtube, welche dir bestimmt alle möglichen Fragen beantworten und dir zeigen wie man an die Sache ran gehen könnte - siehe mal hier:

    https://www.youtube.com/result…ch_query=unreal+landscape


    Ich denke das ist eher der richtige Ansatz ....

  • Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Ich kann den Schleier auf dem Bild nicht erkennen, oder habe selbst einen auf den Augen. :)

    Im Prinzip würde ich sagen: Je realistischer, desto Speicher und Performancehungrig. Bis hin zu, geht nicht mehr. Das Displacement führt die ganze vorherige Arbeit (Mit so wenig Polys wie möglich auszukommen) ad absurdum.

    Es macht für mich keinen Sinn erst ein Low Poly Modell einzusetzen, um es dann wieder mit Geometrie aufzublasen.

    Dann kann man die Feinheiten gleich modellieren und ein High Polymodell mit 8 K Textur verwenden. Nur geht dir dann die Framerate beim Spiel schnell in den Keller.

  • Der Typ zeichnet das was zusammen ... vor allem der Eimer sieht leicht Pervers aus :)

    Genau genau - exportieren wir doch einfach alles HQ und sehen dann zu wie die Performance den Bach runter rauscht. Und Texturen sind leider auch ein nicht zu unterschätzender Speicherfresser. Aber gute Normalmaps bringen schon richtig coole Details. Gute UV-Abwicklung sorgt für kleinere Texturen ohne Details zu verlieren.


    Die Kunst ist es, es mit wenig Ressourcen richtig gut aussehen zu lassen...und das kostet Zeit, Geduld und wieder mal noch mehr Arbeit und Optimierung und wieder mal noch mehr Zeit.


    Ich hab heute den ganzen Tag Windräder, Solarpanels, Strommasten, Bäume, etc. von meinen alten Modellen für ein Projekt Polyoptimiert. Insg. Hab ich bestimmt fast 100.000 Polys für alle Modelle zusammen rausgearbeitet. Und das kostet richtig richtig viel Zeit...8 Std.nur für optimierung eigentlich fertiger Modelle (und UV-Abwicklung fehlt noch :( ). Wie viel Segmente braucht so ein einfacher Zylinder, 6, 8, 10 oder doch lieber 16,18, 20?

    Wie groß ist er, bzw wie groß überhaupt sichtbar in der Szene. Sieht man ihn denn überhaupt? Könnte der Zylinder, da so klein, evtl. auch einfach nur ne Box sein und welche Deckflächen sind überhaupt sichtbar. Dann könnte ich die nicht sichtbaren ja auch löschen !?...und so darf man dann das ganze Prozedere für jedes einzelne Objekt akribisch durcharbeiten, Stück für Stück... Wenigstens belohnt einen das Endergebnis.

    • Offizieller Beitrag

    Gerade am Anfang finde ich es nicht wichtig das man alle Regeln und alle Tipps und Tricks berücksichtigt.

    Mein Eindruck ist, das man gerade Anfänger am Anfang ziemlich verwirren kann wenn man jeden Schritt den sie nach vorne machen und etwas gelernt hat direkt wieder kritisiert.

    Bin auch ein Freund davon, das man alles von Anfang an richtig lernt aber man sollte dies mit Fingerspritzen Gefühl tun.


    Meiner Meinung nach muss am Anfang:


    1.Nicht alles zu 100% performant und optimiert sein. (Man probiert ja eh nur rum)

    2.Es muss technisch nicht alles zu 100% korrekt sein. Das lernt man später.

    3.Gewisse zusammenhänge muss man verstehen aber nicht alles.


    Sehr blöde Antwort weil es ja eigentlich keine Antwort ist ich weiß aber besser kann mans glaub nicht beschreiben.


    Spielewicklung, 3D und Unreal lernen ist ein bisschen als würde man ein Wolkenkratzer per Skype planen aber ohne Bildschirm Übertragung und nur durch Reden und beschreiben. Wie der Wolkenkratzer einmal aussieht ?

  • Ich wollte niemanden kritiseren und hab dies auch nicht auf den Threadsteller bezogen. Das mit dem Lowpoly hat ja erst mal nichts mit der eignetlichen ursprünglichen Frage und mit dem generellen Verständnis von PBR oder Displacement zu tun. Und jeder kann natürlich selbst entscheiden wie weit er optimieren will oder möchte.

    • Offizieller Beitrag

    Aber wie bekommt man schlussendlich die Materials raus die vom 3D technischen her mit Parallax Occlusion Mapping vergleichbar sind? Und wirklich auf der Map wo man drauf spielt übernommen werden können. Von Leistung habe ich soweit denke ich keine Einschränkungen (Hardware Technisch)

    Sorry ich kann dir wiedermals nicht folgen.


    Matierals wo raus ?

    Parallax vergleichbar mit was ?

    Und wirklich auf der Map wo man drauf spielt übernommen werden können.

    Keine Ahnung was dieser Satz bedeuten soll.


    Wenn du einfach schreibst was dir gerade durch den Kopf geht macht es auch keinen Spass dir zu helfen das ist einfach nur anstrengend.

  • Matierals wo raus ?

    Parallax vergleichbar mit was ?

    Keine Ahnung was dieser Satz bedeuten soll.


    Ich glaube er mein mit Parallax - den Effekt den es bei Bump Maps gibt. Das verbessert das Bumpmapping. Den gibt es aber bei Normalmaps nicht....und mit "Material wo raus?" würde ich auf Textur backen tippen.


    @ Draylor : Da hat Sleepy schon recht. Das ist sehr schwammig.

    Das ist ein Ratespiel.

  • Denk am besten so einfach wie es geht. Benutz dabei keine Fachwörter, wenn du diese noch nicht ganz verstanden hast oder vllt falsch in der Ausdrucksweise verwendest :) Such ein Referenzbild wo das Resultat deinen Wünschen entspricht und zeig es hier. Zusätzlich kannst du deinen Stand zeigen, damit wir besser wissen wo du grad dran bist. So können wir dir schnell helfen!


    Achte dabei es immer simpel zu halten auch in Gedanken!


    Wenn du sagst ist kein PBR in der Textur....fühlt es sich für einen erfahrenen komisch an. Sag doch einfach, dass der Glanz nicht erkennbar ist, so weiß jeder "ahh er hat die Roughness Map eventuell fehlerhaft erstellt oder Specular ist auf 0 gesetzt" oder so in der Richtung. Verstehst du was ich meine?


    Es ist nicht böse gemeint, sondern ein kleiner Tipp.



    Jetzt nochmal. Was genau möchtest du und wo kommst du nicht weiter? Zeig uns paar Bilder was du erreichen möchtest, was andere schon getan haben :)


    Zur Info: Nur ein gutes Material macht nicht den Realismus aus! Du brauchst eine korrekte Belichtung und ein richtiges Umfeld, welches auf dein Objekt mit dem "Super Realistic Material" zusammenspielt.


    1. gilt es ein gutes 3D Objekt (Mesh) zu modellieren

    2. gilt es, dass das gute 3D Objekt auch über 75% Ähnlichkeit im Vergleich zum echten Objekt hat!

    3. gilt es, dass du ein gutes Material in UE4 erstellt hast. (Komplizierte Nodesysteme heißt nicht, dass es gleich besser aussehen wird)

    4. gilt es, super Texturen für dein Objekt erstellt zu haben.


    Dazu zählt die Base Color

    ->Nur Farbe ohne Schatten und Glanz als Bild auf dem 3D Modell verteil oder eine Seamless Textur, die man beliebig oft verkleinern/ vergrößern kann.



    Dazu zählt die wie ich sie nenne Packed Map

    ->Dazu gebe ich verteilt in die Farbkanäle folgende Informationen rein.

    -->Da es PBR ist, brauchen wir meistens: Metalic (METAL) , Roughness (Rauhigkeit), Specular (wie stark wird reflektiert)

    ---> Die Packed Map Informationen teile "ich" wie folgt auf


    R = Metalic

    G = Roughness
    B = Specular


    Manche machen das zB so:

    [Blockierte Grafik: https://cdna.artstation.com/p/…packedmaps.jpg?1505628485]


    So kannst du selbst variieren wie du es möchtest. Diese "Packed Maps" nimmst du in UE und ziehst die notches an die gewünschen Input stellen vom Material.


    Dann kommt noch die Normal Map dazu, wenn man diese benutzen möchte.

    So sieht ein Objekt nur modelliert und "ohne Normal Map" aus:

    und hier "mit Normal Map"


    So sieht eine Normal Map zB aus:

    [Blockierte Grafik: https://encrypted-tbn0.gstatic…-EsS2OiySavLl6B9yhbbmf0gQ]


    Wenn das alles ungefähr zusammen spielt, musst du dein Material entsprechend erstellen und deine Umgebung in der UE4 mit folgenden Punkten versehen:


    - HDRI Textur als Skybox oder ähnlich

    - Reflection Prop

    - evtl. Paar Lichter um gewisse Reflektionen hervorzuheben

    - Paar weitere Funktionen der Ue4 um gewisse Effekte zu erzeugen.

    - Das ganze Baken oder auch nicht und schauen wie es wirkt!


    siehe meine Kamera (Blender gerendert) jedoch benötigt man das Wissen auch um gewisse Realität zu erzeugen, welche trotzdem nicht erreicht werden kann:

    https://www.artstation.com/artwork/oO8dOw


    und hier ein Schild von der letzten Challenge:

    https://www.artstation.com/artwork/PmNboL


    Da habe ich 4-6 Point Lights verwendet und ein Sun Light :D eine HDRI und eine Reflection Prop oder Cube. Dann hoffen, dass man einen guten Winkel erwischt und gut ist.

  • Ich befürchte, dass du den Effekt vom Parallax auch nur mit Parallax hinbekommst.

    Nach welchem Vorbild/Tutorial hast du dir denn dein Landscape Material zusammengebaut?

    Würde mich interessieren.

    Immerhin hast du schon ein recht kompliziertes Ding zusammengeschustert.

    Es spricht auch nichts unbedingt dagegen Parallax Occlusion zu verwenden. Ob es Performanceprobleme gibt, stellt sich erst nachher raus, falls da noch zusätzliche Bäume oder anderes Zeug hinzukommt.

    Zuerst ist aber die Normalmap dein Freund, wie man schon gut an dem Beispiel von VjaceslavT

    erkennen kann.