Wie schon hier berichtet:
ist der Unwrapper seit heute in der freien Wildbahn.
Da es bisher kaum Tutorials dafür gibt hat der Entwickler selbst die Initiative ergriffen und einige einleitende Worte geschrieben:
Written by Francois Guillet
Dieser Artikel behandelt den Vorgang des Unwrappens von Polymeshobjekten und das Mapping von Texturen auf die entstehenden flachen Netzstücke.
Wie funktioniert das?
Der Zweck des Programmes besteht darin eine Textur auf eine Polymeshoberfläche zu mappen. Dieser Vorgang wir " genannt,
weil jede Koordinate einer UV Koordinate (vergleichbar X/Y Koordinate) in der Textur entspricht.
Für die Einfachheit sei angenommen die Textur wäre ein flaches Pixelbild.
Es gibt 2 Wege das Ziel zu erreichen. Der erste ist jeden Mesh Vertex einer Koordinate im Bild entsprechen zu lassen. Das ist einfach, dennoch arbeitet es nicht wie beabsichtigt. Wenn man ein Bild um ein Objekt legt werden sich seine Kanten irgendowo treffen. Oder - anders gesagt - wenn man ein Bild um ein Volumenkörper legen will muß man Einschnitte in die Textur machen um das (rechteckige) 2D Bild um das Objekt perfekt passen zu lassen. Denken Sie mal an die ausgeklappte Erdansicht in den alten
Schulatlanten... (Anm. des Übersetzers - kommt nochmal vor).
Das bedeutet das ein Vertexpunkt 2 UV Koordinaten haben kann - je nachdem auf welcher Seite der "Naht" (Seam) er sitzt.
So ist die naheliegendste Möglichkeit des UV Mappings die Vertices auf der Basis "per Face" (per Fläche/Polygon) zu mappen. Ein Vertex kann verschiedene Koordinaten haben , abhängig von dem Polygon an dem er "sitzt", er hat soviele Koordinaten wie er Polygone hat die ihn miteinander
teilen (Bei reinen Quads also bis zu 4).
Seams (Trennnähte)
Seams sind nicht nur eine Möglichkeit eine Textur um ein Mesh Objekt zu legen, es ist auch ein unabdingbarer Schritt um das Mesh Objekt flach zu machen - zumindest für geschlossene Objekte.
Denken Sie an eine Kugel - z.B. die Erde. Um eine Map von ihr zu erhalten, muß man Einschnitte erstellen und dann auspacken und flach hinlegen.
Wie auch immer - es gibt verschiedene Methoden das zu tun - weshalb auch die Darstellungen in Atlanten von Kugelförmig flach bis hin zu sog. Longitudialmaps gehen.
Je mehr man die Oberfläche einschneidet, desto einfacher ist es sie abzuflachen. Einfacher bedeutet hier aber auch weniger Verzerrung! Weil es inder Mehrheit nicht möglich ist das Mesh flach zu machen, sind flachgemachte Meshes eine Annäherung an das Original Mesh. Eine Extremsituation wäre ein Dreiecksmesh in seine Dreiecke zu zerlegen - das wäre verzerrungsfrei -> andererseits wäre das So kompliziert zu mappen das man diesen Weg in den seltesten Fällen geht.Das Ziel ist also die Trennnähte so geschickt zu legen das man möglichst wenig Teile erhält und
dennoch die Verzerrung so klein wie möglich hält.
Seams werden nötigerweise an Meshkanten entlang gelegt. Um sie zu bestimmen, wählt man einfach die Kanten aus und wählt den Befehl Edge -> Mark selektion as seams. Sie können alle Seam Bearbeitungskommandos benutzen um Kanten zu entfernen oder hinzuzufügen. Wenn die Seams markiert sind und Sie denken das es ausreicht können Sie mit dem Unfolding Prozeß fortfahren.
Öffnen Sie die Seams nicht!! Darum kümmert sich der Unfolding Befehl. "Open Seams" gibt Ihnen nur zusätzlich ein Einflußmöglichkeit das Mesh zu öffnen wenn es notwedig sein sollte! Bitte nicht verwechseln!
Weiter mit Unfolding und Mapping
Der erste Schritt zum erfolgreichen Mesh Unfolding ist, zu entscheiden ob man Seams benötigt, und wenn ja, - dann wo?! Seams sind spezielle Kanten an denen das Mesh Objekt vom Unwrapper geöffnet wird während des Unfolding Prozesses vor dem "Flatten". Eni Mesh das mit einigen Seams belegt war resultiert möglicherweise in einige Mesh Stücken.
Schlußendlich wird der Mesh wenn alle Kanten als Seam ausgewiesen werden, als Sammlung einzelner Flächen entfaltet. Während diese Situation sehr akkurat ist (Keine Verzerrung) ist es äußerst unpraktisch soetwas zu texturieren. Natürlich wird an jedem Seam eine (Textur)- Diskontinouität
erzeugt - zumal die ehemals aneinanderliegenden Flächen nun getrennt sind. In einigen Fällen wird es gut möglich sein die Textur auf beiden Seiten gleich zu erhalten, aber tatsächlich wird häufiger eine Naht zu sehen sein. Glücklicherweise sind diese Nähte häufig im Bereich hoher Krümmung anzutreffen - oder Plätze mit Diskontinuität wie scharfe Kanten - an denen auch in der "Natur" die Textur häufig ändert (z.B. geschnittenes Brett).
Die Platzierung von Seams an genau diesen Stellen hilft den Unfolding Prozess zu unterstützen und minimiert die Verzerrung. In wieviele Stücke das Mesh geteilt wird hängt von Ihnen und dem was sie erreichen wollen ab. Wie auch immer - geschlossene Mesh Objekte können nicht ohne Seams
entfaltet werden! Der Editor findet dazu keine Lösung...
Seien Sie sich darüber im Klaren das jede Veränderung am Mesh die Topologie betreffend - also z.B. Vertices hinzufügen oder löschen - die Nähte in Vergessenheit geraten läßt. Das wird sich in der Zukunft noch ändern - aber augenblicklich sind Seams und Mesh Unfolding Operationen die
am fertigen Mesh ausgeführt werden sollten. Also andererseits können Sie sich so darauf vorbereiten das Entfalten und die Vorbereitung dazu nochmals durchzuführen... wenn Sie den Mesh editieren.
Seams zuweisen wird ausgeführt durch Kanten Selektion und dem Aufrufen des Befehls "Mark selection as seams". Der Vorgang kann ermüdend sein - obgleich einige Befehle Ihnen das Leben erleichtern (Add selections to seams ect.) - zukünftig wird es mäglich sein mit Semi-Automatismen Seams zuzuweisen. Zur Zeit jedoch muß das von Hand erledigt werden.
cube_seams.jpg
Lassen Sie uns nun ein bischen praktisch werden und die nötigen Seams setzen, um einen Würfel zu entfalten. 7 Seams sind notwendig um den Würfel zu einem Kreuz wie unten zu entfalten. Erstellen
Sie einen PME Würfel (Cube) und selektieren Sie die 7 Kanten wie im Bild gezeigt. Wählen Sie Edge -> Mark selections as seams aus dem Kanten Menü. Sie werden feststellen das die Kanten jetzt blau markiert sind. Ausgewählte Seams erscheinen in hellem Blau wenn Sie nicht ausgewählt werden in dunklerem Blau.
Bevor wir nun den Würfel entfalten werden wir eine UV Textur dafür erstellen. Wir kreieren dafür eine prozedurale 2D Textur mit einem Schachmuster Modul das wir in eine "individuelle" Farbe (Custom colour) stecken (damit verbinden). Fügen Sie dazu eine linieare Transformation an das Schachmuster Modul um eine gute Skalierung über den UV Raum zu bekommen - also eine sinnvolle Größe. Hier sind die Einstellungen für diese schnelle Beispiel:
chess_texture.jpg
Als nächsten texturieren wir den Polymesh Würfel mit dieser Textur. Bestimmen Sie "" und gehen Sie auf "UV Koordinaten bearbeiten" -> klicken Sie im sich öffnenden Fenster den Button
"Jede Fläche einzeln abbilden/mappen" (s. unten). Dies ist ein sehr wichtiger Schritt! Das normale in AoI läßt vertices auf einer 2D Textur plazieren - was das Mapping auf eher flache Objekte limitiert - also Meshes die keine Seams brauchen.
Für andere Meshes bedeutet das das die Vertices entlang der Seams doppelt vorhanden sind. Sie sind 2mal oder noch öfter vorhanden (s. Erklärung oben). Also muß ein Face das diesen Verticepunkt enthält auch wissen welcher Vertexpunkt da ist, bzw. umgekehrt.
Es gibt also nur einen gegebenen Vertex/Punkt pro gegebenem Face - deshalb heißt dieses Mapping "Per Face per vertex" also "Per Polygonfläche per Punkt". Dieser Modus wird also aktiviert wenn wir die Checkbox "Jede Fläche einzeln abbilden/mappen" klicken. Der olymesheditor arbeitet ausschließlich mit dieser Methode - auch wenn es für flache Objekte nicht zwingend nötig ist.
Nun ist es an der Zeit das Mesh zu entfalten. Wählen Sie den Befehl Textur -> Unfold Mesh. Ein Dialogfenster öffnet sich, das auf den Druck auf den Proceed (Weiter) Button wartet. Die Tatsache das der Prozeß hier stoppt ist der Möglichkeit zu verdanken das der Benutzer hier eingreifen und
Parameter des Prozesses beeinflussen kann um den Ansprüchen besser gerecht zu werden. Das diese Parameter eher als "Advanced" also Fortgeschritten gelten kann man auch einfach auf den Proceed Button klicken. Im Augenblick also bitte letzteres - <<Proceed>>.
Nun wird Text angezeigt der folgendes beeinhaltet:
« Initial residual: 0.0
Target residual: 0.001 »
In diesem Fall schafft es der Unwrapper ein absolut exacktes Ergebnis herbeizuführen - der Entfaltungsprozess muss keine Verzerrungen oder Verziehungen korrigieren. Validieren Sie und das Fenster verschwindet.
uv_window.jpg
Der linke Teil des Fensters enthält ein paar Informationen und Einstellungen. Die UV Koordinaten Bereiche sind links oben gezeigt. Weiter ist das aktuelle Mapping angezeigt. Sein Name ist «Mapping #1 », aber das kann unter using Mapping -> Rename Mapping einfach behoben werden. Sie können soviele verschiedene Mappings wie Sie wollen erstellen - jedes hat sein eigenes Set von Verticepunkten Positionen. Beachten Sie: Jedes Mapping benötigt auch Speicher um diese Positionen zu speichern. Wenn das Mesh Objekt richtig groß ist kann sich das bemerkbar machen - bei unserem
Beispiel hier sicher nicht. Natürlich kann nur ein Mapping zur Zeit aktiv sein. Aber diese Option kommt dann gelegen wenn man ein neues Mapping erstellen möchte und das dann doch nicht so gut ausfällt... -> man kann dann noch auf das alte zugreifen.
Die nächste Dropdown Liste ermöglicht den Zugriff auf die aktuelle Textur. Das ist dann sinnvoll wenn man eine Textur aus mehreren Layern besteht und man jeder Layerschicht ein eigenes Mapping zuweisen kann. Auf diese einzelnen Layer läßt sich hier zugreifen.
Zuletzt gibt es noch ein Komponenten Dropdown damit man auf einzelne Komponenten der aktuellen Textur zugreifen kann um den Mapping Prozess zu unterstützen. Alle Komponenten einer Textur teilen dasselbe Mapping.
Wenn keine "Per Face per Vertex" Textur für das entfaltete Mesh Objekt benutzt wird sind diese Dropdown Felder unwirksam und es wird ein weißer Hintergrund gezeigt. Das ist dafür gedacht wenn man erst das Unwrapping durchführt und es als Bitmap (*.bmp ist z.Zt. das einzige Exportformat für diese Texturen) exportiert um es zu bemalen. Wir diskutieren das später nochmals.
Das mittlere Fenster zeigt das aktuell entfaltete Mesh oder Mesh Stücke mit der darunterliegenden Textur an. In diesem Beispiel ist das Würfel Mesh immer noch ein Stück. Rechts oben ist ein Fenster das die Teile anzeigt - das aktuell gezeigte Stück ist aktiv (unterlegt) - nur das aktive Teile ist von Bearbeitungs-Operationen betroffen. Die anderen Teile sind ausgegraut. Es kann nur ein aktives Teil z.Zt. geben. Die Teile können auch umbenannt werden mit Edit->Rename Selected Piece. Unter der Teileliste ist eine Vorschau des gemapten Objekts zu sehen.
Weiterhin sieht man selektierte Teile des Meshes in der 3D Ansicht als kleine rote Kugeln - sofern die Option Preferences -> show Vertex selection on preview angewählt ist. Wenn das Mesh gesmooth ist werden die Originalpositionen des Käfigs gezeigt. Das erklärt auch, warum sie auf der Oberfläche gezeigt werden.
Für eine bessere Antwortzeit benutzen Sie bitte den Raster Renderer von AoI für die Textur Vorschauen - diese Option ist in AoI unter den Voreistellungen zu finden...
Im Augenblick müßen wir das Mapping so arrangieren, das die Schachbretttextur auf den Würfel passt. Das ist eben mit dem normalen Layout nicht der Fall. Alle Vertices auswählen per dragging auswählen (oder mit dem select all Befehl) und bewegen Sie das Objekt so das ein Vertex über der Schachbrett Textur an einer Ecke passt. Jetzt den Manipulator an diesen Vertex führen mit Hilfe von STRG-klick-drag auf dem Manipulatorzentrum (die kleine Silberkugel). Der Manipulator wird nun auf dem Vertex verankert und mit Hilfe der Skalierungs-Handles passt man nun die Größe des Meshes an die Textur an.
Tipps :
- Die Kanten wurde hier dargestellt mit dicken Kanten (ein Option) damit sie leichter vom Hintergrund zu unterscheiden sind. Man kann das über Preferences->Bold Edges abstellen. Man kann auch die Farbe der Kanten kann so eingestellt werdendas man diese nicht mit dem Hintergrund verwechselt. Einfach Mapping -> Change Edge Color benutzen. Diese Einstellungen sind dauerhaft und jedem Mapping kann eine eigene Farbe zugewiesen werden.
- Die kann skaliert und gepant werden mit denselben Shortcuts wie in den AoI Ansichten. Wenn Sie die Ansicht skalieren versichern Sie sich das sie ein passendes Sampling verwenden (Je höher je ungenauer - aber schneller) - damit die Antwortzeiten schnell bleiben.
- Wenn Sie UMSCHALT-Rechtsklick und STRG-UMSCHALT Klick verwenden dann bewegen oder skalieren Sie alle Teile zusammen und bewegennicht die Ansicht. Diese Eigenschaft hat der Manipulator NUR im UV Mapper!
Sie sollten das Mesh nun so skalieren und verschieben das das folgende Layout erreicht wird (Die Kanten sind hier rot dargestellt damit sie vor dem Schachmuster hervortreten). Wenn das Mesh nun umsichtig geschoben wurde kann eine nahtlose Textur erreicht werden. Das ist nahezu der Fall im Bild hier unten (Der Würfel wurde auf approxiamte smoothing /angenähertes Smoothing gestellt).
...Auch wenn hier eine minimale Diskrepanz nicht wegdiskutiert werden kann...
-> Sie können das besser!
chess_unfolding.jpg
chess_smoothed.jpg
Wird fortgesetzt...