UVPackmaster 2 für 3ds Max | Retro-Artikel

Rückblick: In der DP 05 : 2020 beschäftigte sich 3ds-Max-Experte Mike Kuhn mit der UV-Abwicklung. Für viele eine nervige Aufgabe, für Mike ein meditatives Puzzle-Spiel.

Dieser Artikel erschien ursprünglich in der DP 05 : 2020.

Wenn es an die UV-Abwicklung geht, ist nicht jeder Anwender begeistert. Vielen ist es gar zuwider. Somit gehöre ich wohl der seltenen Gruppe an, welche die meditative Arbeit und Ordnung einer guten Abwicklung wirklich mag. Die richtigen Schnitte zu setzen und eine schöne, kaum verzogene Abwicklung ist ja nur ein Teil der Arbeit. Sobald man die ganzen Segmente definiert hat, müssen sie sich noch so effizient wie möglich in dem UVRahmen verteilen. Das ähnelt dann einer Art langsamem, bedachtem Tetris.

In den Kursen, die ich gebe, werde ich öfters gefragt, warum es denn überhaupt so wichtig ist, ein gutes Layout für die UV-Abwicklung zu haben. Prinzipiell steht das Quadrat, welches wir im UV-Editor sehen, für ein Bitmap, auf dem die Texturen für die jeweiligen Bereiche des Modells liegen. Das kann eine 4K-Map sein, bei Games aber auch mal eine 512 x 512 Textur oder sogar kleiner. Somit ist jedes Pixel auf diesem Layout, das nicht einen Teil der Geometrie bedeckt, ein verschwendetes Pixel, das wir möglicherweise hätten nutzen können, um eine bessere und schärfere Textur für unser Objekt zu liefern. Deswegen ist es wichtig, eine Anordnung zu finden, die so wenige freie Flächen wie möglich übrig lässt. Während sich dies als eine tolle Abwechslung zu Kreuzworträtseln oder Sudoku anhört, kann es auch ziemlich viel Zeit in Anspruch nehmen.

Der UVPackmaster überlässt uns zwar immer noch den ersten Teil der Arbeit, also das Setzen der Schnitte und die Vorbereitung der jeweiligen UV-Islands, hilft uns jedoch bei dem zweiten Abschnitt der zu verrichtenden Aufgabe. Das Programm ist speziell dafür ausgelegt, die UVIslands so gut wie nur möglich innerhalb der UV-Grenzen zu verteilen.

Das Add-on selber gibt es für 3ds Max und für Blender. In 3ds Max findet es seinen Einsatz als Modifikator, den man über den UVW Unwrap legt. Dabei kann er auf ein Objekt sowie auf mehrere Objekte gleichzeitig angewendet werden.

Die Handhabung dieses Modifikators ist ohnehin nicht kompliziert. Wenn man aber einfach nur seine UV-Islands sauber angeordnet haben möchte, geht es kaum einfacher. Einen Klick auf die große Schaltfläche Pack UVs wird einen Großteil der Anwender schon zufrieden machen. Das Programm packt dann die verschiedenen zusammenhängenden Segmente ziemlich effizient in den UV-Rahmen, und das normalerweise deutlich besser, als es der 3ds Max eigene UV Packer machen würde.

Bei jedem erneuten Aktivieren der Schaltfläche „Pack UVs“ wird die vorherige Berechnung verworfen und die Software nimmt das initiale UV-Layout als Basis für die nächste Berechnung, die leicht andere Ergebnisse haben kann. Möchte man das UV-Layout wirklich final fixieren, muss der Modifikatorstapel kollabiert werden. Das klingt natürlich unsinnig in einem prozeduralen Workflow. Jedoch könnte man das mit einer Kopie des Originals machen und darauf einen UV-Unwrap-Modifikator legen, der dann auf das Original kopiert werden kann.

Zuerst aber mal zu den Einstellungen, die man vornehmen kann, um sicherzugehen, dass das Plug-in die bestmögliche Arbeit leistet. Im zweiten Rollout mit dem Titel „Packing Devices“ lässt sich definieren, welche Hardware genutzt werden soll. UVPackmaster kann die CPU sowie die GPU zur Berechnung verwenden. Normalerweise ist das Häkchen schon gesetzt, um alle verfügbaren Ressourcen zu nutzen.

