Mantras Mantra

Das Mantra von Mantra ist, das zu rendern, was Houdini an Geometrie, Volumes oder Partikeln erzeugt hat. Und dafür hat SideFX erst neulich einen Oscar bekommen. Wer also auf Hollywood- Niveau rendern will, ist hier goldrichtig. Insbesondere wenn die Pipeline sehr Compositing-orientiert sein soll und darf, bietet Houdini genau diese Tools und Features. - von Olaf Finkbeiner
Anzeige

Mantra ist der Houdini-eigene Renderer, genauer gesagt, Mantra ist ein Teil von Houdini. An manchen Stellen ist es unklar, ob eine Funktion zu Mantra oder zu Houdini gehört, an anderen Stellen werden die Funktionalitäten sozusagen geteilt. Dazu später Genaueres. Das ist wahrscheinlich der komplizierteste Artikel, den ich bisher für die DP geschrieben habe. Renderer bzw. welcher Renderer denn nun der beste ist, wird oft schon fast religiös und hitzig diskutiert. Deshalb werde ich mich auch hüten, hier Vergleiche anzustellen. Ich werde beschreiben, welche Features vorhanden sind und für welche Aufgabenstellungen Tools von Houdini und Mantra bereitgestellt werden.

Simulationen rendern

Houdini ist ja am besten bekannt für das Erstellen von Simulationen: Wasser, Feuer, Rauch und Dinge kaputt machen, also Haus stürzt ein, Raumschiff explodiert etc. Und genau darauf ist Mantra auch eingestellt, also eben das Rendern von diesen SFX/VFX-Spezialeffekten. In der Regel geht es auch nicht um Stills, sondern um Animationen.

Bei so einer Simulation werden pro Frame dann auch gerne mal Gigabytes an Daten erzeugt. Die Berechnung einer Simulation kann, was die Simulationszeiten angeht, mitunter mehrere Stunden pro Frame dauern. Für H15 hat SideFX einen coolen Clip dazu: „One Billion Particles“ https://vimeo.com/142517418. Das Ganze will nach der Simulation dann auch noch mit Mantra gerendert werden. Dazu hat die Houdini-Simulation für jeden Frame Daten auf der HardDisc bzw. dem Fileserver abgespeichert. Das sind dann Partikel, Geometrien, welche angereichert sind mit Attributen. Ohne diese Attribute könnte Mantra zum Beispiel Feuer gar nicht rendern. Der Shader greift dann z.B. auf ein Attribut für die Temperatur zurück und stellt diese farblich je nach Temperaturwert anders dar.
Das ist sehr vereinfacht ausgedrückt, meistens ist es sehr viel komplexer. Dieses Zusammenspiel von Houdini und Mantra ist zudem sehr flexibel und kann je nach Bedarf angepasst werden. Houdini ist da extrem offen, fast komplett sowas wie Open Source: Jedes Tool und jeder Shader können weitestgehend angepasst werden. Ab einem gewissen Level ist das auch notwendig, und man muss sich dazu tief in die Materie einarbeiten. Diese unendlichen Möglichkeiten machen das Arbeiten mit Mantra zunächst nicht leichter, denn selbst dann, wenn wir etwas zunächst einfach Erscheinendes lösen wollen, stoßen wir schnell auf diese Vielzahl von Möglichkeiten. Was dann die beste Lösung ist, kann man oft nur mit viel Erfahrung einschätzen. Hier hilft zunächst nur die Lässigkeit, die wir beim Arbeiten mit Houdini sowieso brauchen.

Grundsätzliches

