UNwrap große Objekte in Blender für Unreal

  • Hallo und guten Tag,


    ich habe ein Haus erstellt, besteht aus einzelnen Wandteilen, die schon unwrapped wurden und nun im UV-Editor auf der Textur aufeinander liegen. Die einzelnen Wände habe ich zu einem einzigen Objekt gejoint und nun, wenn ich die Datei als Fbx in Unreal einfüge und ein lighting builden lasse, so erscheint die Warnung dass ich overlapped UVs habe. Dadurch entstehen hässliche dunkle Stellen an den Wänden, nicht an allen, aber doch, dass es unbrauchbar wird.

    Da dachte ich mir, haha, verschieben wir die Uvmaps der einzelnen Wände einfach nebeneinander, auch wenn diese dann im Uv-editor in Blender nicht mehr auf der Textur liegen, so liegen sie doch nicht mehr übereinander und die Textur wird ja sowieso endlos wiederholend dargestellt. In Blender funktioniert es einwandfrei, jedoch erhalte ich in Unreal wieder die Fehlermeldung, dass ich overlapped Uvs habe, obwohl keine einzige Fläche der Uv mehr über einer anderen liegt. Wollte nun fragen ob es eine leichtere Methode gibt, als die gesamten Uvs' auf die Größe der Textur zu minimieren und in UNreal ein Tiling einzusetzen und ob dies überhaupt möglich ist.

    Danke für die Antwort und euch alles Gute.

    • Offizieller Beitrag

    Vorsicht: Du verwechselt TexturUV mit Light UV


    1.Die Textur UV kannst du wieder holen. Gehen die UVs über den UV-Space hinaus werden sie automatisch gekachelt. Umso weiter sie über den UV-Space hinausgehen umso stärker werden sie wiederholt.

    Textur UV ist standardmäßig UV-Channel 0 in Unreeal


    2.In die LightUV werden Schatten hineingegeschrieben also nicht gelesen wie bei der Textur.

    Bakst du den Schatten eines Cubes willst du nicht das sich der Schatten bei anderen Objekten wiederholt. Auch wenn es den selben Cube nochmal gibt, ist der Schatten niemals gleich da das Licht anderst ist.

    Deswegen MÜSSEN bei der Lightuv alle UVs innerhalb des UV-Spaces liegen.


    Als Tipp: Wenn du unnötige Flächen löschen tust oder in der Light einfach weglässt, muss weniger gebaked werden und du hast dann auch mehr Platz und eine bessere Resolution in der Light UV.

    • Offizieller Beitrag

    Dazu gibt es mehre Möglichkeiten:


    1.Light UV in Blender selber bauen.


    Im Prinzip musst du in Blender die Textur UV machen (Channel0) also ganz normal die UV erstellen. UNd diesen Channel dann nach UV Channel1 kopieren. WIe das geht, keine Ahnung kenn mich mit Blender nicht aus.


    Nur beachten dass deine Light UV innerhalb des UV Spaces liegt es darf also nichts überlappen oder aus dem UV Space hinausragen.

    Hier bitte den Haken in bei den Import Settings "Generating a Lightmap UV" ausmachen da sonst noch ein 3. Channel generiert wird der Fehler verursacht.


    2. UV aus derr Textur UV Generieren lassen.


    Die Varianten ist ein bisschen einfacher.


    Was du brauchst ist eine gute Textur UV Map siehe hier was eine gute UV ist:

    Was eine gute UV ausmacht!


    Nun das Mesh einfach exportieren und den Haken bei "Generating a Lightmap UV" anmachen.



    Machst du deine UV im 3D Programm haken aus lässt du ihn von Unreal erstellen, dann den Haken an.


    Wichtig: Deine Light UV wird in Unreal aus der Textur UV erstellt. Wenns Probleme gibt, liegt es wahrscheinlich an Fehlern in deiner Textur UV. +


    Dann bitte folgendes Posten.


    1:Screenshot der Textur UV

    2.Screenshot der LightUV (Channel1)aus Unreal falls vorhanden.



    3.Screenshot deines 3D Modells mit einer Checker Textur.



  • Danke für die Tipps. Habe es genauso versucht und mich auch bei dem Community Forum schlau gemacht. Ist genauso beschrieben. Funktioniert aber alles nicht. Wenn ich die LightmapResolution von 64 auf 32 reduziere so zeigt er mir zwar keine Fehlermeldung mehr an, jedoch bleibt das Ergebnis im Viewport dasselbe. Es sind insgesamt vier Meshes mit je vier Materialien. Jedes Material hat drei Texturen: Colour, Normal und Rougnessmap. Ich habe die UV Maps in Kachelung angeordnet dass es keine Überschneidungen gibt und auch habe ich versucht die Uv Maps zu skalieren, dass sie insgesamt auf die Textur passen und sie in UNreal mit einem Texturecoordinate wieder auf die richtige Größe gebracht. Hat jedoch alles nicht funktioniert. Nun bin ich ein wenig ratlos.

    Stimmt sicher irgendetwas nicht mit meinen UVs. Da die Meshes aus Einzelteilen gefertigt sind und ich die UVs davon übernommen habe, gibt es einige Stellen die zwar gemappt wurden, jedoch im Mesh in der Wand liegen. Vielleicht liegt es daran.

    • Offizieller Beitrag

    Zu Bild 1:Also beim ersten Bild sehe ich bereits deine Textur UV nicht perfekt ist. Die Kacheln sind unterschiedlich groß und breiter als Hoch. Das bedeutet die Textur UV ist verzerrt.


    Zu Bild 2:

    Dein Abstände zwischen den UV ist größer als deine UVs selbst. Zu verschwendest ca 95% deines UV-Spaces. Das müsstest du kompensieren in dem die Resolution hochdreht.

    Deswegen schau lieber, dass deine UVs größer sind und näher beieinander liegen.

    Hier nochmal der


    Link: Was eine gute UV ausmacht!


    Stell dir das so vor:

    Du hast eine 2k Textur auf die 2048² Pixel drauf passen.

    Nun schau mal deine UV an: Das Fassadenteil ganz oben hat eine Größe vielleicht von 1/50 vom UV Space

    2048/50 = ca 41 Pixel.


    Das heißt der Schatten des Fassenteils ganz oben Links bekommt ca 41 Pixel für die Light UV ab.


    zu Bild Nr 3


    Ist das die Textur UV ? Ich habe auch keinen Anhaltpunkt wie groß die UVs sind.


    Als Tipp:


    Du musst nicht das gesamte Gebäude aus einem Teil bauen weil das spiegelt sich dann auch in der Größe der UV wieder.


    Ich kann dir in Blender leider nicht groß helfen aber dir fehlt grundlegendes WIssen im UV-Mapping.


    Vielleicht ziehst du dir ein paar Tutorials rein und probierst unterschiedliche dinge aus.


    Ich würde auch nicht die ganzen Details modellieren das fliegt dir im UV-Mapping dann auch um die Ohren.

  • Hast du denn alle Einzelteile deines Hauses vor dem export zu einem Objekt zusammengefügt? Oder die Einzelteile exportiert und dann das Haus erst aus den Modulen in der Engine zusammen gestellt?

    Weil ich werde auch nicht aus der Light UV schlau.

    Denke du solltest eher die einzelnen Teile exportieren und dann das Haus in der Engine zusammen erstellen. Man kann auch das Ganze nachher in der Engine als ein Mesh merchen.


    Allgemein wie Sleepy schon sagte, solltest du an deiner UV arbeiten. Die Kachelung von der Checker sollte eigentlich gleichmäßig sein.

    Auch kann ich dir das Thema Texel Density ans Herz legen. Wurde hier auch schon sehr oft besprochen.

    Hier mal ein Addon for free für Blender: https://gumroad.com/l/CEIOR


    Wenn deine UV und Texel Density stimmt dann kannst du in der Engine einfach ein Material draufpacken und dann sollte es auch passen ohne dass du immer nachträglich in der Engine rum-skalierst.

    Wegen der UV Channels in Blender:

    Bitte vergrößern:


    Ist bei 2.8 nicht anders.

    Den ersten Channel benennst du dann UV-Map 0, das ist deine texture UV
    Den zweiten Channel benennst du UV-Map 1, das wird deine Light UV (Falls du es nicht über die Engine generieren lässt.)

    Wenn du eine eigene Light UV machst musst du beim FBX import den Haken bei "Auto generate Lightmap" oder so ähnliches raus nehmen.

    Aber wie gesagt, probier die Hausmodule erstmal einzeln zu importieren, denn dann sollten die einzelteile auch auf der UV platzt haben.

  • Bestimmt schlägt mich Sleepy weil ich das mal wieder sage - aber mach doch mal testhalber static lights aus (Project settings - rendering - allow static lighting Haken raus). Wenn du sehr viele static lights verwendest wird das die Performance etwas runterziehen, aber du sparst dir den ganzen Quatsch mit overlapping UVS, light baking lightUV usw.

  • Danke für die Tipps. Da ist halt noch eine Menge Arbeit die ich zu machen habe. Vielleicht poste ich ja wieder ein Bild, wenn es klappt. Ich wünsche euch allen ein frohes Fest und guten Rutsch ins neue Jahr. Danke danke für die ganze Hilfe. Ihr seid Spitze.

  • Falls dir das noch helfen sollte, dann kannst du dir im neuen Blender (2.82 Alpha) das UDIM Feature anschauen. Mir erleichtert es sehr.


    Bei Gebäuden solltest auch darauf achten, dass die Textur nur ein Teil der gesamten Fläche ist. Gerade Gebäude haben die Eigenart eine homogene Struktur zu haben. Ein Gebäudeseite ist nicht eine UV. Kacheln funktioniert hier super und spart ne Menge Rechenleistung und Speicher.

  • Ich hab mit dem Thema auch so meine Probleme.

    Viele meiner Asssets haben überlappende UV.

    Ich hab auch nie ganz verstanden warum das nicht von der Engine gemanaged wird egal wie viel ich zu dem Thema gelesen habe. Von der Theorie her könnte sie doch ein neues unwrap des assets anfertigen und dort das light baking hinschreiben. Ich verstehe nicht warum sie sich an einem UV Channel orientieren muss.

    Das wäre doch wesentlich effektiver wenn ich einen Bilderrahmen (als Beispiel) mit einem Vierteil der Textur abdecken kann. So habe ich einige Zeit lang meine UVs gemacht.


    Kann mir das jemand erklären? Oder habe ich was falsch verstanden?

    • Offizieller Beitrag

    Das Problem ist komplex und man muss erstmal Textur UV von der Light UV unterschieden.


    1.Beim Lightbaken wird dir der Schatten in die Light UV geschrieben. Im Prinzip malt Unreal den Schatten als Bild und dieses Bild (Die Light UV ) wird über die Textur gelegt. (Textur + Light UV = Mesh mit Schatten)


    2.Alles was sich außerhalb vom UV Space befindet wiederholt sich. Wenn du überlappende UVs hast, dann werden die Light UVs mehrmals überzeichnet.

    Stell dir vor du würdest einen Text mit 1000 Seite immer wieder auf das selbe Blatt Papier drucken. Irgend wann wäre ein Papier komplett schwarz. Genau so ist es bei der Light UV und überlappenden UVs auch. Deswegen sind überlappende UVs dann auch schwarz.


    3.Textur UVs dürfen sich überlappen dann darfst du aber nicht Baken (nur Echtzeit Schatte) sonst hast du das Problem nr 2. Auch kannst du bei gekachelnde Texturen keine Normal oder Curvature etc bake. Im Prinzip fällt dann auch der komplette Substance Painter Workflow weg, es sei du verwendest die Texturen als reine Kacheltexuren.


    Du musst dir als bezüglich der Textur UV überlegen ob du nun Baken oder nicht Baken willst. Das entscheidet dann ob deine TexturUV im UV Space sein muss oder auch drüber gehen kann.


    4.Nun aber nochmal zur Textur UV: UVs sollte nicht per Onklick erstellen. Erstens mal möchte man Seams möglichst vermeiden. Es sollten deswegen so wenig wie möglich UV inseln sein.

    DIe UV Inseln haben auch immer einen Abstand zueinander (Padding) Umso mehr UV Inseln du hast, umso mehr Auflösung gehen durch zwischen Räume zwischen den UVs verloren.

    Ein Programm kann einfach nicht erkennen wo es sinnvoll ist die Seam langlaufen zu lassen. Das kann kein PC Programm auf der Welt. Per Automatik Mapping ist dass dann mehr schlecht als Recht.


    5. Du kannst ja den Haken beim Import auf "Generate Light UVs" setzen, dann wird die Light UV aus der Texur UV berechnet und die Textur UV (Auch gekachelt) einfach in den UV Space gesetzt.


    6. Auch wenn es möglich wäre die Light UV per Algorithmus zu generieren hast du auch dort Probleme mit den Seams. Nicht nur das. Je das Größe des Meshes brauchst du bei der Schatten Resolution unterschiedliche Werte. Bei Großen Meshes wird dann auch mal sehr Pixelig (grisselig)

    Umso größer das Mesh umso großer werden die Probleme mit Auflösung. Und was noch viel schlimmer ist, ist das Antialiasing beim Light Bake. Wenn die Light UVs zb diagonal verlaufen dann können sich Treppchen Bilden die bei einer gerade Wand sehr seltsam aussehen. Die Wand ist dann zwar gerade aber es wurde Schräg gebaken. Dewegen sollten die Light UVs im besten Fall immer vertical oder Horizonal verlaufen oder noch besser immer so wie die Wände später auch sein sollen zb. Nicht auf dem Kopf.