Weitere Qualitätseinstellungen finden sich im Rollout „Basic Options“. Neben der Definition, welcher Map Channel genutzt werden soll, lässt sich über einen Schieberegler einstellen, wie viele Threads zur Verfügung gestellt werden sollen. Auch Basic Margin, also der gewünschte Abstand zwischen den UV-Islands, wird hier vorgegeben. Da dieser Abstand schon vor der Berechnung auf die Islands draufgepackt wird und dann danach alle Islands skaliert werden, um in UV-Rahmen zu passen, kann man so keinen wirklich genauen Pixelwert definieren. Eine genauere Berechnung des Abstands kann mit Pixel Margin im Rollout „Advanced Options“ erreicht werden. Dabei wird der Abstand zwischen den Islands über den Schieberegler „Pixel Margin“ eingestellt, und der Abstand zum Rand der UV-Tile über den Schieberegler „Pixel Padding“. Sowie der Wert vom Pixel Margin einen Wert von über 0 hat, wird Basic Margin ignoriert und diese genauere Methode angewandt. Auch hier lässt sich die Rechengenauigkeit über den Regler „Adjustment Time“ auf Wunsch erhöhen.

Der wohl wichtigste Regler ist der für die Präzision im Rollout „Basic Options“. Je hö- her dieser Wert gesetzt wird, desto genauer wird die Berechnung. Natürlich erhöht sich dabei auch die Rechenzeit. Der vorgegebene Wert von 200 reicht aber meistens aus. Wenn man mit einem sehr geringen Abstand zwischen den Islands arbeiten möchte, kann man den Wert erhöhen. Ein Wert von über 1.000 wird nur selten empfohlen und führt auch zu deutlich höheren Berechnungszeiten. Andererseits kann auch ein zu tiefer Wert zu Ungenauigkeiten wie Überlappungen führen. Durch die Einstellungen beim Pixel Margin haben die Islands genügend Platz zueinander sowie Raum zum Atmen zum UV-Rand. In den Optionen für Pixel Margin lässt sich definieren, wie viel Abstand zwischen den Islands sowie zum Rand hin bewahrt werden soll. Ist das Häkchen bei „Rotation Enable“ gesetzt, kann der Algorithmus auch Islands drehen, um sie besser zu verstauen. Darunter lassen sich die Winkel einstellen, in welchen Rotation Steps die jeweilige Island gedreht werden darf. Der Standardwert erlaubt eine Drehung in 90-Grad-Schritten. Kleinere Werte ermöglichen vielleicht eine bessere Ausnutzung der UV-Fläche, erhöhen aber auch wieder die Berechnungszeiten.

Will man noch ein paar Pixel mehr an Optimierung herausquetschen, kann im Rollout „Heuristic“ das Häkchen für „Enable Heuristic“ angewählt werden. Das bringt das Add-on dazu, nicht gleich die erste Lösung zu verwenden und noch weitere, vielleicht bessere Verteilungen zu finden. Damit sich UVPackmaster nicht totsucht, lässt sich an einem Schieberegler darunter die Zeit in Sekunden einstellen, wie lange neue Verteilungsoptionen gesucht werden sollen. Lässt man den Schieberegler auf 0, wird das Programm bis in alle Ewigkeiten nach der besten Lösung suchen, bis der Anwender durch das Drücken der Escape-Taste ein Ende der Suche fordert und das Ergebnis sehen will. Die Nutzung von Advanced Heuristic wird vom Autor jedoch nur für ein Modell mit wenigen UV-Islands empfohlen. Die dadurch erweiterte Suche wird einen anderen Algorithmus für die Positionierung und Drehung der UV-Islands verwenden.

Beim Packen der einzelnen Islands müssen diese meistens skaliert werden, um in die gewünschten Bereiche zu passen. Von Haus aus skaliert UVPackmaster, abgesehen von wenigen Ausnahmen, alle UV-Islands proportional zueinander. Deswegen ist es auch wichtig, im darunterliegenden UVW-Unwrap-Modifikator schon für die entsprechende Proportionalität unter den UV-Islands zu sorgen. Falls ein Bereich mehr Texturauflösung erhalten soll, müssen diese UV-Islands im UVW Unwrap schon entsprechend groß skaliert werden im Vergleich zu den anderen UV-Islands.

Pack to Others

