Modular UV Mapping

  • Hey Community,

    ich melde mich mit einem kleinen Problem welches mich bereits Lange begleitet. Ich erstelle in meinem 3D Programm (Blender) Modulare Gebäude Teile, das Model selbst ist jedoch nicht das Problem. Sobald es an die UV geht, bin ich raus. Ich bekomme es ums verrecken nicht hin das die UV seamless ist. Hauptsächlich habe ich das Problem mit unterschiedlichen Größen der Objekte. Eine Wand mit 3m x 3m hat einen anderen UV Space als eine Wand mit 1m x 1m. Wie also soll es funktionieren das man als Beispiel 15 verschiedene Wände hat (mit Türe, Fenster...) mit passender UV. Wände mit der selben Größe passen ja noch, was aber wenn ich ein Adapter Wand Stück einbaue was statt 3m 1m hat? Hier geht die texture automatisch zusammen oder auseinander. Selbe Probleme bei Wänden die um ein eck gehen sollen, diese haben zwangsläufig nicht immer die selbe Größe wie die anderen Wände. Wie also soll generell ein modulares System funktionieren, wenn die Größen unterschiedlich sind. Das blöde ist das ich wirklich tolle Objekte habe, es hängt aber immer an der UV / texturierung.


    Sollte jemand eine Lösung haben die nicht mit blender funktioniert, bin ich ebenfalls offen für andere Programme, Tools, plugins (irgendwie muss ich hier mal weiter kommen)


    Lg :)

  • Zeig mal ein Bild, wie du das mit 1x1m in Verbindung mit 3x3m denkst.


    Statt TextureCoord kannst mal WorldPosition testen, damit wird nur das Mesh bewegt, die Textur bleibt aber immer an der gleichen Stelle...

    Die Material-Function "WorldAlignedTexture" könnte evtl. hilfreich sein, jenachdem was du vor hast ^^

  • Zeig mal ein Bild, wie du das mit 1x1m in Verbindung mit 3x3m denkst.

    Klar,

    das mit der Größe war als Beispiel. Hier aber ein paar Screens


    Wie man hier sehen kann, sitzt die UV sowieso nicht genau auf weshalb eine WorldAligned Texture bzw Material benötigt wird. Dabei aber folgendes Problem





    Die Linke hälfte ist kleiner Skaliert als die Rechte. Vor dem Export habe ich alle Transforms selbstverständlich Applyt

    • Offizieller Beitrag

    Sobald es an die UV geht, bin ich raus. Ich bekomme es ums verrecken nicht hin das die UV seamless ist. Hauptsächlich habe ich das Problem mit unterschiedlichen Größen der Objekte. Eine Wand mit 3m x 3m hat einen anderen UV Space als eine Wand mit 1m x 1m. Wie also soll es funktionieren das man als Beispiel 15 verschiedene Wände hat (mit Türe, Fenster...) mit passender UV. Wände mit der selben Größe passen ja noch, was aber wenn ich ein Adapter Wand Stück einbaue was statt 3m 1m hat?

    Was du brauchst ist eine Texeldensity. Mit der Texel Density werden UVs auf eine einheitliche Größe gebracht. Im Optimalen Fall ist die UV deiner Wand die zb 2m * 2m groß ist auch im UV Space genau so groß, dass sie mit einer 2 * 2 Meter Textur übereinstimmt.

    Eine 2m * 2m Textur könnte dann beispielsweise eine 1024² oder 2048² pixel Textur sein.


    So stimmt die Textur Auflösung immer und die Teile passen auch zusammen da sie in sich schon im richtigen Maßstab sind.


    Beim Perfekten Maßstab sollten deine Meshes echte größen haben. (Nicht skaliert sein) und die Teexturen sollten ebenfalls in einem echten Maß sein. Bei Megascan ist das beispielsweise automatisch so. Bei Texturen von CG Texture nie.

  • Leider komme ich mit Texel Density ebenfalls nicht weiter. Hier ein Simples Beispiel:

    Mein Wand Links ist genau 2m L und 2.3m H. Teile ich diese in in der Mitte und Unwrape die Wände, habe ich logischerweise 1m x 2.3m. Bei beiden Teilen steht die Texel Density auf dem selben Wert. Schaut man sich rechts im Window die UV an, sieht man wie die UV Anordnung eine ganz andere ist und somit nicht mehr passend zu der linken Wand



    Das ganze nun nochmal in der Mitte teilen ohne entsprechendes Unwrapen kommt zum folgenden Resultat



    Bei dieser Variante scheint es zu klappen, jedoch würde es das auch ohne Texel Density funktionieren. Was Texel Density in einer Szene machen soll, ist es verschiedene Objekte auf eine möglichst gleiche Auflösung zu bekommen. Sprich soll ein Tisch passend zu den Stühlen sein.

    Was mich nun aber total stört ist:

    Wie mache ich aus dieser Wand als bsp eine Ecke? Egal wie ich diese ansetzen würde, ist die UV eine andere da ich zwangsweiße ein Unwrap machen muss, zumal das ganze noch Modular bleiben muss hinsichtlich der Maße. Hoffe du verstehst worauf ich hinaus will


    Ziehe ich hier nun die Ecken einander, ändert sich zwangsweiße das UV Bild. Was ich hier brauche ist eine Art Preserve UV´s. Mit einem Edge Slide würde ich das UV Bild beibehalten, jedoch kann ich ein Edge Slide nur Along eines bestehendes Edge machen (Komme also nicht weiter als die Kante besteht^^)



    Sonst Ideen? :D

    • Offizieller Beitrag

    Ich kenn mich mit Blender leider zu wenig aus um die Screenshots deuten zu können.

    Man sieht auf den Screenshots dass deine Meshes die selbe Auflösung haben. (alle Kacheln sind gleich groß)


    So wie ich das sehe ist das Problem das deine UVs Vertikal nicht gleich ausgerichtet sind.

    Deine rechte UV müsste etwas nach oben.


  • Das Problem ist das ich diese nicht einfach anhand es Grids verschieben kann und es passt anschließend (Wäre Zufall wenn ich genau die richtige Höhe treffe) Bekomme es aber immer mehr hin das es Funktioniert (Kostet mich jetzt schon gut eine Woche^^) Sollte ich eine verlässige Lösung gefunden haben schreibe ich diese hier rein. Wie es gerade ausschaut kann ich das morgen hier ergänzen.

  • wenn du deine uv elemente am grid ausrichtest, dann funktioniert es auch mit dem tiling:

    So habe ich überhaupt noch nicht gedacht die Wände einfach außerhalb des UV Spaces zusammenzuhängen.


    Vielleicht findest du auch was passendes für dich bei der Polycount Wiki:

    Die Seite ist ja mal Mega Geil. Jetzt bin ich auf einen neuen Begriff gekommen "Trim Sheets". Stelle mir das etwas schwierig vor eine Mauer oder eben Parts einer Mauer auf einen kleinen Bereich der Texture zu beschränken. Dabei wird es sicherlich auch oft vorkommen das die Texture in der X Ausrichtung verzogen ist damit eben soviel wie möglich von der Texture vorhanden ist.

    Habe meine Wände momentan auf Worldaligned in der Ue4 laufen. Versuche das mal auf das Trim Sheet umzubauen. Hoffe das funktioniert ohne weiteres :D

    Danke dir

    • Offizieller Beitrag

    Alles was sich außerhalb des UV Spaces befindet, wird automatisch wiederholt.

    Ist deine Textur 2m Hoch, wird ein Mesh das 4 Meter hoch ist 2 mal wiederholt.

    Du kannst Variationen reinbringen in dem du die UVs absichtlich in der Verikal oder Horizontal verschiebst.

    So hast du nicht immer 100%tige Vertikale oder Horizontale Wiederholung (Deine UV muss nicht innerhalb des UV Spaces sein)


    Das macht zb bei Übergangen von Wand auf Ecke sinn wenn du an der Ecke noch einen Pfeiler reinbaust der die Seams etwas kaschiert. Ist ja in der Realität auch oft so.


    Es ist jedenfalls völlig okay wenn deine UVs über den UV Space hinausgehen. Achte wie gesagt nur darauf dass deine Texel density zu deinen Texturen passen. Wenn du im Material den Scale in der Texturen anpassen musst, dann hast du etwas falsch gemacht.


    Ganz am Schluss kannst du natürlich auch Decals verwenden um zb Dreck auf die Wand zu projezieren hierbei kannst du selbstverständlich bei jeder Wand einen anderen Decal verwenden um mehr Variaten zu erschaffen.

  • Arbeite jetzt zum ersten mal mit Trim Sheets, wie ich finde ist es echt nicht leicht die richtige Texture Größe zu finden damit eben das Mesh am Ende passend aussieht. Habe jetzt mal eine einfache Wand hinbekommen. Wenn es anschließend an andere Wände geht, passt wahrscheinlich nix mehr zueinander



    Aussehen tut es natürlich nach nix

    • Offizieller Beitrag

    Als Anfänger: Du kannst doch in Unity diese Geometrie Würfel erstellen (Nicht die BSPs)


    ich glaube die BSPs haben eine default Größe von 4 * 4 *4 Meter und die Geometrie Würfel haben eine Größe von 200 * 200 * 200 cm.


    Den mit 200cm erstellst du in Unreal und exportierst ihn in Blender.

    Ich weiß nicht wie das in Blender ist aber in der Texel density kannst du normalerweise den Wert auslesen das geht häufig met GET.


    Diesen Wert überträgst du dann auf alle deine Meshes.


    Dann wirst du feststellen das die Mega Scanztexturen und auch die meisten anderen Texturen auf dein Mesh passen ohne das du irgend was im Material verstellen musst.