Sollbruchstellen nach Houdini-Art

Rückblick: In der DP 03 : 2019 stellt sich Rainer Duda der Sollbruchstelle Houdini 17 aka „Codename Banshee“ – und zerbricht daran?

Dieser Artikel erschien ursprünglich in der DP 03 : 2019.

Houdini 17 „Codename Banshee“ wurde mit neuen Werkzeugen ausgestattet, die die Erzeugung von Sollbruchstellen sowie die Simulation von zerbrechenden Gegenständen deutlich einfacher und visuell überzeugender gestalten sollen als die vorigen Versionen. Olaf Finkbeiner hat bereits in der DP-Ausgabe 01:19 einen ersten Überblick publiziert, der nachfolgend im Bereich RBD vertieft wird. Drei große Neuerungen stehen in den Bereichen Destruction und RBD-Simulationen im Fokus: einmal das Material-Based-Destruction-Prinzip, dazu reihen sich Soft Body Relationship Constraints und ein Verfahren namens Convex Decomposition für die Erzeugung optimaler Proxy-Geometrie. Welche Funktionsweisen sich hinter den kraftvollen Ausdrücken verbergen und auf was sich Anwender einstellen müssen, wird nachfolgend an einem Beispielprojekt aufgeführt.

Houdini ist mitunter bekannt für die Erstellung von imposanten Zerstö rungen von allerhand Objekten, beginnend von einer kleinen Statue, die durch ein Erdbeben zu Boden fällt und zerspringt, bis hin zu ganzen Städten, die durch einen Kometenschauer pulverisiert werden. Der Aufbau einer solchen Zerstörung ist in verschiedene Teilbereiche untergliedert. Der erste Bereich ist das sogenannte Pre-Fracturing. Dahinter verbirgt sich die Idee, die zu zertrümmernden Objekte bereits vor der eigentlichen Simulation mit Sollbruchstellen auszustatten. Das geschieht in der Regel auf SOP-Ebene innerhalb eines Geo Nodes und ermöglicht Anwendern, die Art und Form der Bruchstücke künstlerisch aufzubereiten, anstatt dass mittels puristischer Benutzeroberflächen und wissenschaftlicher Parameter Bruchstücke ermittelt werden. So können Vorgaben wie auch Anpassungen der Ideen von Regisseuren und Supervisoren on-thefly angepasst werden.

Einfachere Sollbruchstellen

Die Erstellung von Sollbruchstellen – sie werden im weiteren Verlauf Fragmente genannt – basiert auf einem relativ simplen Konzept. Man nehme auf SOP-Ebene eine Geometrie und verteile Punkte auf der Oberfläche oder innerhalb der Geometrie durch den Einsatz zum Beispiel eines Scatter Nodes. Für den Fall, dass Punkte in der Geometrie verteilt werden sollen, muss die Geometrie zuvor in ein Volumen konvertiert werden, da der Scatter Node ebenfalls Punkte im Volumen verteilen kann. Die Punkte dienen als Basis für Sollbruchstellen, die mittels eines Voronoi Fracture Nodes erstellt werden. An der Stelle fand bereits das erste größere Update in Version 17 statt.

Der Voronoi Fracture Node wird als Voronoi 2.0 Node angepriesen. Unter der Haube wurde der Node laut dem Changelog komplett überarbeitet und mit einer optimierten Benutzeroberfläche ausgestattet. Konkret heißt das für Anwender, dass die Inputs des Nodes noch immer dieselben sind. Links muss die zu zerbrechende Geometrie angeknüpft werden und rechts die Punkte ausgehend von dem zuvor erwähnten Scatter Node. Um nun aber die einzelnen Fragmente mit unterschiedlichen Farbnuancen für die Visualisierung versehen zu können, muss das Pin-Symbol neben dem Namen der Fragmente aktiviert werden. Daraufhin werden den Bruchstücken unterschiedliche Farbnuancen zugewiesen auf Basis ihres Names – des Attributs „Name“. Die Funktion „Colorize Individual Fragments“ mit ihrem Flag ist verschwunden.