Es kommt immer mal wieder die Situation auf, in der zu einem fertig abgewickelten Modell Teile hinzugefügt werden oder manche Bereiche eine neue Abwicklung benötigen. Danach kann man versuchen, diese Islands von Hand in dem bestehenden Layout zu verteilen oder alles neu packen lassen und somit das vorherige Layout zu verlieren. Das ist ja nicht immer etwas Schlimmes. Wenn man aber schon einige Texturen vorbereitet hat oder Texturen gebacken hat, möchte man jedoch gerne so wenig Arbeit wie möglich verlieren. Hier kommt die Option „Pack to Others“ im Rollout „Advanced Options“ ins Spiel. In diesem Fall werden nur die ausgewählten Islands in das bestehende Layout eingefügt. Lediglich der Workflow dazu fühlt sich für mich ein wenig holprig an. Man muss im darunterliegenden Unwrap-UVW-Modifikator die gewünschten UV-Islands auswählen, dann den Modifikator „UV PackMaster“ drauflegen und darin diese Funktion ausführen. Zudem werden diese ausgewählten Islands skaliert, um in die vorhandenen freien Stellen zu passen, und bekommen somit eine andere Texel Density als der Rest. So praktisch diese Funktion auch sein kann, man sollte sich gut überlegen, wann man sie nutzt.

Da wir uns schon beim Thema Skalieren befinden und falls man sein UV-Layout schon so skaliert hat, damit es einer definierten Texel Density entspricht, kann man im Rollout „Advanced Options“ ein Häkchen bei „Fixed Scale“ setzen, und die UV-Islands werden beim Packen nicht skaliert. Natürlich schränken wir dadurch ein paar Freiheiten für die Verteilung ein. Falls jedoch zusätzlich die Option „Tiles“ im Packing Mode gewählt wurde, kann UVPackmaster bei eingeschalteter Option „Fixed Scale“ die Islands auf die nächste Tile packen, falls es in der jeweiligen Tile keinen sinnvollen Platz findet.

In den letzten Jahren ist das Thema UDIMs immer wichtiger geworden. Wo frü- her ein Multi-Sub-Material genutzt wurde, nimmt man heute mehrere UV-Kacheln für ein Material, um so eine höhere Auflösung der Textur zu erhalten. In UVPackmaster kann im Rollout „Advanced Options“ unter „Packing Mode“ eingestellt werden, ob alle UV-Islands auf eine Kachel verteilt werden sollen oder auf Tiles. Zusätzlich hat man die Optionen „Group to Tiles“ und „Group Together (Experimental)“. Für das einfache Verteilen auf Tiles kann der Anwender direkt darunter einstellen, auf wie viele Tiles die UV-Islands verteilt werden sollen, und darunter, wie viele Tiles eine Reihe ergeben, bevor die nächste Reihe an Tiles bevölkert wird.

Die Funktion „Group to Tiles“ bietet interessante Möglichkeiten. So kann man die Verteilung der Islands auf die verschiedenen Tiles nach unterschiedlichen Kriterien definieren. Die Option nach Material wird die Islands entsprechend ihres Materials oder Untermaterials in einem Multi-Sub-Material-Workflow auf unterschiedliche Tiles verteilen. Mögliche Vorteile dabei sind, dass vielleicht ein Material auch transparente Bereiche hat und ein anderes nicht. Wenn jetzt alle Islands wild über alle Tiles verteilt sind, kann es passieren, dass man eine zusätzliche Opazitäts-Map hinzufügen muss, obwohl nur ein winziges Bauteil auf dieser UV-Kachel diese Map benötigen würde. Des Weiteren lässt sich auch die Kategorie Object, Mesh Part oder Similarity auswählen, um die Verteilung auf die verschiedenen UDIM-Tiles zu definieren.

Falls man das komplett selber definieren möchte, kann man auch die Option „Pack Selected“ im Selection Mode einstellen und sich einen Modifikatorstapel bauen, in dem jeweils ein paar Islands in einem UV-Unwrap-Modifikator ausgewählt sind, gefolgt von einem UVPackmaster-Modifikator, der die ausgewählten Islands auf der UV-Kachel verteilt. Im Rollout „Packing Box“ kann die Tile definiert werden, auf die man diese Islands platzieren möchte. Dann kommt der nächste UVW-Unwrap-Modifikator, in dem weitere Islands ausgewählt werden können, und dann wieder ein UVPackmaster-Modifikator darauf, der die jetzt ausgewählten Islands platziert. Ja, es ist ein bisschen verschachtelt, aber ein Weg zum Ziel.