Leider wird es einem nicht leicht gemacht, Mantra zu lernen. Die Dokumentation ist teilweise wirklich sehr gut und erklärt vieles sehr anschaulich. An anderen Stellen fehlt es dann wieder oder ist sogar nicht mehr aktuell. Die Material Library, die mitgeliefert wird, ist nicht gerade umfangreich. Viele der Shader stellen vielmehr einen Ausgangspunkt dar und müssen selber je nach Bedarf angepasst oder weiterentwickelt werden. Der Ocean Shader stellt dabei eine erfreuliche Ausnahme dar.
In Houdini 16 ist der sogenannte Mat- Kontext hinzugekommen der den bisherigen Shop-Kontext ablösen wird. Dieser Wechsel ist jedoch noch nicht zu 100 Prozent vollzogen. Houdini 17 wird, was Mantra angeht, soweit ich das auf der FMX herausfinden konnte, diese grundsätzliche Veränderung wahrscheinlich abschließen. Des Weiteren wurde von SideFX angedeutet, dass IPR, also das interaktive Rendern, deutlich schneller wird was den First Pass angeht. Ein Denoiser könnte auch kommen, Crytomatte wird weiter ausgebaut. Dabei wird es nicht bleiben, mehr darf ich hier jedoch nicht kundtun. Das machen wir dann hoffentlich in der Oktober-Ausgabe der DP.

Principled Shader /
Classic Shader / DIY

Mantra kommt mit zwei klassischen Sur­face (Oberflächen) Shadern: dem Principled Shader und dem Classic Shader. Der Classic Shader war bis H16 als Mantra Surface Shader benannt. Beide Shader sind Über-Shader, die es ermöglichen, viele Oberflächeneigenschaften darzustellen. Um mit dem Classic Shader zu arbeiten, ist sehr viel Wissen über Rendering notwendig.
Der Principled Shader ist neu und macht das Erstellen der meisten Materialien sehr viel einfacher. Er lehnt sich dabei stark an den sogenannten Disney Shader an. Eins der coolen Features ist dabei, dass die meisten Parameter von null bis eins einzustellen sind. Der Principled Shader hat seit H16 auch ein Round-Edge-Feature, das harte Kanten abgerundet darstellt. Wer also nicht allzu tief in Mantra einsteigen will, kann mit dem Principled Shader die meisten Oberflächeneigenschaften einstellen, als da sind: Specular, Anisotropic, Reflection (Metallic), Coating, Transparency, Subsurface Scattering, Sheen, Light Emission, Bump and Normals und Displacement. An dieser Stelle sei erwähnt, dass Displacement schnell ist.

DIY Shading (Do it yourself Shader)

Mantra ermöglicht es, selbst Shader zu erstellen. Dazu gibt es Core-Versionen des Principled Shaders, des Classic Shaders und von Hair, Skin und Car Paint. Und es gibt den Material Builder, der erst mal gar nichts kann (siehe oberes Bild). Er hat nur die möglichen Inputs und Outputs schon erzeugt. Wer also einen Shader komplett selbst bauen will, kommt voll auf seine Kosten. Eine andere Möglichkeit, Shader selbst zu bauen, ist die Nutzung von Shader Layern. Shader Layer sind eines der neuen Features in H16. Es ermöglicht, Shader physikalisch korrekt zu layern. Auch Displacements können gemischt werden. Dazu gibt es ein sehr gutes Master­class-Video von SideFX
(bit.ly/h16_master­class_shading).

Rops – Render Operators

Houdini und Mantra sind Node-basiert. Dabei geht es nicht nur um die Shader, sondern auch um das Render Setup. In der ROP, dem Render Operator, werden die Render Settings festgelegt, also welcher Rendermodus verwendet wird, welche Qualität das Rendering haben soll und welche AOVs ausgegeben werden sollen. Diese ROPs können mit dem Batch Operator in Reihe geschaltet werden. Dann werden sie der Reihe nach abgearbeitet. Mit dem Pre/Post Operator wird ein Rendering immer vor einem anderen ausgeführt, wenn das zweite die Ergebnisse des ersten benötigt. Der Wedge Operator ermöglicht es, Test-Renderings eines Frames mit verschiedenen Einstellungen von Shadern zu rendern.