Um die Farbnuancen für eine Weiterverarbeitung nach dem generalüberholten und optimierten Voronoi Fracture Node beizubehalten, muss mit eigenen Mitteln nachgeholfen werden. Die einfachste Lösung wäre ein Color Node, der das Name-Attribut der Primitives ausliest und als Farbtyp Random from Attribute ausführt. So können die Zufallsfarben als Cd-Attribut in die DOP-Ebene übertragen werden. Das war aber nicht der letzte Streich der Houdini-Entwickler beim Voronoi Fracture Node – ein ganzes Feld scheint verschwunden.

Die Rede ist vom Interior Detail, um den Fragmenten an den inneren Bruchkanten geometrisches Detail hinzuzufügen. Wollen Anwender die Innenflächen mit zusätzlichem Detail ausstatten, dann führt der Weg in das RBD-Auswahlmenü innerhalb der Werkzeug-Auflistung – das Tool-Menü. Darin befindet sich der Node RBD Interior Detail. Die Einstellungen wurden exkludiert, in einen eigenständigen Node gepackt und ermöglichen Anwendern die Erstellung unterschiedlicher Detailstufen.

Standardmäßig nimmt der Interior Detail Node den Namen der Innenflächen entgegen. Kurz: das Attribut Inside. Der Voronoi Fracture Node gibt Attribute aus für die Au- ßenflächen und Innenflächen, während RBD Interior Detail gezielt nach den Innenseiten Ausschau hält. Anwender können ebenfalls ein eigenes Attribut eintragen. Daher können mehrere Detailstufen miteinander vermischt werden. Es wird im Pre-Facturing-Node-Baum quasi eine weitere Ebene für Interior Details eingeführt.

Die Fragmente können nun mittels eines Pack Nodes für den Transport in das Dynamics Operator Network – kurz DOP-Netzwerk – aufbereitet werden. Falls noch Constraints wie zum Beispiel Glue Constraints genutzt werden sollen, muss zuvor noch ein Attribut angelegt werden.

Im DOP-Netzwerk findet die Simulation der Fragmente statt. In der Regel fallen die Fragmente nicht gemäß der eingestellten Gravitation frei zu Boden – auf die statische Groundplane. Vielmehr führt der Weg durch ein Glue Constraint Network auf Basis eines Glue Constraint Relationship Nodes, der als zweiter Input eines Constraint Network Nodes dient. Die Groundplane kann der Einfachheit halber über das gleichnamige Collision Shelf Tool in die Szene eingebunden werden. Es wird automatisch ein Static Solver nebst Plane-Objekt erzeugt. Um die einzelnen Fragmente zusammenzukleben gibt es die Möglichkeit, ein Objekt mit dem RBD Glued Objects Tool im Rigid Bodies Shelf zu erzeugen oder von Hand die einzelnen Nodes aufzusetzen. Ganz gleich, welcher Weg gewählt wird, im DOP-Netzwerk wird ein Node-Baum für die Constraints benötigt mit einem Glue Constraint Relationship Node. Der Glue Node kann für einen schnellen Test durch einen Bullet Soft Constraint Relationship Node ersetzt werden, der in Houdini 17 neu dazugekommen ist. Wichtig ist bei einem vorhandenen Glue Network die Anpassung des Name-Attributs der Fragmente. In der Regel ist beim Glue Network der Name „Glue“ hinterlegt. Dieser muss im Soft Constraint eingetragen werden, um auf die Fragmente zugreifen zu können – respektive lässt sich ein weiteres Attribut auf SOP-Ebene für die Soft Constraints einbinden. Das Glue Constraint wirkt nach der Änderung nicht mehr, das Soft Constraint ist aktiv und verhält sich in der Simulation wie eine Art Metallfeder.