Oft werden mehrere UV-Islands aufeinandergelegt, um so Platz zu sparen und dadurch eine bessere Texturqualität zu erhalten. Das kann die gespiegelte Hälfte des Modells sein oder auch nur einige Teile wie Reifen, Schrauben oder Ähnliches. Das geht natürlich nur, solange man keinen Schmutz oder andere klar erkennbare Muster nutzt oder Informationen von einem Modell daraufbacken möchte. Langer Rede kurzer Sinn, es gibt ein Pulldown im Rollout „Advanced Options“ namens „Lock Overlapping“, in dem definiert werden kann, ob die Überlappung von Islands ignoriert werden soll und diese einfach frei nebeneinander verteilt werden sollen oder ob sich überlagernde Islands als Einheit beibehalten werden sollen. Dabei kann man zwischen Exact oder Any Part unterscheiden. Im ersten Fall muss die Bounding Box genau passen, im zweiten Fall reicht eine partielle Überlappung, um die Islands zusammenzuhalten. Das Schöne an diesen zwei Optionen ist, dass man so auch klar einstellen kann, dass man zwar Überlappungen beibehalten, aber versehentliche Überschneidungen separieren möchte.

Während die meisten Texturen quadratisch angegeben sind, ist es nicht immer sinnvoll, solch eine quadratische Textur zu haben. Eine Schlange zum Beispiel müsste in etliche Segmente unterteilt werden, um die Anforderungen einer quadratischen Textur zu erfüllen. Dadurch würden unnötig viele Schnitte in der UV-Abwicklung entstehen, die wiederum Probleme mit der Kontinuität der Texturen entstehen lassen könnten. Dafür kann man in UVPackmaster die Proportionen der Tiles definieren. Im Rollout „Texture Dimensions“ können ganz klar die gewünschten Dimension der zu nutzenden Textur angegeben werden. Hier gibt es einerseits den aufwendigeren manuellen Weg, indem man schon im UV-Unwrap-Modifikator darunter die entsprechenden Proportionen definiert und im darüberliegenden UVPackmaster-Modifikator die Häkchen bei „Lock Dimensions“ und bei „Adjust UV Map to Texture“ entfernt und die entsprechenden Pixelwerte eingibt. Alternativ kann man das auch abkürzen, indem man das Häkchen bei „Lock Dimensions“ entfernt, die Pixelwerte für die Höhe und Breite definiert und einfach das Häkchen bei „Adjust UV Map to Texture“ setzt.

Im untersten Rollout „Statistics“ wird danach angezeigt, wie viele Iterationen berechnet wurden und wie viel Zeit dafür aufgewendet wurde. Informativer für den Anwender ist wahrscheinlich jedoch die Angabe der effizient genutzten Fläche im gemachten UV-Layout. Diese Information erhält man auch in einem kleinen Extrafenster nach dem Packvorgang.

Man kann sich im obersten Rollout auch das Layout vom darunterliegenden UV-Unwrap-Modifikator anzeigen lassen und so dieses Tool zur Analyse nutzen, wie viel der Fläche effektiv genutzt wurde. Schade jedoch, dass die Analyse im Rollout „Statistics“ nur den Durchschnitt der insgesamt genutzten Fläche angibt anstelle von pro Kachel. Aber das ist schon Meckern auf höherem Niveau.

Group

Eine weitere angenehme Sache bei UVPackmaster ist das Lizenzmodell. Auch wenn sich immer mehr Firmen diesem hässlichen Mietzwangmodell anschließen, ist es beim Erwerb von UVPackmaster nicht so. Man zahlt ein einziges Mal diesen sehr geringen Preis und hat eine lebenslange Lizenz, die zusätzlich auch alle zukünftigen Updates beinhaltet. Daran sollten sich die anderen noch großen Player in der Branche ein Beispiel nehmen. Wir Kunden zahlen ja gerne den Preis fein gutes Werkzeug, wenn nicht noch zusätzlich unsere Werke zwangsläufig als Geisel genommen werden.

Fazit

Alles in allem bin ich sehr zufrieden mit diesem Tool. Als penible Person in manchen digitalen Bereichen verbringe ich oft viel Zeit, um meine UVs so gut wie möglich zu verteilen. In meinen Tests bemerkte ich, dass ich oft eine ähnliche Effizienz der Flächennutzung erreicht hatte, wie es auch der UVPackmaster bewerkstelligte. Man könnte jetzt denken, dass ich deswegen dieses Werkzeug eigentlich nicht benötigen würde. Aber das, in das ich viel Zeit investiere, macht dieses Tool einfach in ein paar Sekunden. Wer also gerne ein wenig mehr Privatleben haben möchte oder auch einfach nur seine Zeit für andere Aufgaben nutzen möchte, könnte sich die Anschaffung dieses Hilfsmittels schon überlegen

Kommentar schreiben

Please enter your comment!
Please enter your name here

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.