Render-Checkpoints

Mantra ist in der Lage, nicht vollständig fertige Renderings fortzusetzen; wir können also ein langes Rendering unterbrechen und später wiederaufnehmen. Auch bei manchen Abstürzen, zum Beispiel wegen zu wenig RAM, können wir das Rendering fortsetzen, wenn wir den RAM vorher wieder freigegeben haben. Ich finde, das ist ein sehr cooles Feature, denn so ein Rendering kann ja auch mal 24 Stunden dauern. Insbesondere für Freelancer ist das großartig.

Environment HDR Lighting

HDR Environment Lighting ist sicherlich keine besondere Stärke von Mantra, wobei die nötigen Basisfunktionalitäten vorhanden sind. Leider lässt sich das HDR Environment nur drehen und nicht in der Größe einstellen, es ist also immer unendlich weit weg. Gamma- oder Farbkorrekturen können innerhalb von COPS (Compositing als Preprocessing) umgesetzt werden. Hier müsste also dringend nachgelegt werden, wobei sowohl Portal-Lights als auch Matte Shadow und so weiter realisierbar sind.
Das Ganze ist aber leider nicht ganz so einfach und intuitiv, wie ich es mir wünschen würde. Aber Mantra ist ja auch nicht auf Produkt- oder Architekturvisualisierung im klassischen Sinne ausgelegt, die Prioritäten liegen bisher zumindest woanders. Wer aber sowieso mehr Kontrolle und Einfluss auf das Beleuchtungssetup nehmen will, kommt voll auf seine oder ihre Kosten. Ich habe mich ausgesprochen über die Verbesserungen in H16.5 gefreut und erhalte nun erträgliche Renderzeiten auch beim Einsatz von HDRs in den Lichtern und bei Innenraumszenen.

Vex Vops

Vex ist die Shader Language von Mantra und hat eine C-orientierte Syntax. Außerdem ist Vex die Programmiersprache, um Geometrien, Partikel oder Volumes in Houdini zu erstellen. Ich habe Vex zunächst in Mantra gelernt und kann jetzt Partikel oder Geo mit Vex bearbeiten. Vex steht, nebenbei bemerkt, für Vector Expressions. Und dann sind da noch die Vops, also Vex Operator. Diese sind die grafische, also Node-basierte Darstellungsform von Vex. Auch für Vops gilt, dass diese sowohl hier in Mantra als auch für Geometrie im Grunde gleich sind. Mit Vex und Vops ist es möglich, eigene Shader oder prozedurale Texturen zu erstellen – sicherlich nicht einfach, aber sehr mächtig das Ganze.

Pipeline

Houdini und Mantra sind sehr darauf ausgerichtet, in Teams verwendet zu werden. Die dafür vorhandenen Tools und Funktionalitäten sind für Arbeitsteilung optimiert, und da Teams oft komplexe Arbeitsteilung mitbringen, sind die Tools von Houdini oft sehr mächtig, aber dadurch auch sehr komplex. Eine etwas komplexere Szene besteht in der Regel nicht nur aus einer Datei und vielleicht noch den Texturen, sondern aus etlichen, die Teile der Geometrie oder auch Shader enthalten. Wer also Houdini und Mantra alleine nutzt, hat es des Öfteren mit Funktionalitäten zu tun, die einen dann an die berühmten Kanonen und Spatzen denken lassen.

Stay calm and don‘t oversample

Natürlich soll am Ende alles schön und rauschfrei gerendert sein, aber es soll eben auch nicht mehr berechnet werden als notwendig (Oversampling). Tipp: Erst mal nur Direct Light rendern und die Qualität in den Lights so lange erhöhen, bis es rauschfrei ist, denn diese Qualität beeinflusst nur Direct Light. Dann AOVs bzw. Extra Image Planes nutzen, um herauszufinden, woher das Rauschen kommt. Die Statistiken, die Mantra ausgeben kann, können sehr hilfreich beim Optimieren sein. Dazu den Verbose Level auf 3 stellen, und man bekommt eine Statistik in der Konsole angezeigt.