Statt dass die Fragmente in sämtliche Richtungen fliegen, gemäß des Zentrums des Einschlags und der übertragenen Energie, wirkt das Soft Constraint Network wie ein Gummigeflecht, das durch ein Zurückschnappen mit Wackelpudding-Effekt die Ursprungsform einnimmt – je nachdem, wie hoch der Stiffness-Parameter eingestellt ist. Ein ähnlicher Effekt ist bekannt durch die Spring Relationship, die ebenfalls bei den Constraint Nodes zu finden ist, wobei das Soft Body Constraint in den Versuchen deutlich stabiler gearbeitet hat. Das wahre Potenzial in einer Simulation entfaltet das Soft Body Constraint in Verbindung mit dem Glue Constraint nebst der Anwendung eines Glue Adjacent Nodes. Das Glue Constraint Network hält die einzelnen Fragmente bis zu einem gewissen Punkt in der Simulation zusammen, an dem die Constraints brechen, da die Krafteinwirkung des Aufpralls zu groß ist. An der Stelle kann der Glue Adjacent Node eingebunden werden, um eine ausgewählte Anzahl an Fragmenten bestimmten Objekten zuzuweisen. Beispielhaft kann man sich einen Turm bestehend aus Beton vorstellen mit Aussparungen für Türen und Fenster, wobei die äußeren Fragmente der Fenster- und Türrahmen an die anliegenden Fragmente des Betons in den Aussparungen geklebt werden. Dadurch können Anker erzeugt oder Fragmente plausibler simuliert werden, gerade wenn bei einem Einschlag im Fenster das Glas nebst Holzstreben zerspringt, aber der Holzrahmen partiell noch im Einlass steckenbleibt.

Darauf aufbauend lässt sich nun noch die Bullet Soft Constraint Relationship einbinden. In der Regel werden bei Constraint Nodes die unterschiedlichen Fragmente mit mehreren Attributen ausgestattet – Constraint Name und Constraint Type. Zuvor wurde von einem Primitive-Attribut vom Typ String (Constraint Name) geredet, das auf SOP-Ebene erzeugt wurde mit einem String namens Glue. Für das Bullet Soft Body Constraint Relationship muss ein eigenes Primitive-String-Attribut (Followup Constraint Name) erzeugt werden mit dem String namens Soft. Die Idee dahinter ist, dass wenn das Glue Constraint innerhalb der Simulation brechen sollte, dann soll das Attribut namens Constraint name in das neue Attribute followup constraint Name abgeändert werden, damit das Bullet Soft Constraint wirken kann.

Ein weiterer Effekt, der noch erzeugt werden muss, ist das Brechen der Bullet Soft Constraints, damit das Zurückschnappen ausgehebelt wird. Man stelle sich vor, dass eine Betonwand wie Styropor oder eine Waffel auseinanderbricht. Ein Effekt fernab der Realität, daher ist ein angepasstes Auseinanderbrechen erwünscht, das nun auf dem Weg der vorläufigen Komplettierung ist – ausgenommen der Feinarbeit, die nicht im Detail behandelt wird. Wurde ein automatisches Constraint Network erstellt durch zum Beispiel die Anwendung des RBD-Glued-PiecesShelf-Werkzeugs, dann ist bereits ein weiterer Node im Constraint Network innerhalb der DOPs zu finden, der sich remove_broken nennt – ein SOP-Solver. Im Grunde ein Node, der weitere Attribute aus der SOP- in die DOP-Ebene einbringt.

Zu den hinzugekommenen Attributen gesellen sich nun Torque, Force, Impact und Strength. Ein Attribut, das sich bestens für Fractures eignet, ist Torque, das Drehmoment der Fragmente. Fragmente, die einem Drehmoment unterliegen, müssen im ersten Schritt gruppiert werden. Im zweiten Schritt müssen die Fragmente auf ein bestimmtes Drehmoment überprüft und ab dem Grenzwert aus dem Constraint Network gelöscht werden. Sie unterliegen dann ganz der RBD-Simulation ohne Halt an anderen Teilen. Die Arbeitsschritte können ganz nach Houdini-Manier durch Einbringung weiterer Nodes oder durch Vex Code durchgeführt werden.

