Landscape Material

    • Offizieller Beitrag

    1.Du darfst ein Material verwenden das ein starken Muster beinhaltet. (Ein Punkt in der Mitte einer Textur wird man immer als Kachelung erkennen.

    2.Du kannst unterschiedliche Materials verwenden so dass man die Wiederholungen nicht mehr sieht.

    zb unterschiedliche Grass Materialien oder unterschiedliche Stein oder Erdtexturen.

    3.Nicht nur unterschiedliche Materials sonder auch unterschiedliche Opacity

    zb erstmal alles mit Erde vollkleistern, dann zb Gras mit 50% drübermalen dann nochmal eine andere Gras mit 70% drüber malen und da dann Varianten rein bringen.


    poste doch mal Screenshot so pauschal kann man das nicht sagen.

  • Hi, ich habe mir ein Landscape Material Blueprint runtergeladen, wo man nur noch die maps reinmachen muss. In dem BP ist auch cavity drin aber die Texturen die ich geladen habe, habe ich immer ohnecavity geladen. Wärs das wert das nachträglich zu tun außerdem hat das BP nur eine world displacement... und was haltet ihr von tesselation? Geht um dieses BP.


    https://forums.unrealengine.co…h-tiling-non-tessellation


    Danke!

    • Offizieller Beitrag

    Hi, ich habe mir ein Landscape Material Blueprint runtergeladen, wo man nur noch die maps reinmachen muss. In dem BP ist auch cavity drin aber die Texturen die ich geladen habe, habe ich immer ohnecavity geladen. Wärs das wert das nachträglich zu tun

    Du brauchst nicht unbedingt jede Map.


    Ist ist ungefähr als wenn du in Baumarkt gehst, du aber nicht weißt was du brauchst und dich absolut nicht auskennt. DU aber ein einen Verkäufen fragen würdest was brauche ich um ein Haus zu bauen ?


    Es kommt immer auf deine Bedürfnisse an.


    Ebenso kannst du nicht in einer Werkstatt anrufen und zu dehnen sagen: Hey mein Auto ist kaputt was brauche ich um es zu reparieren und wie viel wird es kosten.

    Ohne das jemand mehr Inforatationen darüber hat was kaputt ist wird dir auch niemand sagen können was es kostet.


    was haltet ihr von tesselation?

    Find ich klasse dass normale Terrain wird auch tesseliert.

  • Meine Bedüfrnisse: Ich will (wahrscheinlich basierend auf totaler naivität, was auch was gutes sein kann...) alleine innerhalb der nächsten 10 Jahre ein Tripple a Titel auf die Beine stellen, den ich auf den bekannten Plattformen ps5/6?, xbox, pc rausbringen will.


    Auf der Seite wird das Blueprint mit und ohne Tesselation angeboten...dann nehme ich das mit.


    Frage an euch Pros ist ob ich die Cavity Maps nachträglich laden sollte und ob ich das Blueprint so verändern sollte, dass jede Map ihre eigene Displacement bekommt weil im BP nur eine World-Displacement (falls ichs richtig verstanden habe) verwendet wird, die irgendwie alle Maps bedienen soll...

    • Offizieller Beitrag

    Sorry aber ich glaube du wirfst mit Begriffen um dich die du nicht verstehst.


    Was hast du den immer mit der Cavity ? Was glaubst du für was man eine Cavity braucht ?

    Ich glaube du meinst auch nicht Blueprint sondern Material

    Das ist zumindest kein Blueprint sondern ein Material:


    Das hier ist ein Blueprint


    Man sieht das Editor.

    und ob ich das Blueprint so verändern sollte, dass jede Map ihre eigene Displacement bekommt weil im BP nur eine World-Displacement (falls ichs richtig verstanden habe) verwendet wird, die irgendwie alle Maps bedienen soll...

    Sorry aber sas ergibt auch keinen Sinn


    Was ist den Material ?

    Ein Material ein ein Kontainer wo viele unterschiedliche Texturen zusammenlaufen.

    Ein Blueprint hat nichts mit Texturen zu tun, das passiert wie gesagt im Material.

  • Jo wusste garnicht dass man über verschiedene Klassen redet. Hast recht meinte Material.

    Also die Cavity Textur ist im Material drin, die von jemandem gemacht wurde der mindestens 100 mal mehr Ahnung hat als ich also wirds wohl ein guter Deal sein die zu verwenden. Laut Google ists halt sowas wie AO. Meine ganzen Texturen sind aber ohne cavity geladen jetzt frag ich mich halt obs die Mühe wert ist die nachzuladen.


    Die andere Frage ist, warum er eine World displacement definiert anstatt für jede Textur einzeln eine zu nehmen

    • Offizieller Beitrag

    Also die Cavity Textur ist im Material drin, die von jemandem gemacht wurde der mindestens 100 mal mehr Ahnung hat als ich also wirds wohl ein guter Deal sein die zu verwenden.

    Schau mal auf deinen Schreibtisch auf eine Tischkante auf die Lichtfällt. Oder auf deinen Monitor auf den Licht fällt.

    Dann siehst vielleicht das die Kante hell leuchtet und heller ist wie der restliche Tisch Monitor.



    Das was da hell leuchtet, dass simuliert die Cavity bzw auch die Curvature.

    Im Prinzip wird dadurch die Kante etwas aufgehellt und wirkt dadurch natürlicher und realistischer und das Licht wird auch anderst reflektiert.


    Cavity und Curvature ist im Prinzip das selbe.


    Hier ein Praktisches Beispiel:


    Die Sache ist, das viele Materialien viele Maps enthalten, Das heißt nicht das jede Textur auch mit Informationen gefüllt ist.

    Selbst wenn du als eine Cavity verwendest, heißt das nicht das Informationen vorhanden sind mit denen Unreal arbeiten kann.

    Wenn du sie also nicht brauchst, dann lass sie weg.


    Die andere Frage ist, warum er eine World displacement definiert anstatt für jede Textur einzeln eine zu nehmen

    Displacement bzw Tesselation macht nicht für alles Sinn auch weil Ergebnisse bei vielen nicht so toll sind.


    DIe Displacement sorgen dafür wie stark bestimmte Bereiche einer Textur nach ausser gedrückt werden. So wird aus 2D ein 3D Mesh,

    Das Mesh wird automatisch Tesseliert deswegen auch Tesselation. Tesselation bedeutet zb das ein Terrain oder ein Mesh umso mehr unterteilt wird umso mehr der Player davon sieht.

    EIn Terrain zb erstmal komplett flach, wird das Spiel gestart wird das Terrain tessliert und weiter unterteilt. Damit hast du um Terrain mehr Vertecies dein Terrain kann dadurch rauer dargestellt werden. Wie weit weit welches Vertecies angehoben wird, wird über die Displacement gesteuert.


    Hier siehst du das ganz gut:



    Umso heller die Bereiche, umso mehr wird das Bergmassiv nach oben geschoben.

    Damit aber funktioniert muss die Platte erstmal in mehr Vertecies unterteilt werden. (dies nennt man wie gesagt tesselation)


    Hier siehst du das richtig gut:


    [Blockierte Grafik: https://www.researchgate.net/profile/Alberto_Raposo/publication/224238421/figure/fig2/AS:669664594124833@1536671889594/Terrain-wireframe-models-and-corresponding-final-visualization-generated-by-the-proposed.jpg]

    Die andere Frage ist, warum er eine World displacement definiert anstatt für jede Textur einzeln eine zu nehmen

    EIne Displacement macht wie gesagt nicht bei allem Sinn. Bei einer Metalplatte macht Tesselation bzw eine Displacement keinen Sinn. Hier könntest du zb einfach eine Schwarze Textur oder ein Schwarzes Color Material verwenden. Das bedeutet das nicht tesseliert wird.

  • Bin mir nicht ganz sicher ob ichs verstanden habe. Also cavity würde ohne displacement generell überhaupt keinen sinn machen weil kein 3d Effekt?

    Natürlich funzt ne Cavity auch ohne Displacement, Displacement ist ja nur dafür gedacht, dass man Höhenunterschiede sieht, die Cavity ist dafür gedacht, dass man einem Modell, Details hinzufügt.


    Hier mal mein Fels-Modell, die leichten weißen Linien an der Kante sind auch ne Cavity (ich habs Edge genannt)


    Hier nochmal mit anderer Farbe, damit mans besser sieht:


    Displacement hingegen ist dafür gedacht, dass man Höhen-Daten dem Modell hinzufügt, wie z.B. wenn man ne Textur hat auf der Steine abgebildet sind und diese einen 3D-Effekt erzeugen sollen.

    Bild von textures.com^^

  • Hi, ich habe in meinem Landscape Material 21 * 6 Texturen drin und noch ein klein wenig mehr drin. Immer wenn ich speicher kompiliert er 12k shader. Wenn ich alle Texturen drin habe die ich will, müssten das dann 100k werden. Kriegt man die Geschichte performanter hin, wenn man z.B. jede Textur die zu einer Textur zusammengefasst wird in eine Materialfunction auslager oder so? Das Laden dauert so lange..

  • Kriegt man die Geschichte performanter hin, wenn man z.B. jede Textur die zu einer Textur zusammengefasst wird in eine Materialfunction auslager oder so? Das Laden dauert so lange..

    Die Shader werden eigentlich nur 1x kompiliert, wenn man auf "compile" klickt, bzw. man speichert wenn noch nicht compiled.

    Jedoch nur während das Material schon irgendwo verlinkt ist (z.B. in der Landscape).


    Bei einem Landscape Material kommt noch dazu, wieviele Layer derzeit Verwendung finden, jeder "gemalte" Layer muss erstmal kompiliert werden, je mehr Layer "gemalt" wurden, desto länger dauert es.


    Das ganze hat nichts mit der Performance zu tun^^


    Solltest du die Engine-Version wechseln, werden die Shader nochmal neu kompiliert, aber eben auch nur einmal, falls du nicht wieder meinst, etwas ändern zu müssen...


    Hast du mehrere Maps, wo verschiedene Materialien (bzw. Texturen) Verwendung finden, werden bei jedem ersten Map-Load (nach Änderung des Materials, bzw. Engine-Wechsel), alle zugehörigen Materialien kompiliert.

    • Offizieller Beitrag

    Kann mir kurz jemand erklären, wozu der "distance" parameter im ersten bild ist?

    https://docs.unrealengine.com/…rialNodes/1_11/index.html

    Achtung ich geh mal etwas näher darauf ein:

    Du bist hier wieder im Material nicht in einem Blueprint (nur damit das klar ist)

    Du kannst eine im Material beispielsweise eine Constante erstellen das ist ne Zahl von 0 bis keine Ahnung. (Float)


    Eine Graustufenmap wie beispielsweise die Roughness oder die Metallic hat nur einen Wert der zwischen 0 und 256

    Du kannst die die Roughness oder die Metallic mit einer graustufenmap darstellen wobei hier grauwert in solch einen Wert umgerechnet wird. Du kannst die Roughness oder die metallic auch mit einer Constante bestimmen und so den Grauwert über den Wert zwischen 0 und 256 festlegen.
    (kannst du ja mal testen)

    Eine Constante ist nun eine Feste Zahl die du auch in einen parameter umwandeln kannst.

    Der Paramenter hat folgende Vorteile:

    1.Du kannst ihn benennen. Auf deinem Screenshot heißt er "Distance"

    2.Du ein parameter Instanz die du direkt im Material ansprechen kannst. Du könntest zb über ein Blueprint sagen: "Erhöhe mir den Paramenter "Distance" um 5

    3.Du kannst die Zahlen Limitieren zwischen nur 0 - 256 (257 wäre dann nicht erlaubt)


    Distance ist also nichts anderes als eine Zahl der du einen Namen gibst und die über diesen Namen ansprechen kannst.



    Als Erkärung: Auf deinem Screenshot siehst du die Textur die in (A) Multiply hinein läuft.

    Distance ist eine Zahl die in (B) hineinläuft.


    Es wird (A * B) mulitpliziert.


    Nehmen wir einmal du hast in der Textur ein Pixel das Graustufenwert von 25 in einer möglichen Range von 0 - 256 hat.


    Wert A = " 25"


    Dein Distance 10


    Es wird also A * B multipliziert = 25 * 10 = 250

    Das Pixel das vorher einen Wert von 25 hatte, hat nun einen Wert von 250


    Dein Pixel hatte eine Höhe von 25 nun nun von 250


    Dein Terrain würde demnach um das 10 Fache in die höhe wachsen und jedes Pixel den 10fachen Wert bekommen.


    Zusatzinfo:

    Ein Vector besteht aus 3 Zahlen. So könntest zb einen RGB Wert über einen Vector steuern.


    zb: R = 230, G = 217, B = 15)


    Vector = 230,217,15


    Im Material könntest du den R Wert auch durch eine Grayscale Map bestimmen.

    Machst du das dies mit RGB kannst du durch diese 3 Zahlen eine Farbe bilden.


    Im Blueprint (Nicht Material) kannst du durch den Vector auch durch XYZ eine Position bestimmen. Durch den Break Vector kannst du einen Vector in XYZ auflösen.




    Das sollen auch alles nur sinngemäße Informationen sein. Bitte nicht im Detail festklammern.






  • Zum Glück hab ich c++ Basiswissen, mal alles kapiert ohne 10 mal zu lesen )). Können bei der Multiplikation, je höher die Zahl, nicht auch solche Fehler auftreten wie bei Bumpoffset? Ich glaub das nimmt man wenn man kein Displacement hat? Da werden manche Linien langgezogen verformt.

    • Offizieller Beitrag

    Können bei der Multiplikation, je höher die Zahl, nicht auch solche Fehler auftreten wie bei Bumpoffset? Ich glaub das nimmt man wenn man kein Displacement hat? Da werden manche Linien langgezogen verformt.

    Kann man nicht ausschließen. Ich meine was du im Prinzip tust ist etwas was sehr klein ist auseinander zu ziehen. Das macht nicht immer Sinn.

    Probiers doch einfach aus und beobachte was passiert.


    Was du ja im Prinzip tust ist eine Fläche nach oben zu verschieben.

    Nehmen wir an du hast eine schwarze Displacement auf der sich weiße Punkte befinden.


    Schwarz bedeutet flach und weiß bedeutet nach oben.



    Skalierst du nun, wird die Kugel größer und das Verhältnis der Nopen verändert sich. (Sie kommen weiter raus)


    Was passiert aber bei einem Würfel ? 8o

    Die obere Seite des Würfels wird nach oben geschoben, die linke Seite nach Links die rechte Seite nach rechts. usw

    Im Prinzip reißt du den Würfel auseinander und die Flächen Splitten sich. Das liegt daran weil die Vertex Positionen orthogonal verschoben werden und nicht wie bei der Kugel in Normal Richtung.


    Das ist ein technisches Problem wo der Scale einfach mit sich bringt.