Attribute & UVSs

Attribute sind einer der Grundbausteine des Houdini-Konzepts, und dieses wird nahtlos in Mantra fortgesetzt. Mantra greift auf diese Attribute, die auf Points, Verts, Prim oder im Detail liegen können, beim Rendern zu. Die offensichtlichen sind dabei die Normalen (N), UV-Koordinaten (UV), Farben (Cd) oder, wenn es um Partikel geht, Age, Life, Velocity, Force, Mass, Drag oder auch die Größe (Pscale) und noch einige mehr. Diese Attribute werden von den Mantra-Shadern genutzt. Und es ist ein Leichtes, eigene Attribute zu erstellen und Shader zu bauen, die dann diese Attribute nutzen. Diese Beispiele kratzen da nur an der Oberfläche, da geht noch viel mehr. UVs sind in Houdini auch nur ein weiteres Attribut, zum einen für UV-2D-Unwrapping für Texturepaint und dergleichen, zum anderen für die parametrischen UVs. Diese sind wichtig beim prozeduralen Texturieren. So habe ich zum Beispiel bei dem Nautilus eine UV, die der Schneckenform folgt, damit das prozedural erstellte Muster sich schön an die Geometrie anpasst.


IFD – Instantaneous Frame Description

Bevor Mantra eine Scene rendern kann, muss Houdini IFD-Files erzeugen. Dabei wird für jeden Frame ein eigenes IFD-File generiert. Dieses beinhaltet dabei alle nötigen Informationen über Geometrie, Lichter, Materialien, Kamera etc. Das Besondere ist hier jedoch, dass ein IFD-File eben nicht die Geometriedaten beinhalten muss. Die Geometrie kann entweder in Packed Disc Primitives gesondert gespeichert vorliegen oder sogar erst prozedural innerhalb des Render-Vorgangs erzeugt werden. Bestes Beispiel dafür sind die Haare, welche als Kurven an Mantra übergeben werden. Mantra erzeugt da die Geometrie. Das hat viele Vorteile: Die IFD-Files bleiben so sehr klein, und Geometriedaten, die in verschiedenen IFDs immer wieder benötigt werden, müssen nur einmal vorliegen.
In diesem Zusammenhang muss noch die Alembic Integration Erwähnung finden, denn was für Packed Disc Primitives gilt, ist auch mit Alembic Archive der Fall. IFDs sind leider nicht für Indie-User von Houdini verfügbar, viele der Vorteile aber trotzdem valide.

Material Stylesheets & CVex

Material Stylesheets sind eine sehr mächtige und leider etwas sehr technische Lösung, um Materialien auf Geometrie und insbesondere auch Packed Geometry zu verteilen. Zusätzlich können auch einzelne Parameter eines Materials, welches dann auch auf verschiedenen Geometrien liegen kann, überschrieben werden. Das wird ergänzt durch CVex Shader – C steht hier für Contextual, also im Kontext. Zu diesen Funktionen gibt es großartige Video-Tutorial-Masterclasses von
SideFX. Ich verwende Stylesheets immer mehr auch für einfache Szenen, wo sie nicht wirklich notwendig wären, aber nur so gewöhnt man sich an diesen Workflow. Stylsheets und CVex werden, wenn der Rendervorgang gestartet wurde, als letztes evaluiert, d.h. erst wird die Szene wie üblich erstellt und an Mantra übergeben, dann wird erst das Stylesheet und CVex genutzt, um Attribute und Shader-Parameter anzupassen. Hier mal zwei Beispiele, welche andeuten, was damit ermöglicht wird.

  • Wir wollen Hunderte Objekte rendern, zum Beispiel Kronkorken, die sich, was den Shader angeht, nur in der Textur unterscheiden. Normalerweise müssten wir jetzt Hunderte Shader erstellen oder nur einen und dann pro Kronkorken nur den Texturpfad-Parameter überschreiben.
  • Wir haben die IFD-Files für eine Animation erstellt. Jetzt wollen wir die gleiche Animation noch mal mit anderen Materialien rendern. Jetzt können wir ein vorher erstelltes Stylesheet einsetzen, um alle Materialen zum Beispiel gegen einen Clay-Shader auszutauschen.

