ST-Maps

(dokumentiert von Patrick Heinen)

Vorneweg, STmaps sind super! :D Wenn man sie erst einmal kennen gelernt hat, wird man schnell anfangen, sie inflationär zu benutzten ;)

Die Funktionsweise der STmap beruht auf dem Prinzip der UV Map, bei der die x und y Werte der Pixel in Graustufen dargestellt werden. Dabei werden meistens die x Werte in den Rotkanal und die y Werte in den Grünkanal geschrieben. Die Repräsentation einer Flachen UV Map ist also ein Rotverlauf in x Richtung und ein Grünverlauf in y Richtung.

Jedes Pixel ist hierbei durch einen bestimmten Farbwert definiert z.B. das Pixel an der Stelle (0|0) durch ein schwarzes Pixel mit den RGB-Werten(0|0|0).

Verändere ich also den Farbwert eines Pixels, so verschiebe ich dieses.

Und genau das macht die STmap Node in Nuke, sie geht von einer flachen UV-Map aus und verzerrt das Bild(Source) entsprechend der im STmap Input eingesteckten STmap. Man muss jedoch in der STmap Node wählen, welche Kanäle er als u und v nehmen soll, in unserm Fall ist dies rgb (r=u g=v).

Schön und gut, aber was bringt mir das? STmaps sind vor allem bei rechenaufwendigen Transformationen praktisch, weil man die Transformation oder Verzerrung so einmal berechnen kann, danach aber das Bild noch jederzeit verändern kann.

Anwendungsbeispiele:

Ein SplineWarp mit einer STMap:

Wir wollen einen Teil des Bildes verschieben, der Übergang dazu soll jedoch weich sein. Mit einem einfachen Transform klappt das nicht, da dieser keinen Maskeninput hat.

Als erstes brauchen wir eine normale UV Map, diese erstellen wir am besten durch eine Expression node, bei der wir r=(0.5+x)/width und g=(0.5+y)/height setzen. (Wichtig, die UVMap muss das gleiche Format wie das zu bearbeitende Bild haben, im Zweifelsfall einen schwarzen Constant davor hängen).

Nun transformieren wir diese UVMap so wie wir unser Bild transformieren wollen. Anschließend nutzen wir einen KeyMix um die originale UVMap und die transformierte UVMap zu mischen. Dabei nehmen wir eine Roto für den Bereich, der transformiert werden soll und stecken diesen in den Mask Input des Keymix. Über den Feather steuern wir nun, wie stark zwischen Anfangs- und Endposition gewarpt wird. Über den Mix Regler im KeyMix können wir zudem noch die Stärke der Transformation regeln.

Man kann in den Transform auch die Werte eines Trackers kopieren und kann somit einen Teil des Bildes stabilisieren während der andere unstabilisiert bleibt.

Eine Textur tauschen dank UVmap:

Wir alle wissen es, 3D Renderings brauchen für Comper-Verhältnisse ewig und dann passt auch wieder irgendwas nicht und wir stehen kurz vor der Abgabe. Da kommt die STmap uns mal wieder zur Hilfe. Wird UVMap (xRot- und yGrünverlauf siehe oben) als Map für ein 3D Object genutzt, so ist es für den Comper später relativ einfach, die Textur noch etwas anzupassen oder auszutauschen. Natürlich geht dies nur in gewissem Maße (schließlich wird die komplette Lichtberechnung außer Acht gelassen)

Nehmen wir an, irgendein Praktikant hätte die schöne Textur unserer tollen Geometrie versaut indem er ganz viele bunte Punkte drauf gemalt hat. Wir könnten ihn jetzt hinsetzen und die Punkte einzeln in der total kranken Kamerafahrt rausretuschieren lassen. Aber dafür würde er ewig brauchen und bestimmt wieder irgendwas anderes kaputt machen ;) Aber wir haben ja unsere UVmap und der schlaue 3D Artist hat uns diese zum Glück auch rausgerendert.(Der Anschaulichkeit wegen mach ich hier alles in Nuke, dass wir die UVmap auch aus Maya und co rendern können versteht sich)

Wir haben zum Glück noch eine alte Version der Textur die bis auf die bunten Flecken identisch ist.(also immer schön alles versionieren!) Jetzt müssen wir nur noch die Textur als Source und die UVmap als STmap in die STmap Node stöpseln und fertig!

Ich hoffe, dass ich dem ein oder anderen durch diese Beispiele veranschaulichen konnte, was die STmap Node in Nuke tut. Dabei wie ihr sie nutzt, ist eurer Phantasie keine Grenzen gesetzt ;) Hier ein weiteres Anwendungsbeispiel mit Tutorial vom Flo.