Unsaubere Kanten nach dem baken

    • Offizieller Beitrag

    Das Problem sieht man ja bereits in der Normal.
    Bei der Einbuchtung die man in deinem 1. Screenshot sieht, sieht man in der Normal deutlich das die Shells offenbar nicht richtig gecuttet und unfoldet ist.
    Schwer zu sagen warum aber in der Normal sieht man, das manche Stellen offenbar invertiert sind.


    Ich glaube mit einer Cage würdest du bessere Ergebnisse erzielen vermutlich sind dann auch die invertierten Bereiche verschwunden.
    Mich wurde das Bake Ergebnis aus einem anderen Programm interessieren und ob dort das selbe Problem genau so ausgeprägt auftritt.


    1.Check Cute deine Shells ohne Verzerrungen und solange bis im Unfold, Relax etc nicht mehr geht.
    2.Schau das deine Shells alle so geschnitten sind das sie vertical oder horizontal in der UV liegen. (Und nicht gebogen wie bei dir so hast du weniger Antialiasing Problem)
    3.Allgemein beim Baken das Antialiasing auf die höchste Stufe.
    4.Cage nutzen. (Das Lowpoly Kopieren und die Vertecies in Normal Richtung verschieben. Ich bräuchte für die Cage 30 Sekunden warum also ohne Cage ? )
    5.Eventuell mal die Vertex Normals anzeigen lassen eventuell sind hier die Normals verdreht.
    6. Falls sich die Probleme nicht lösen lassen mal ein anderes Bake Programm testen.

  • Das highpoly Modell ist exakt das selbe wie das lowpoly Modell, nur mit abgerundeten Kanten.

    Manchmal darf es auch etwas mehr sein. :D


    Trotz 2k Auflösung bleiben dir für den Bereich gerade mal 4 Pixel. Das es sich hier auch noch um eine gerundete Kante handelt die nicht parallel zu den Pixeln verläuft macht es nicht besser.


    2500 - fache Vergrösserung.

  • Danke! Mit den Tipps von Sleepy konnte ich jetzt ein akzeptables Ergebnis erreichen. Ich musste deutlich mehr Schnittkanten für die UV Map setzen. Die betroffenen Kanten mussten alle geschnitten werden. Und ich nutze jetzt ein Cage Modell. Nach diesen Schritten habe ich deutlich bessere Kanten erhalten.


    Aber manchmal zweifle ich echt an mir selbst oder an der Software :D
    Ich habe mit den Tipps von Sleepy in paar Minuten ein Lösungsweg gefunden. Aber sehr viel Zeit gerade damit verbracht wieso das backen manchmal scheitert obwohl ich glaube alles exakt so wiederholt zu haben wie vorhin als es klappte. Entweder ich übersehe immer irgendeine Kleinigkeit oder kämpfe wirklich mit seltsamen bugs.
    Manchmal muss ich SP schließen, die temporären Dateien löschen, lowpoly und highpoly in Blender neu exportieren, SP neu starten und alle Settings wieder neu einstellen und dann klappt es wieder plötzlich. Was sind das eigentlich für Dateien mit der Endung .assbin von SP? Die werden im Ordner mit den Mesh Dateien erstellt und ich glaube ich muss die manchmal manuell löschen damit ich beim erneuten backen komische Probleme endlich wieder los bin.


    Und mir ist aufgefallen dass es einige offene Fragen gibt. Ich habe ja ein lowpoly und ein highpoly Modell. In welchem Modell müssen oder können die Informationen sein die bestimmen welche Oberflächen hart und weich (smooth shader) dargestellt werden?


    Damit ich ein vernünftiges Ergebnis erhalte muss ich mein lowpoly Modell mindestens grob komplett auf smooth Shader setzen. Sieht dann erstmal blöd aus in Blender, wenn ausnahmslos alles rund dargestellt wird, aber nachdem backen in SP mit dem hihpoly Modell sieht alles wieder so aus wie es soll. Ich kann aber auch ganz gezielt im lowpoly Modell harte Kanten setzen oder ganze Flächen. Das ist doch richtig so oder?


    Auf dem Bild sieht ihr die noch ungeschnittene Kante in der Mitte die noch das Problem hat, während alle anderen Kanten geschnitten sind und deswegen deutlich besser aussehen.


    Das alles ist wirklich auf Kante gebaut :D
    Und ich bin mir sicher, beim nächsten backen wird wieder irgendwas komisches passieren und ich werde mich erneut wundern wieso es denn jetzt plötzlich nicht geht.

  • Deine Maps oben nennen sich Bottle, wird das etwa so was kleines wie ne Flasche?


    In deinem Blender-Addon Thema habe ich dir ein Script gepostet das die Vertex-Normalen neu kalkuliert. Probier das mal aus.
    Wenn ich mir deine Normal-Map so anschaue, dann sehe ich fast nur das Standard Blau was zeigt das die Normal-Map fast identisch mit der Geometrie ist.


    Hier mal ein schnelles Lowpoly Beispiel was zeigt was das Script macht. Das Teil hat nicht mal eine UV und alle Kanten sind ganz leicht gebevelt.
    Links Blender Original und in der Mitte mit Script.


  • @DarkFaces


    Danke für deine Mühe. Ich habe das Script ausprobiert und weiß nicht genau was ich davon halten soll. Soweit ich verstehe richtet es die Normalen einfach nach einem bestimmten Prinzip aus? Ich habe es ausprobiert und hatte einige komische Dreiecke die man in Substance Painter sehen konnte. Die Normalen habe ich übrigens überprüft, die sind in Ordnung und zeigen alle nach außen.


    Ich habe es jetzt hinbekommen, siehe Bild.


    Wenn man in Blender ein Modell als FBX exportieren will gibt es doch die Option "Smoothing", wo man zwischen "Normals Only", "Face" und "Edge" auswählen kann. Was genau bedeuten die einzelnen Einstellungen?
    Ich weiß nur das die Unreal Engine beim importieren fehlende Smooth Group Informationen als Warnmeldung ausgibt wenn man beim exportieren in Blender nicht "Face" oder "Edge" auswählt.
    Wähle ich "Normals Only" und öffne das Modell in Substance Painter sehe ich aber trotzdem die in Blender hinterlegten Smooth Groups.
    Was haben die Einstellungen also wirklich zu bedeuten?

    • Offizieller Beitrag

    Und mir ist aufgefallen dass es einige offene Fragen gibt. Ich habe ja ein lowpoly und ein highpoly Modell. In welchem Modell müssen oder können die Informationen sein die bestimmen welche Oberflächen hart und weich (smooth shader) dargestellt werden?


    Damit ich ein vernünftiges Ergebnis erhalte muss ich mein lowpoly Modell mindestens grob komplett auf smooth Shader setzen. Sieht dann erstmal blöd aus in Blender, wenn ausnahmslos alles rund dargestellt wird, aber nachdem backen in SP mit dem hihpoly Modell sieht alles wieder so aus wie es soll. Ich kann aber auch ganz gezielt im lowpoly Modell harte Kanten setzen oder ganze Flächen. Das ist doch richtig so oder?

    Gehen wir die Sache mal technisch an.
    Was passiert den beim Baken ?
    Es werden Normal Informationen vom Highpoly aufs Lowpoly übertragen. Mit Normal Informationen sind sowohl die Facenormals also auch die Edge Normals gemeint. Das bedeutet du kannst auch Smooting Groups von einem Highpoly in die Normal baken.
    Erstell dir mal einen Cube, und kopiere diesen, die Kopie nennst du Highpoly und tust auf die Edges eine Smooting Group drauf. Du blendest die die Vertex Normals ein und fügst Supportmaps ein. Wenn du die Supportmaps nun verschiebst, siehst du die sich die Vertex Normals verändern.
    Wenn du nun von Lowpoly quasi auf Lowpoly baken tust und der einzige Unterschied die Smoothing Groups sind, dann wirst du in der Normal den Unterschied sehen.


    Über die Smooting group bestimmt die genau genommen die Normal der vertecies, wenn du eine Edge die in X Richtung ausgerichtet ist von harden auf soften stellst, werden beide Vertex Position dieser Edge in X Richtung um 45 grad gedreht. Durch diese Drehung um 45 grad weiß die Edge das hier das Licht anderst geschmissen werden muss.


    Also: Die Smoothing Groups müssen beim Lowpoly Korrekt eingestellt sein. Dort werden die Edges ja hard oder Soft angezeigt. Du solltest aber auch im Highpoly achten das die Smooting groups stimmen da du sonst dadurch die Vertex Normals beeinflusst und dadurch Bake Fehler zustande kommen können.


    Du solltest niemals auf das gesamte Objekt smooth drauf knallen. Es gibt harte Kanten und weiße Kanten, die Weißen Kannten sollten Smooth und die harten Kannten nicht. Hier solltest du auf jeden Fall etwas Zeit reinstecken.

  • @Sleepy


    Danke für die Erklärung. Wie ist es aber wenn ich an meinem Modell alle Kanten ein wenig rund haben will und deswegen im highpoly allen Endges ein Bevel setze. Muss ich dann das lowpoly nicht komplett auf Smooth setzen um harte Kanten zu vermeiden?


    Und welche Informationen benötigt das Cage Modell eigentlich? Ohne eine UV Map für das Cage Modell stürzt Substance Painter beim baken immer ab.
    Braucht das Cage Modell Smoothing Informationen?

    • Offizieller Beitrag

    Danke für die Erklärung. Wie ist es aber wenn ich an meinem Modell alle Kanten ein wenig rund haben will und deswegen im highpoly allen Endges ein Bevel setze. Muss ich dann das lowpoly nicht komplett auf Smooth setzen um harte Kanten zu vermeiden?


    Und welche Informationen benötigt das Cage Modell eigentlich? Ohne eine UV Map für das Cage Modell stürzt Substance Painter beim baken immer ab.
    Braucht das Cage Modell Smoothing Informationen?

    Lowpoly & Cage müssen den selben Polycount haben.
    Ich mach das immer so: Ich kopiere das Lowpoly einmal und benenne die Kopie in Cage um. Du hast nun also das Lowpoly + Cage + Highpoly
    Auf das Cage Mesh machst du ein neues Material mit viel Transparenz ich nehme als Color für die Cage meistens Rot
    Nun wähle ich alle Vertecies vom Cage mesh aus und verschiebe diese in Normal Vertex Richtung
    Du müsstest rausfinden wie man in Blender vertecies in Normal Richtung verschiebt.



    In dem man die vertecies in Normal Richtung verschiebt, entsteht um das Komplette Objekt ein Käfig der überall den selben Abstand zum Lowpoly hat. Die Cage ist also etwas größer wie das Lowpoly. Da ich Transparents bei der Cage ausgewählt habe, sieht man durch die Cage das Lowpoly (Siehe Screenshot)
    Das Highpoly muss nun auf dem Lowpoly liegen oder zwischen dem Lowpoly und der Cage. Wenn das Highpoly aus der Cage hinaus geht, gibt dass auf jeden Fall Fehler.
    Die Cage braucht keine Smooting Groupsn keine UVs. Die Cage ist nur ein eine Hüller ab dehnen die Bake Strahlen gekillt werden.


    Vielleicht nochmal was technisches:


    Wenn du ein Bevel auf eine Edge drauf machst, dann entstehen an dieser Stelle ja ne menge neue Unterteilungen und Normal Informationen. Wenn du nun eine Rille Baken willst, und du dort mit der Distance beim Baken arbeitest, dann kann es vorkommen das das Objekt intersectet überlappt wie auch immer.


    Keine Ahnung wie man das mit worten erklären soll deswegen hier mal ein Bild:



    Ich habe bei diesem Bild das Problem warum es sog. Intersections gibt künstlich nachgebaut. Wie du sieht überlappt hier die Cage mit sich selbst. Das heißt in diesem Bereich werden Normal informationen von der gegenüber liegenden Seite mit reingebaked.


    Dieses Problem entsteht wenn man eine Cage verwendet aber auch wenn man keine Cage verwendet. Wenn man im Substance Painter das über die Distance löst wird im grunde auch eine Cage erstellt, wo es zu solchen Überlappungen führen kann.
    Man könnte HIER dieses Problem händisch löschen in dem man die Cage an der Stelle kleiner macht.
    Das Problem kann dazu führen das sich solche Problem nicht lösen lässt wenn man keine Cage verwendet.


    Dieses Problem ist beim Baken allgegenwärtig und sollte verstanden werden.






  • Du müsstest rausfinden wie man in Blender vertecies in Normal Richtung verschiebt.

    Das beantworte ich mal:


    Nun ist das Gizmo an der Normal ausgerichtet und man kann dies nutzen um das Vertex zu bewegen. Oder wenn man das Gizmo von Blender nicht mag geht mit der selben Einstellung auch G -> Strg+Z (oder auch jede andere Achse des Gizmos)


    Die Z Achse zeigt immer in Normalen Richtung.

  • Danke für die Links und Erklärungen. Das hilft mir weiter. Die Skalierung entlang der Normalen in Blender geht einfach mit dem Shortcut Alt+S statt nur S für die normale Skalierung.


    Die Cage braucht keine Smooting Groupsn keine UVs.

    Wie gesagt Substance Painter stürzt jedes mal beim baken sofort ab wenn die Cage keine UV Map hat. Ich habe die Cage gerade überprüft, es ist etwas größer als das lowpoly und das highpoly, es umhüllt sie vollständig, passt also. Das lowpoly und highpoly liegen auf der selben Ebene.
    Nicht nur bei diesem Modell, auch ein Test mit einem einfachen Würfel führt zum Absturz von Substance Painter (aktuelle Version) wenn die Cage keine UV hat. Nicht nur das, wenn die Cage eine leere bzw. Standard UV Map in Blender bekommt entstehen die Fehler wie auf dem Bild "Cage_std_UVmap.jpg".


    Das Problem konnte ich nur lösen indem ich für die Cage die selbe UV Map genommen habe wie vom lowpoly.


    Wer Lust hat kann sich die Objekte selbst in Blender anschauen, ich habe es angehängt.

    Ich habe bei diesem Bild das Problem warum es sog. Intersections gibt künstlich nachgebaut. Wie du sieht überlappt hier die Cage mit sich selbst.

    Meine Cage überlappt sich glaube ich auch an einer Stelle, aber das ist eine enge tiefe Stelle im Modell, optische Fehler die dort auftreten sieht man nicht. Ich dachte erst dass Substance Painter vielleicht aber deswegen abstürzt, aber nein, der Versuch mit einer einfachen Cube zeigte dass es nicht daran liegt.

  • Deine UV seams sind sehr schlecht gewählt, du braucht nirgends bei diesem mesh spalten.


    Siehe dir mal das an:




    Deine support loop edges sind viel zu sharp gesetzt, lass einfach ein paar milimeter mehr abstand, das ergibt beim baken viel schönere und saubere kanten(wirkt dann fast wie doppel edge).

  • BTW ich kann den Baker von Marmoset Toolbag (ab version 3) echt empfehlen. Dort wird sogar ein Cage Mesh generiert für dass man dann noch offsets, skew, etc selbst anpassen kann, was mMn echt intuitiv funktioniert. (Man muss natürlich wissen wie ein gutes Cage aussehen muss, sonst bringt es nichts die offsets zu painten)
    Der einzige nachteil ist dass Toolbag ein Tool zum anzeigen von Modellen ist, daher wird beim import das High Poly auch angezeigt, was echt ne Belastung für die GPU sein kann, je nach Anzahl der Polygone.

  • Kann mich Tomura nur anschließen, Toolbag ist der beste Baker und mit update 3.04 lassen sich auch Lightmaps Baken und zud em wurde AO und Curvature Improved. habe selber Shadermap, Knald, Xnormal und Substance getestet und die kommen alle nicht an Toolbag ran was zugänglichkeit und Qualität des Bakens betrifft. Zudem ist es sehr gut als vorschau zu gebrauchen und lässt sich wunderbar mit UE4 workflow nutzen.

  • Hallo
    Ich hab dir das Ding mal geunwrapt und einfach auf sharp edges gesetzt.
    Beim Baken im Substance painter brauchst du, jedenfalls bei diesem Mesh "keine Normal" zu baken, dann hast du auch keine Fehler.(Häkchen lowpoly s as highpoly)


    Wahlweise kannst du dein mesh auch mit subsurf genau ausformen und dann einfach eins zu eins auf das mesh baken, dann gibt's auch keine Fehler . Ich arbeite immer von low nach high, und ohne Cagel. Einfach die distances auf o.005 setzen, dann werden die meisten Fehler eliminiert, das Feintuning muss man (Bei Bedarf) eben zwei, drei mal ausprobieren. ruhig mal am mesh oder der UV nachjustieren...
    Edge Crease ist ein subsurf tool, das wird dir im LP so nix nützen.
    Schau dir mal an wie ich die sharp edges und die seams gesetzt hab (Den Einfüllstutzen hab ich etwas verkürzt, da schaut keiner rein)., das tut es für die meisten LP meshes. mit autosmooth exportieren.... gut iss. Grundsätzlich zum baken alle meshes immer auf shade smooth. Blender kennt keine smoothing Groups, das wird in blender etwas anders gelöst.
    Jag nicht jedem kleinen Fehler nach. Schau wies mit der Textur aussieht, wenns passt ok.
    Ich exportiere mit normals only ... passt immer.


    Ich hab dir das Mesh mal geunwrapt wies gehört. Die Uv hab ich nicht zusammengeschoben, kannste noch selber machen,
    hast du spezielle texturansprüche drin musst du eventulell in der UV noch die krummen Linien geradeziehen... Aber das ist ein anderes Thema. Die UV ist ein eigener, umfangreicher Arbeitsbereich, nicht etwas was man so nebenbei mal macht.

  • Danke für eure Hilfe und Tipps. Ihr seid klasse! :D
    Hat mir alles weiter geholfen.


    Ich habe übrigens aus Neugier auch Toolbag ausprobiert. Also zumindest in meinem Fall und diesem Modell konnte ich keinen Unterschied in der Qualität erkennen zwischen Substance Painter und Toolbag.


    @MesherKnesher


    Ja da auf dem Bild waren die UV seams wirklich nicht gut. Habe das inzwischen korrigiert. Danke.



    @Artful3D


    Wow, danke für deine Mühe und Tipps! :)



    Blender kennt keine smoothing Groups, das wird in blender etwas anders gelöst.

    Das verstehe ich nicht. Kannst du das genauer erklären?