Packed Disc Primitives

Packed Primites bzw. Packed Disc Primitives sind ein sehr cooles Konzept. Es ermöglicht das Rendern von vielen Teilen, also Millionen Bäume, Partikeln oder Ähnlichem. Insbesondere wenn das alte Micropolygon Rendering ausreichend ist, also ohne Raytraceing, können damit Szenen gerendert werden, die sonst nie in den RAM gepasst hätten. Mantra lädt dann nur das Packed Disc Primitive, das gerade gerendert werden soll. Dazu müssen die Boundig-Box-Attribute stimmen. Aber auch wenn wir mit PBR rendern, sind Packed Disc Primitives hilfreich. Die Geometrie wird nicht im IFD-File mitgespeichert, sondern jeder Baum oder jedes Haus haben ihr eigenes File. Somit werden die IFD-Files sehr klein und der Netzwerk-Traffic wird insbesondere in einer Renderfarm niedrig gehalten. Es hat noch mehr Vorteile, aber das sprengt mal wieder den Umfang des Artikels.

Mantra Engine Procedurals

Mantra Engine Procedurals sind hauptsächlich im Einsatz, wenn es haarig wird – also wenn Haare gerendert werden sollen. Dabei erstellt Mantra dann die Geometrie, denn von Houdini werden die Haare als Splines/Linien-Objekte übergeben. Geometrie kann aber auch durch die Houdini Engine Procedurals während des Rendervorgangs erzeugt werden. Dazu braucht es aber eine zusätzliche Engine-Lizenz. Ist auch ein relativ neues Feature für fortgeschrittene Nutzer, das wohl noch nicht viel in Produktionen eingesetzt wird.

Particles

Das Rendern von Partikeln ist sicherlich eine der Stärken von Mantra. Immerhin wurde der Renderer für Houdini entwickelt, das bekannt ist für Hollywood SFX und dafür erst kürzlich den Oscar bekommen hat. Als Default wird ein Partikel als kleine Kugeln gerendert, sie können aber auch von Mantra als Sprites oder Geometrie gerendert werden. Millionen von Partikeln stellen Mantra vor kein Problem, vorausgesetzt der RAM reicht aus. Wobei: Wer mit Houdini arbeitet und filmreife SFX machen will, sollte mindestens 64 Gbyte RAM im Rechner haben.

Volumes

Wenn ich frage, was denn die Stärken von Mantra sind, dann ist dies einer der Bereiche, wo Mantra wirklich glänzt. Volume Rendering ist sozusagen das gleiche wie das Rendern von Tranzparenzen. Mantra ist hier zwar schnell, aber schnell geht das trotzdem alles nicht, insbesondere wenn die Volumen Tiefe haben sollen. Stochastic Transparency ist eine der möglichen Optimierungen, die Renderzeiten sehr verkürzen kann. Das kann jedoch auch unerwünschte Konsequenzen haben – kommt sehr auf die Szene an.

NPR / Micropolygon Rendering

NPR (Non Photorealistic Rendering) ist eine der Stärken von Mantra. Das fängt an beim Rendern von Partikeln, hört damit aber nicht auf. Eigene Shader können so minimal oder komplex sein wie nötig, da wir wirklich bei null anfangen können. Und ja, auch das ist nicht einfach, sondern eher komplex. Aber gerade dieser Charakter ist, was ich an Mantra so schätze: Ich kann alles so tief beeinflussen, wie es mein Wissensstand ermöglicht. Mantra hat verschiedene Render Modes – in der Regel greifen wir auf PBR, also Physically Based Rendering zurück. MPR – Micropolygon Rendering – kann sinnvoll sein, wenn SFX oder eben non-photorealistic gerendert werden.

