Richtiges Lighting

  • Okay, wie sieht es eigentlich aus, wenn man etwas exportiert, um es zu bearbeiten und es dann wieder importiert. Behält das ganze dann seine UV Mapp oder muss man die dann neu machen?

    Wenn du die UV nicht bearbeitest und das ganze anständig wieder importierst (FBX) dann behält es die. Ich würde aber noch nen UV channel für lightmap hinzufügen und schauen daß die UVs nicht overlappen. Sollte bei so nem super simplen mesh aber kein thema sein.

  • Hallo zusammen
    ich beziehe mich hier auf die Frage wie man die seams vermeiden kann. Ich gehe von deinen Ansprüchen aus, dass du static lighting benutzt und da ist die ligmap natürlich wichtig.
    Hierzu hab ich dir kurz ein Beispiel erstellt.


    Links wird die von der UE4 selbst erstellte lightmap genutzt und rechts eine die ich selbst in maya erstellt habe.
    Die automatisch generierte Lightmap ist ja nicht schlecht, in diesem Fall müsste ich jedoch die Lightmapresoultion erhöhen um die seams zwischen den Objekten zu entfernen - für ein Techniker wie dich wohl eher eine Notlösung.
    Also muss eine gute Lightmap erstellt werden, irgendwie um mit der Standardresolution von 64 Pixel keine seams zwischen den Objekten zu haben. Das Ergebnis davon sind die zwei Cubes rechts. Das sind die genau selben Cubes aber mit der manuellen Lightmap und ebenfalls der Standardauflösung von 64 Pixel. Wie du siehts hat es praktisch keine seams dazwischen.


    Wenn wir nun aber das Material hinzufügen, haben wir das Problem das die Texture nicht zusammen passt wie von dir beschrieben. Das Problem taucht natürlich auch mit seamless Textures auf, weil diese ja schlicht an einem unterschiedlichen Ort aufeinandertreffen. Um das Problem direkt anzugehen muss man die Texturen im Shader alignen. Eine eigentlich einfache Sache, das Ergebnis siehst du hier.



    Links ist das normale Material und rechts das, das sich aligned. Wenn du genau hinsiehst, siehst du, dass die Texture nun wirklich seamless ist.
    Um dieses Beispiel zu erstellen habe ich eine Texture von texturelib.com genutzt.


    Gruss


  • Um das Problem direkt anzugehen muss man die Texturen im Shader alignen.

    Danke :)


    Meinst du so?

    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.

    • Offizieller Beitrag

    Seam entstehen auch aus zwei unterschiedlichen gründen:


    1. Wie du sie bereits kennst, können Seams durch die Textur entstehen weil zb zwei Objekte und die Textur nicht zusammen passen. Das Problem kannst du lösen in dem du die Objekte zusammen Combinest und beide Objekte zusammen mapen tust. hierbei solltest du darauf achten das beide Objekte auch richtig miteinander verbunden sind. Du musst zb. Bei deinem Bild zwei bei den unteren beides Cubes die Cubes per Edges miteinander verbinden.
    Eine andere Möglichlich wäre wenn du deine UVs auf einen einheitlichen Scale bringt. In Maya verwende ich hierfür sehr gerne eine Texel Density von Get = 1 und einer Mapsize von 100. Das entspricht einer Auflösung von einem Meter. Das heißt eine Wand die 1 * 1n Groß ist, wird auf einen Meter Scaliert und würde theoretisch den gesamten UV Bereich benutzen.
    Hast du noch eine andere Wand die 2 * 2 Meter groß ist, so wäre die doppelt so groß wie dein UV Space. Durch diesen Move kannst du deine UVs nun passend aneinander anorden. So das die eine UV Anfängt wo die andere aufhört. Ähnlich wie bei einem Puzzel kannst du deine ganzen Shells zu einem Riesen Bild zusammen setzen und deine Textur wäre dann Nahtlos.


    2.Dein 2. Problem werden die Smoothing Groups sein. Auf eine Edge und eine Fläche die eine nachbar Edge/Fläche hat kann man Smoothedges drauf machen. ABER: Wenn es sich um eine Border Edge handelt also eine Edge die ganz aussen bei deinem Mesh liegt, so lässt sich darauf keine Smooth smooting group drauf machen. Das liegt daran weil Smooting groups immer zwei zwei Vertecies interpoliert werden, dabei werden im grunde nur die Vertecies so dreht, dass die Engine diese Vertex Drehung interpretieren kann.


    Dem kannst du entgegenwirken in dem du die Meshes Combinest und die Verbindungen dann Smooth machst. Es gibt also viele Grüne warum man eine Wand (Fläche) am besten aus einem Stück macht und nicht versucht hier viele Wand teile aneinander zu basteln.
    Man kann hier auch tricksen wenn man die Vertecies manuell dreht oder zwei Objekt verbindet ,smooth drauf macht, und sie dann wieder trennt. Dann bleibt die Smooting Group Smooth.

  • Kann es sein das du dich mit dieser Antwort auf meine Antwort beziehst?
    Falls ja, die density ist hier nicht relevant. Aber grundsätzlich natürlich schon, zur Not bringts hier ein paramter in der Texture size. In diesem Fall kommt der Unterschied durch den Shader zustande. Aber nochmals, es sind die gleichen Cubes mit gleicher density.
    Siehst du tatsächlich noch seams in den Bilder?

  • Okay. Ich sehe auch wenn ich mich Bemühe keine seams mehr.
    Ich hoffe das hat funktioniert @vinco
    Der von mit erklärte Workflow ist natürlich vor allem für modulare Assets wichtig, zum Beispiel wenn jemand direkt in der Engine ein Haus zusammenbauen will. Da will man natürlich keine Übergänge zwischen den einzelnen Wandelementen, Böden etc. sehen, wie eben in meinem Beispiel mit den Cubes.



    Gruss

    • Offizieller Beitrag

    Kann es sein das du dich mit dieser Antwort auf meine Antwort beziehst?

    Ne das war ne allgemeine Information und die sollen auch nur mögliche Ursachen aufzeigen wie Seam Fehler zustande kommen können.


    Falsche Smootinggroups können jedenfalls auch den Anschein erwecken dass eine Textur nicht seamless ist.

  • Ne das war ne allgemeine Information und die sollen auch nur mögliche Ursachen aufzeigen wie Seam Fehler zustande kommen können.
    Falsche Smootinggroups können jedenfalls auch den Anschein erwecken dass eine Textur nicht seamless ist.

    Ach so. Ja absolut richtig. Nur damit meine Antowort nicht falsch verstaden wird. Auch die density ist sehr wichtig - gerade bei modularen objekten mit demselben Material. Es kann sehr aufwändig sein diese für die Objekte einzeln in der Engine anzugleichen.


    Gruss

    • Offizieller Beitrag

    Für Maya hab ich zwischenzeitlich einen sehr guten Workflow mit dem ich beliebig viele Objekte gleichzeitig mappen kann. Ich Mappe ich die UV und die Lighmap für alle Objekte in einem Rutsch.


    Hier mal ne Anleitung wie man das machen kann.


    1. Du wählst alle Objekte aus, die gemappt werden sollen.
    2. Du haust auf alle Objekte ein Automatik Mapping drauf.
    3.Du wählst alle UVs aus und benennst den UV Channel 0 (Textur UV) zb in "texturuv"
    Nun wirds etwas tricky aber für mich hat sich das bewehrt.
    4. Auch wenn wir uns im Textur UV Channel finden machen wir die Light UV zuerst und das funktioniert wie folgt
    5.Auf die Textur UV hauen wir auf alle Objekte über den Layouter per Oberlapping drüber. (Da wir alle Objekte ausgewählt haben, überlappen nun alle UVs. Wenn du aber nur ein Objekt anlickst, dann überlappt nichts.
    6.Wenn du diesen Channel nun Komplett vom Textur UV Channel in den Light UV Channel duplizierst (für alle Objekte) und das geht nun in dem du den UV-Set Editor verwendest und dort duplizierst. Dann ist deine Light UV fertig. Den UV Channel 1 nennst du zb in "Light UV" um.
    7.So nun gehst du zurück zu Textur UV und wählst alle Objekte und alle UVs und und haust zb eine Texel density von 1/100 drüber.


    Alle Textur UVs Channels sind aneinander angeglichen und die Light UV Channels befinden sich durch den Layout innerhalb vom UV Bereich.


    Ich persönlich mag diesen Workflow sehr da man so sehr sehr sehr sehr viel Zeit sparen kann.

  • Erstmal danke euch allen hat mir wirklich sehr weitergeholfen bin jetzt eigentlich ganz zufrieden mit dem Ergebnis.



    Ich bräuchte jetzt allerdings mal die Meinung von jemmand, der sich mit UV auskennt.



    Ich habe eine Wand exportiert, um sie mit einem anderen Wandteil in Blender zu verbinden damit sie höher ist und ich nicht die ganze zeit 2 Wandteile aufeinander platzieren muss. Das hat dann auch automatisch einen 2. UV Channel generiert.



    Allerdings weiß ich nicht, ob ich die UV Map so lassen kann. Ich würde ja selbst eine Komplett neue erstellen, aber kenn mich mit Blender oder 3dsmax (was ich auch hab) 0 aus



    UV vor dem exportieren & Zusammenfügen.


    UV Dannach Channel 1


    UV Dannach Channel 2

    • Offizieller Beitrag

    Vielleicht mal ein paar grundlegende Informationen und ich spreche mal Visuell, damit du dir das besser vorstellen kannst also nimm das nun nicht ganz genau was ich hier schreibe.


    Der Computer kennt in der Maschienenspache nur zwei Zustände nämlich 0 und 1 ( An und Aus) So werden Informationen immer in 2 Potenzen gespeichert. (Ist ewas an oder aus)
    Diese 2er Potenz kennst du in der Computerwelt überall 32 Bit ist eine 2er Potenz, 64 Bit ist eine 2er Potenz, Eine 1k Textur = 1024 Pixel ist eine 2er Potenz auch eine 4k Map = 4096 ist eine 2er Potenz.


    Der UV Space ist also immer Power of Two also durch 2 Teilbar. Das ist so, weil Informationen nun mal in 2er Potenzen gespeichert werden. Deswegen ist es auch nicht sinnvoll Texturen zu verwenden die kein Power of two sind.
    Gut ist zb eine 1k Textur mit 1024* 1024 Pixel aber auch misch masch ist möglich zb 64 * 1024 Pixel


    Egal ob bei einer Textur oder einer Lightmap, die UV Map ist im Prinzip eine Exel Tabelle!
    Bei einer 1k Textur hat die Tabelle 1024 Zeilen und 1024 Spalten, in der Informationen geschrieben sind welches Pixel wo hinkommt.
    Der UV Space (Power of Two) ist also quasi das Spielbrett auf dem sich alles abspielt. Alle Informationen im UV Space werden in 2er Potenzen gespeichert.
    Bei der UV Map werden im Prinzip Pixelinformationen aus dieser Exel Tabelle ausgelesen und 1 zu 1 auf das Mesh übertragen. Durch die UVs im UV Space wird im Grunde definiert wo Unreal die Entsprechenden Pixel Informationen finden kann.


    Damit UV richtig funktionieren, sollte man ein paar dinge wissen.
    1.Dem UV ist es egal ob sie eine 1k Textur oder eine 4k Textur ist. Verwendest du für dein UV eine 4k Textur werden einfach mehr Pixel auf dein Mesh Projiziert . Mehr Pixel = Mehr Auflösung
    2.Damit Pixel korrekt auf Mesh übertragen werden können, müssen diese komplett ohne Verzerrungen sein.((am besten keine distortion) Egal ob in der Light UV oder der Textur UV)
    3.Man kann eine Textur auf ein Mesh gekachelt oder nicht gekachelt Projizieren. Alles was sich außerhalb vom UV-Space befindet wird automatisch gekachelt.
    Bei der Light UV wird der Schatten für ein bestimmtes Mesh erstellt (maßgeschneidert), deswegen dürfen UV in der Lightmap nicht über den UV Space hinaus gehen.
    4.Auch mit dem Überlappen von Light UVs kann es Probleme geben. Da die Lightuv maßgeschneidert werden, passt sie nur auf ein bestimmtes Mesh. Das Licht und er Schatten der Berechnet wird, passt nur zu diesem Mesh und diesem Licht Winkel. Ist das selbe Mesh nur 10cm daneben so sieht die Light UV bereits anderst aus.



    Zusammengefasst:


    Textur UV und Light UV können identisch sein wenn sich die Light UV innerhalb des UV Spaces im 2. Channel befindet. Ich mache gerne immer zuerst die Textur UV und kopiere diesen in den 2. Channel. Bei der Light UV verwende ich ein Layout innerhalb des UV Spaces und die Textur UV darf auch über den UV Space hinausgehen wenn es sich um eine gekachelte Textur handelt.
    In der Textur UV möchte man normalerweise eine möglichst hohe Auflösung, diese Ergibt sich aus den Anzahl der UV-Shells und dem Abstand zwischen den Shells. Hat man wenig Shells, so hat man auch wenig abstände (leere Zeilen oder Spalten in der Exel Tabelle) Deswegen sollte man in der Textur UV wie gesagt möglichst wenig Platz verschwenden.
    In der Light UV spielt das keine große Rolle, da hier die Schatten Informationen hochauflösender gespeichert werden können.


    Im Prinzip könntest du alle 3 Maps als Light UV verwenden und der Berücksichtung der Regeln oben.
    Beim 2. Screenshot sieht es aus aus als wären da zwei Meshes übereinander oder ist dein Mesh nicht korrekt gecuttet? Zumindest verwirrt mich das hier offenbar Edges Diagonal durch Tris verlaufen.
    Dein 3. Screenshot sieht auch komisch trianguliert aus. Mit es es ein Rätsel warum ein paar Tris Links rum und andere rechtrum laufen. Sollten hier beispielsweise Vertex Normals gedreht sein, so könnte sich dass auch auf die Qualität der UV auswirken.