Maya 6: Motion Vectors und Occlusion Baking

Transcription

Maya 6: Motion Vectors und Occlusion Baking
144 : 01 : 05 : DIGITAL PRODUCTION
WORKSHOP
Aufgrund des technischen Fortschritts bei den
Render Engines lassen
sich durch Verfahren wie
Raytracing und Ambient
Occlusion immer realistischere Bilder generieren.
Trotz zunehmend höherer
Prozessor-Taktraten laufen diese Vorgänge jedoch
sehr langsam ab und
eignen sich deshalb nicht
uneingeschränkt für den
Einsatz in zeitkritischen
Produktionen. Dieser
Workshop zeigt anhand
einer simplen Beispielszene, wie sich mithilfe einiger Tricks Szenen für ein
schnelleres Rendering
optimieren lassen.
Die Beispielszene dieses Workshops nach dem Compositing
Maya 6: Motion Vectors
und Occlusion Baking
Immer wieder tauchen im Internet wunderbare Bilder auf, die auf
eindrucksvolle Weise demonstrieren, zu welchem Realismusgrad
die heutigen Renderer fähig sind. Versucht man jedoch, diese
Features in den eigenen Animationen einzusetzen, stößt man
sehr schnell an Grenzen. Schließlich haben die wenigsten User
eine Multi-Prozessor-Renderfarm unter dem Schreibtisch stehen
und können es sich leisten, mitunter zwölf Stunden und länger auf
die Berechnung eines einzelnen Frames zu warten. Solche Zeiten
kommen leicht zustande, wenn Features wie Ambient Occlusion,
Raytracing und Motion Blur zur selben Zeit in komplexen Szenen
eingesetzt werden.
Das folgende Beispiel hat seinen Ursprung in einer aktuellen Produktion, bei der eine große Rasenfläche im Bild zu sehen sein soll.
Das Gras selbst wurde mithilfe von Paint Effects erstellt. Da alle
anderen Elemente der Szene mit Mental Ray gerendert wurden,
galt es den Look der Grasfläche an die übrigen Layer anzugleichen,
die mit Ambient Occlusion und teilweise sogar mit Final Gathering
berechnet wurden. Paint Effects lassen sich unter normalen Umständen nur mit dem Maya Software Renderer generieren. Als
Post-Effekt weisen sie zudem noch die üblichen Probleme wie
mangelhaftes Anti-Aliasing auf. Aus diesen Gründen musste in
der genannten Produktion ein Workaround gefunden werden, um
eine höhere Bildqualität zu erzielen.
Dazu wurden die Paint Effects Strokes in Polygone umgewandelt,
so dass es möglich war, diese mit Mental Ray zu rendern. Allerdings erwies es sich als schier unmöglich, so viele Polygone mit
Ambient Occlusion und Motion Blur gleichzeitig zu berechnen.
Die Lösung bestand darin, diese Informationen zu baken. Dieser
Prozess wird im Folgenden etwas deutlicher erläutert. Als Testsystem für diesen Workshop diente ein Pentium 4 mit 3,5 GHz und
einem GByte RAM.
SETUP DER BEISPIELSZENE
Der Boden ist eine einfache Nurbsplane, auf die eine Erdtextur
gemappt wurde. Die Rendercam sollte animiert sein, um die
Auswirkungen des Motion Blurs besser zu verdeutlichen, da die
Bewegung des Grases allein zu subtil ist. Unter dem Menüpunkt
„Rendering – Paint Effects – Get Brush“ lässt sich der Visor aufrufen. Hier lassen sich viele Paint Effects Presets auswählen. Unter
„Grasses“ sollten Sie „GrassWindNarrow.mel“ wählen, da es sich
dabei um einen animierten Stroke handelt. Zeichnen Sie ein paar
Strokes auf die Groundplane und aktivieren Sie in den Settings
unter „Shadow Effects – Fake Shadow“ den Punkt „3D Cast“. Bei
Bedarf kann man nun noch ein wenig die Settings „tweaken“, um
einen schöneren Look zu erzielen. Zudem wird noch ein Light Setup benötigt, wobei beim Keylight Raytrace-Shadows aktiviert sein
sollten, damit für die Paint Effects auch ein Schatten generiert
wird. Bild 01 zeigt das Setup der Szene. Rendern Sie einfach mal
ein Bild aus der Mitte der Animation mit dem Maya Software Renderer, damit sie eine Vergleichsmöglichkeit haben. Raytracing und
Motion Blur sollten dabei aktiviert sein [Bild 02].
Um das Gras mit Mental Ray rendern zu können, müssen wir es
zunächst in Geometrie umwandeln. Wählen Sie dazu alle Strokes
aus und klicken Sie auf „Modify – Convert – Paint Effects to Polygons“. Sie werden sehen, dass die Szene nun einen ziemlich hohen
Polycount aufweist. Unsere Beispielszene hatte nach dem Konvertieren circa 100.000 Polygone.
Wenn Sie nun dieselbe Szene mit Mental Ray rendern, fällt zunächst einmal auf, dass die Renderzeit bei aktiviertem Raytracing
und Motion Blur merklich ansteigt. Auch optisch unterscheidet
sich das Bild deutlich von der mit Maya-Software gerenderten
Variante [Bild 03].
DIGITAL PRODUCTION : 01 : 05 : 145
MAYA 6: RENDERING MIT MENTAL RAY
[01] Das Setup der Szene
[02] Paint Effects mit Maya Software Renderer: Schnell aber nicht unbedingt überzeugend, die Renderzeit betrug 06:31 Minuten
(Raytracing, Motion Blur)
Das Gras wirkt insgesamt dichter und plastischer, im Allgemeinen
vom räumlichen Eindruck her aber nach wie vor recht flach. Um
hier einen besseren Eindruck von Plastizität zu erwecken, bietet
es sich an, einen Occlusion Pass mithilfe des Dirtmap Shaders zu
rendern (siehe Maya-Workshop in der DP 02:04). Allerdings ist es
kaum möglich, die Szene in einer halbwegs akzeptablen Zeit mit
Motion Blur zu berechnen [Bild 04].
[03] Paint Effects, konvertiert in Polygone,
gerendert mit Mental Ray. Renderzeit: 15:58
Minuten (Raytracing, Motion Blur)
[04] Dieselbe Szene rendert ohne
Motion Blur deutlich schneller.
Renderzeit: 1:08
Minuten (Raytracing, kein Motion
Blur)
MOTION VECTORS
Um dieses Problem zu umgehen, kann man den Motion Blur im
Compositing mithilfe des Plug-Ins „Reelsmart Motion Blur V.3“
hinzufügen. Dadurch lassen sich die Renderzeiten stark verkürzen. Zu diesem Zweck muss ein Motion Vector Pass gerendert werden, in dem die Bewegungsinformationen der Szene als RGB-File
kodiert werden. Dies ist mit dem Mental Ray Shader „lm_2dmv“
möglich (siehe Weblink im Kasten „Das brauchen Sie für diesen
Workshop“). Nach der Installation finden Sie diesen unter den
Mental Ray Materials.
Weisen Sie den Shader der gesamten Geometrie Ihrer Szene zu.
In den Mental Ray Render Globals müssen folgende Einstellungen
vorgenommen werden [Bild 05]:
Raytracing:
off. Erklärung: Zum Berechnen der Motion Vectors wird kein Raytracing benötigt.
Calculation:
Motion Blur: Exact Deformation. Erklärung: In diesem Beispiel würde auch theoretisch „Transformation“ ausreichen, da
die Bewegung im Bild durch die Kamerafahrt zustande kommt. Deformation
ist jedoch um einiges genauer und sollte
zum Beispiel immer dann aktiviert werden, wenn sich Geometrie verformt.
Shutter: 0.001. Erläuterung: Setzen Sie
diesen Wert nicht auf Null, da in Maya
sonst überhaupt kein Motion Blur berechnet wird. Verwenden Sie stattdessen
den kleinstmöglichen Wert.
Framebuffer Attributes: Data Type: RGBA (Short) 4x16 Bit.
Erklärung: Um eine höhere Genauigkeit
zu erzielen, sollte die Szene mit 16 Bit per
Kanal gerendert werden. Um diese Informationen weiter zu verwenden, müssen
Sie in den Common Render Globals ein
Bildformat wählen, das in der Lage ist,
diese Informationen abzuspeichern (etwa
SGI).
[05] Render Globals zum Berechnen der Motion
Vectors
Translation:
Customization:
Export Verbosity: Progress Messages
Export Custom Motion: On
Motion Back Offset: 0.000
Nach dem Rendern per „Render – Batch Render“ werden Sie eine
Art Falschfarben-Bild erhalten, in dem die Bewegungsinformationen gespeichert sind. Sehr wichtig: Rendern Sie in diesem Fall
nicht im Render View und speichern Sie das Bild eigenhändig ab.
Nur über die „Batch Render“-Funktion lassen sich die vollen 16 Bit
pro Kanal in ein File schreiben. Nachdem das Rendering beendet
146 : 01 : 05 : DIGITAL PRODUCTION
WORKSHOP
[06] Notieren Sie den Wert unter „Max Displace“
[07] Unter „Normalize Size“ muss der Wert
ausgewählt werden, der dem notierten Wert
„Max Displace“ am nahsten liegt
[08] Motion Vector Pass. Renderzeit: 00:18
Minuten (kein Raytracing, kein Motion Blur)
ist, notieren Sie sich den im Maya Output Window ausgegebenen
Wert für „Max Displace“ [Bild 06].
Dieser gibt Auskunft über die schnellste in diesem Frame vorkommende Bewegung. Wenn Sie den Shader für Ihre Animation
einrichten, sollten Sie also das Frame einmal testrendern, welches
augenscheinlich die stärkste Bewegung der gesamten Animation
aufweist. Für diesen Wert müssen Sie nun unter „Normalize Size“
den nächstgelegenen Eintrag in den Shader-Parametern selektieren [Bild 07]. Rendern Sie die Szene erneut per Batch Render, um
den finalen Motion Vector Pass zu erhalten [Bild 08].
[09] Die Settings für das Texture Baking
Selektieren Sie die Groundplane. Durch einen Klick auf „Convert“
wird der Baking-Prozess gestartet, der durchaus etwas länger
dauern kann. Dafür erspart man sich im Nachhinein jedoch lange Renderzeiten durch Raytracing. Nach dem Vorgang wird der
Dirtmap Shader automatisch durch einen Surface Shader mit der
gebakten Textur ersetzt.
DAS BRAUCHEN SIE FÜR
DIESEN WORKSHOP
AMBIENT OCCLUSION BAKING
Der Ambient Occlusion Pass lässt sich mithilfe des Dirtmap
Shaders rendern. Allerdings zeigt sich, dass auch hier die Renderzeiten aufgrund des Raytracings relativ lang sind. Um dies zu
umgehen, wird die „Ambient Occlusion“-Information in die Szene
gebaked. Sie muss auf diese Weise nur einmal berechnet werden.
Danach ist es möglich, die Animation ohne Raytracing deutlich
schneller zu rendern. Dazu kommen zwei verschiedene Techniken
zum Einsatz: Texture Baking für den Boden und Vertex Baking für
das Gras. Dies ist allerdings nur dann sinnvoll, wenn es sich bei
den Objekten, die gebaked werden sollen, um statische Hintergrundelemente handelt, die nicht in irgendeiner Art und Weise mit
animierten Objekten interagieren.
Weisen Sie für das Texture Baking der Groundplane den Dirtmap
Shader zu und stellen Sie sicher, dass in ihm die Werte für die Far
und Near Clipping Plane entsprechend der Szenengröße korrekt
eingetragen sind. Selektieren Sie unter „Render – Lighting/
Shading“ den Punkt „Batch Bake“ (Mental Ray).
Die Settings lauten wie folgt [Bild 09]:
Use Face Normals: On
Normal Direction: Surface Front
Bake to one map: On
Bitte nicht vergessen, die richtige Kamera auszuwählen. Die Auflösung der Textur richtet sich nach der jeweiligen Szenengröße
und hängt davon ab, wie nah die gebakten Objekte zu sehen sein
werden.
Um den in diesem Maya-Workshop vorgestellten Workflow
selbst auszuprobieren, brauchen Sie eine Reihe von MayaShadern, die jedoch allesamt kostenlos erhältlich sind. Zudem
benötigen Sie ReelSmart Motion Blur Pro V.3. Eine kostenlose
Demo-Version (mit Wasserzeichen) ist auf der RE:VisionFX
Website erhältlich. Die Vollversion kostet 149,95 Dollar.
Dirtmap Shader: Daniel „theBigMuh“ Rind’s Homepage, http:
//animus.brinkster.net/downloads/Dirtmap.zip
Z Shader: Pavel „Puppet“ Levin’s Homepage,
www.puppet.cgtalk.ru/download/index_e.shtml
Motion Vector Shader: LaMaison Homepage,
www.alamaison.fr/3d/lm_2DMV/lm_2DMV.htm
Vertex Color Shader: MR_cpvPACK v1.0,
www.highend3d.com/maya/plugins/
?group=mayaplugins&section=rendering
Maya Files für lm_2DMV: Horvatth Szabolcs Homepage,
www.impresszio.hu/szabolcs/MentalRay/
lm_2dmvMayaFiles.htm
RE:Vision FX ReelSmart Motion Blur V.3:
Demo-Version-Download,
www.revisionfx.com/mblurdownloads.htm
DIGITAL PRODUCTION : 01 : 05 : 147
MAYA 6: RENDERING MIT MENTAL RAY
[10] Flowchart des finalen Composits
Das Vertex Baking ging folgendermaßen vonstatten: Für die Grashalme wurde die Occlusion Information nicht in eine Textur, sondern als Vertex Color gebaked. Dies bot sich an, da es keinen Sinn
machen würde, das Gras per „Automatic Mapping“ abzuwickeln.
Für diesen Fall müsste in eine sehr große Textur gebaked werden,
da das automatische Unwrapping die UVs sehr unökonomisch
platziert. Streng genommen ist es in diesem Fall – zumindest
vom physikalischen Standpunkt aus betrachtet – eigentlich nicht
richtig, Ambient Occlusion zu baken, da es sich bei dem Gras um
animierte Objekte handelt. Bei diesen ändert sich genau betrachtet
der Occlusion Wert von Frame zu Frame. Da es sich bei der Szene
jedoch um eine Kamerafahrt handelt, ist zu bezweifeln, dass der
Betrachter dies auch tatsächlich bemerkt. Die Occlusion Information wird nur für jeden Vertex gespeichert. Dazwischen wird interpoliert. Da das Gras aber eine relativ hohe Vertexdichte besitzt,
resultieren daraus keine Probleme.
Wählen Sie die in Polygone umgewandelte Grasgeometrie aus und
baken Sie die Ambient Occlusion Information, ähnlich wie bereits
oben beschrieben. Jedoch muss dieser Vorgang diesmal über den
Befehl „Edit Polygons – Colors – Prelight (Mental Ray)“ geschehen.
Wenn Sie alle Einstellungen richtig vorgenommen haben und ihre
Grafikkarte die Darstellung von Vertex Colors unterstützt, sollte
das Ergebnis des Bakings direkt nach Abschluss der Kalkulation
im Maya Viewport zu begutachten sein.
Um die in das Gras gebakte Occlusion Information zu rendern,
brauchen Sie einen speziellen Shader (mr_CPV, siehe Weblink im
Kasten), der sich nach der Installation einfach dem Gras zuweisen
lässt. Für das Rendern des Ambient Occlusion Passes können Sie
nun Raytracing und Motion Blur in den Render Globals deaktivieren, was zu einem beachtlichen Geschwindigkeitszuwachs führen
sollte.
DEPTH CHANNEL
Die Tiefeninformation wird mithilfe eines speziellen Mental Ray
Shaders berechnet (siehe Kasten). Dieser ermöglicht das Speichern des Z Channels im Floating-Point-Format, wodurch im
Gegensatz zum sonst gebräuchlichen 8Bit-Format deutlich mehr
Tiefeninformationen verfügbar sind. Allerdings muss Ihre Com-
[11] Die korrekten Einstellungen in ReelSmart
Motion Blur Pro V.3
positing-Software auch in der Lage sein, diese Informationen zu
verarbeiten. Ansonsten reicht es, den Z Channel ganz normal als 8
Bit RGB File abzuspeichern. Der Shader ist leicht einzustellen und
rendert sehr schnell. Tragen Sie einfach die richtigen Werte für die
Near und Far Clipping Plane ein.
COMPOSITING
Da es sich um einen Maya-Workshop handelt, soll an dieser Stelle
nicht zu genau auf den Compositing-Prozess eingegangen werden.
Der in Abbildung 10 dargestellte Flowchart gibt Aufschluss über
den Aufbau des Composites, falls nicht ganz klar ist, wie die einzelnen Passes kombiniert werden müssen.
Den Post-Blur finden Sie nach der Installation unter dem Menüpunkt „RE:Vision Effects – Motion Vectors“.
Im Filterdialog ist unter „Motion Vectors“ nur der entsprechende
Layer zu selektieren. Der Wert unter „Max Displace“ entspricht
demselben Wert, der im Shader unter „Normalize Size“ eingetragen wurde. Ein „Blur Amount“ von „1“ entspricht vollem Motion
Blur. Alle höheren Werte machen eigentlich keinen Sinn. Die Slider
für „Vector Scale X“ beziehungsweise „Y“ können außer Acht gelassen werden. Sie dienen lediglich dazu, die Richtung des Blurs zu
beeinflussen, was in den seltensten Fällen Sinn macht [Bild 11].
T Manuel Macha
Der Autor (www.manuelmacha.de) beschäftigt sich seit 1998 mit 3D-Grafik
und ist als Freelancer mit Fokus auf Modeling, Rigging, Texturing und
Animation tätig. Zur Zeit arbeitet er als Modeling-Supervisor für Paprikaas Animation Studios / Shortcut Entertainment Italy an einem Full CGI
Feature Film.

Documents pareils