Extra Image Planes – Arbitrary Output Variables AOVs

Mantra rendert für Compositing. Was ich damit sagen will: Es geht nicht nur um das schöne, fotorealistische Beauty. Es geht vielmehr darum, dem Compositing alle möglichen AOVs und Render Passes zu liefern, die benötigt werden, um das Rendering an die Vorstellungen des Produzenten oder Art Directors anzupassen, ohne neu rendern zu müssen. Das fängt bei Masken an und geht weiter mit Passes, die zum Beispiel nur das indirekte Licht einer Lichtquelle anzeigen, oder Z-Depth, Velocity (für Motion Blur), AO oder dergleichen, diese AOV Passes können frei definiert werden. Das ist sehr komfortabel aber auch sehr komplex. Wichtig ist dabei, dass ein extra Pass, zum Beispiel der Indirect Contribution Pass für jedes Licht, die Renderzeit nicht erhöht. Was sich erhöht, ist natürlich der RAM-Bedarf und die Zeit, das Ganze auf HD zu speichern.

3D-Texturen

3D-Texturen sind eines meiner Lieblings-Features in Mantra. Und damit meine ich nicht den 3D-Texture-Node (der auch cool ist), sondern die Möglichkeit, Point Clouds und Volumes als Texturen zu verwenden. Der 3D-Texture-Node ermöglicht es, einen Image Stack als Volume-Textur zu nutzen, vielleicht am besten bekannt von MRTs aus der medizinischen Diagnostik. Was ich jedoch noch cooler finde, ist der Einsatz von Point Clouds oder Volumes als Textur. Das ermöglicht es, prozedural mit Geometrie, die in ein Volume umgewandelt wird, 3D-Texturen zu erzeugen.

Categories

Categories oder auch In- und Excludes für Lichter bzw. Geometrien können sehr grobkörnig eingestellt werden – welches Licht also auf welches Objekt wirkt. Auch kann man hier entscheiden, ob von einem Licht nur die direkte oder auch die indirekte Contribution gerendert werden soll. Das Optimieren nimmt kein Ende.

Nautilus Procedural Model

Und um Fragen zuvorzukommen: Der Nautilus oder auch Ammonit wurde von mir voll prozedural in Houdini erstellt. Dabei kommen sowohl klassische Booleans als auch Volumes zum Einsatz. Es ist Work in Progress für Video-Tutorials, die ich demnächst aufnehmen werde. Leider bin ich zur Deadline dieses Artikels noch nicht so weit, wie ich es mir vorgenommen hatte, sodass die wirklich schönen Bilder erst später kommen werden.

Fazit

Mantra ist ein mächtiger Renderer, der auf Hollywood-Style-Workflows ausgerichtet ist. Das soll aber nicht heißen, dass wir damit nicht auch in kleineren Setups arbeiten können. Zudem wird es immer einfacher und z.B. der Principled Shader ist dabei eine große Hilfe. H17 wird nicht mehr lange auf sich warten lassen, und insbesondere die Noise Reduction wird von mir sehnlichst erwartet. Wer eine Vollversion von Houdini hat, kann übrigens Mantra auf allen verfügbaren Rechnern laufen lassen. Und Indie-User von Houdini bekommen neben Houdini einen klasse Renderer für ca. 250 Euro pro Jahr. Es gibt Anbieter für günstiges Farm-Rendern, die auch Indie-Files rendern. Und eine der Indie-Beschränkungen ist abgemildert worden: Es ist jetzt mit Indie möglich, auch Animationen bis 4K zu rendern. Bisher war das auf 1920×1080 begrenzt. Für Stills gibt es keine Begrenzung der Auflösung.

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.