Auf diese Weise lassen sich durch den Einsatz der ersten Neuerungen weitaus plausibler wirkende Simulationen erzeugen. Wobei das Soft Body Constraint durchaus auch bei Deformationen genutzt werden kann und nicht ausschließlich bei Objekten Anwendung findet, die in ihre Einzelteile zerlegt werden. SideFX zeigt in dem offiziellen Video zu Houdini 17 ein Automobil, das gegen eine Straßenlaterne kracht und stark deformiert wird. Doch ganz gleich, welche Art von Effekt erzeugt werden soll, es ist mit einem erheblichen Aufwand und Knowhow verbunden – gerade für Houdini-Neuankömmlinge.

Auch wenn der Material Fracture Node die Erstellung von materialspezifischen Fragmenten deutlich vereinfacht, gibt es auch hier die Möglichkeit, die Dichte der Partikel, was schlussendlich auch die Dichte der Fragmente widerspiegelt, auf eine Künstler-freundliche Art und Weise durchzuführen.

Auf Knopfdruck Holz

Der neu aufbereitete Voronoi Node in Verbindung mit dem Bullet Soft Constraint Relationship ermöglichen es Anwendern, eigene Simulationen mit einer Vielzahl an Detailstufen auszustatten, um komplexe Effekte zu erzeugen. Es liegt auf der Hand, dass die dafür benötigten Node-Netzwerke sehr schnell an Größe gewinnen und die Komplexität sich in Windeseile verdichtet.

Es scheint, als wolle SideFX an diesem Fakt ansetzen und die Arbeit leichter gestalten. Herausgekommen ist der RBD Material Fracture Node, der im Rahmen des Material-based Fracturings in den Vorführvideos angepriesen wurde. Es handelt sich hierbei um das Prinzip der Material-based Destruction. Wobei das Wort Material nicht explizit den Shader beziehungsweise das Material meint, bei dem Anwender mit Texturen den Aufbau der Fragmente steuern können.

Vielmehr soll der Node ermöglichen, dass Anwender einen Materialtyp aus einer Liste von Typen auswählen und dass die Fragmente des gewünschten Materials direkt erstellt werden. Der Anwender möchte eine Holzbrücke simulieren, bei der die einzelnen Stufen feucht sind und beim Auftreten durchbrechen, dann werden die dafür benötigten Materialeigenschaften nebst Sollbruchstellen erstellt und sind mit einem wohlüberlegten Menü anpassbar.

Einen kleinen Wermutstropfen gibt es vorab. Da der Node zu den Neuerungen in Houdini 17 gehört, sind die Materialien kurz abgesteckt.

Es gibt zum Testzeitraum drei unterschiedliche Materialtypen, aus denen Anwender wählen können. Dazu zählen Beton, Glas und Holz. Drei Materialien, die nicht unterschiedlicher sein können und sich teilweise so einstellen lassen, dass Anwender auch anderweitige Materialien imitieren können, die nicht in der Auswahl vorhanden sind – zumindest noch nicht.

Das durchaus Positive am RBD Material Fracture Node ist, dass die zuvor angesprochenen zahlreichen Arbeitsschritte, die zu einer funktionierenden Zerstörungssimulation gehören, nicht vom Anwender wieder und wieder aufgebaut werden müssen. Der RBD Material Fracture Node erstellt das Glue Constraint selbst und sorgt für das Pre-Fracturing. Der Node kann der Einfachheit halber als ein High-Level Destruction Node angesehen werden. Die Grundlegenden und zeitraubenden Arbeitsschritte werden in einem Node zusammengefasst. Aber was, wenn es doch etwas mehr sein soll und Feinarbeit gefragt ist?

Unter der Haube

Es gibt eine ganze Reihe von Nodes, die sich innerhalb des RBD Material Fracture Nodes befinden. Houdini-Kenner wissen, dass Blackbox ein Fremdwort für Houdini ist und Anwender in jeden Node Einblick erhalten. Im Material Fracture Node befindet sich bei einem Blick hinein der eingangs erwähnte optimierte Voronoi Fracture Node. Des Weiteren befindet sich der Boolean Fracture Node nebst Exploded View darin, ein ebenfalls sehr kraftvoller Node für die Erzeugung realistisch wirkender Fragmente. Das Voronoi Fracturing ist ideal für Gesteinsbrocken, und doch haben die Voronoi-Zellen ihren ganz eigenen optischen Charakter, den gestandene TDs sofort erkennen. Ganz wie beim Einsatz eines prozeduralen Generators für Rauschen, der gut und gerne für das Displacement genutzt wird und bei zu wenig Vermischung von unterschiedlichen Generatoren charakteristische Muster erzeugt.

Wie der Name des Boolean Fracture Nodes erahnen lässt, können unterschiedliche Objekte genutzt werden, um durch eine Boolesche Operation Fragmente zu erzeugen, die deutlich gröbere Kanten haben als Voronoi-Zellen und mehr Realismus erlauben. Neben den drei Mid-Level Nodes finden sich aber noch Low-Level Nodes innerhalb des RBD Material Fracture Nodes: zum Beispiel Voronoi Split, Voronoi Fracture Points, Assemble sowie Connect Adjacent Pieces. Allesamt Werkzeuge für die Erstellung komplexer Fragmente, zusammengefasst in einem Node. So komplex der Node auch aufgebaut ist, SideFX hat es verstanden, Komplexität durch eine durchdachte Benutzeroberfläche zu kaschieren.

Wenn der RBD Material Fracture Node die einzelnen, teilweise zeitraubenden Arbeitsschritte abnimmt, dann bleibt mehr Zeit frei für die kreative Arbeit. Auch wenn der neue Wunder-Node im Bereich des Pre-Fracturings materialspezifische Bruchstücke erstellt, für die vereinfachte Feinarbeit hat SideFX ebenfalls gesorgt. Der Platz, an dem der RBD Material Node innerhalb des Tool-Menüs liegt, ist Herberge für eine ganze Reihe von weiteren RBD Nodes. Die darin enthaltenen Nodes neben dem Interior Detail Node ermöglichen die Unterstützung des Material Fracture Nodes. Ein Indiz dafür sind die größtenteils identischen Input- und Output-Konnektoren – abgesehen von vereinzelt auftretenden spezifischen Konnektoren.

Im Standard-Workflow ohne RBD Material Fracturing muss vor dem Scatter Node mittels eines Color Nodes das Objekt mit Schwarz gefüllt werden. Daraufhin müssen mit einem Paint Node – idealerweise mit Weiß – Bereiche bemalt werden, bei denen die Dichte der Punkte stark zunehmen soll. Das Cd-Attribut muss in den Scatter Node ausgelesen werden für die Platzierung der Punkte. Um die Erstellung zahlreicher weiterer Nodes zu verhindern, hat SideFX einen RBD Paint Node im RBD-Menü hinterlegt.

Die neue Paint Node ist der Zusammenschluss des Color sowie Standard Paint Nodes und ermöglicht die Eingabe eines eigenen Attribut-Namens für die zu erstellenden Bereiche, die wiederum im Material Fracture Node ausgelesen werden können – sofern im Feld namens Cell unter Scatter from die Auswahl Attribute nebst dem korrekten Attribut-Namen eingetragen ist. So können Anwender relativ schnell Bereiche für Einschläge oder poröse Flächen abstecken und im RBD Material Node weiteres Detail hinzufügen.

Der RBD Paint Node ist aber nicht die einzige Möglichkeit, wie das Material Fracturing unterstützt werden kann. Selbstverständlich kann der Interior Detail Node ebenfalls hinzugezogen werden, um die Innenflächen der Bruchstücke visuell zu verfeinern. Spannend ist ebenfalls der RBD Cluster Node, der die bestehenden Fragmente entgegennimmt und daraus Cluster bildet. Quasi eine Gruppe von Fragmenten, die ein größeres Fragment bildet. Zusätzlich lassen sich Cluster durch eine Rauschfunktion bilden nebst Anpassungsmöglichkeiten. Sollten bereits Cluster vor Einsatz des Cluster Nodes vorhanden sein, können die Cluster auf Wunsch beibehalten werden. Im Rahmen der Constraints wurde ebenfalls die Arbeit deutlich erleichtert. Es wurde zuvor ein Constraint Network inklusive Glue und Bullet Soft Constraint aufgeführt mit der Einbindung weiterer Attribute für eine angepasste Simulation.

Zunächst muss erwähnt werden, dass der RBD Material Fracture Node in jeder Materialauswahl ein eigenes Feld für die Constraints besitzt und Anwender dort per Knopfdruck wählen dürfen, ob nur ein Glue Constraint genutzt oder ob das Glue Constraint in ein Bullet Soft Body Constraint konvertiert werden soll, ohne lange Node-Netzwerke aufzubauen und zahlreiche Attribute von Hand anzulegen.

Doch es gibt auch im Rahmen der Constraints eine weitere Hilfe für anspruchsvollere Effekte. Es gibt einen RBD Constraint Properties Node innerhalb des RBD-Menüs. Mit dem Node können die Eigenschaften der Glue oder Soft Constraints separat und unabhängig vom Material Fracture Node angepasst werden. Hier sieht man Ähnlichkeit zum SOP-Solver aus dem zu Beginn aufgeführten Beispiel. Es werden quasi weitere Attribute auf die Constraints angewendet, die dem jeweiligen Constraint-Typ zugute kommen und die Anpassung deutlich vereinfachen.

Daneben gibt es noch einen RBD Pack wie auch Unpack Node, deren Sinn darin besteht, Geometrie (High und Proxy) einer Simulation nebst Constraints zu einem Objekt zu vereinen, um den Aufbau größerer Simulationen übersichtlicher zu gestalten. Wird ein Eingriff nötig, kann mittels RBD Unpack auf die einzelnen Objekte zugegriffen werden.

Auch wenn die Simulation nun schneller aufgebaut ist und sich einfacher anpassen lässt, da die wichtigsten Komponenten an einer Stelle abgelegt sind, bleibt noch die Fragen offen, wie es mit der Kollision der jeweils an der Simulation beteiligten Objekte aussieht? Und wie sich ein Workflow aufbauen lässt, der optimale Kollisionsgeometrie erzeugt, die ebenfalls als Proxy im RBD SOP Workflow genutzt werden kann.

Die Antwort auf die Frage befindet sich auf SOP-Ebene, durch den Einsatz des Convex Decomposition SOP Nodes. Der Node nimmt die Input-Geometrie entgegen und erzeugt möglichst akkurate konvexe Geometrie um markante Details an der Hauptgeometrie. Zahlreiche Einstellungen ermöglichen die Anpassung der Genauigkeit während der Erzeugung der konvexen Objekte.

Nicht zu viel versprochen

Eine Wohltat, so könnte man die zuvor aufgeführten Neuerungen im Bereich der RBD-Simulationen bezeichnen. Die große VFX-Wunderkiste wurde mit mehr High-Level Nodes ausgestattet, um durchaus komplexe Geflechte aus Nodes in einfach zu verstehende Building Blocks aufzuteilen. Redundante Schritte reduzieren sich, Zeit wird gespart und die Ordnung wird im Blick behalten. Gestandene Houdini-Anwender werden aufatmen, und Neuankömmlinge haben einen einfacheren Start. Und wer weiß, vielleicht dürfen Anwender in der Zukunft nach dem Start auswählen, was sie genau erschaffen möchten, und dementsprechend werden die Nodes zu High-Level Nodes zusammengesetzt oder die jeweils bereits vorhandenen High-Level Nodes werden allein sichtbar, um nun noch die Suche nach Werkzeugen deutlich abzukürzen.

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.