InstaLOD: Von CAD zu VR?

InstaLOD automatisiert den kompletten 3D-Workflow inklusive der mühsamen Schritte, die kein 3D-Artist gerne durchführt, wie z.B. UV-Unwraping, manuelle Retopo oder Baking. Einen Überblick des kompletten Feature-Sets von InstaLOD seht ihr in der DP 03:19. In dieser Ausgabe schauen wir uns im Speziellen an, wie InstaLOD den Workflow von CAD-Daten aus einem PLM-System zu einem realtime-ready VR-Modell automatisieren kann.

Daten aus dem Computer Aided Design (CAD) vom Engineering bestehen aus Nurbs-­Curves und -Surfaces und können so von den meisten Renderern nicht gerendert werden. Um sie für ein Realtime-Rendering aufzubereiten, gab es bisher zwei Möglichkeiten. Entweder eine manuelle Retopo, also das Asset von Grund auf neu als 3D-Mesh zu bauen, oder das Tessellieren. Die manuelle Retopo ist ein Prozess, der pro Szene Tage oder Wochen dauern kann – je nach Komplexität der Modelle. Die andere Option ist die automatische Tessellierung. Da CAD-Daten allerdings parametrisch sind (eine unendliche Genauigkeit haben), erzielt die automatische Tessellierung einen extrem hohen Polycount, der für Realtime-Rendering praktisch unbrauchbar ist, und wenn eine niedrige Tessellierung angestrebt wird, fehlen oftmals Details, Krümmungen werden schlecht ausmodelliert oder bekommen kaputte Normals. Wenn das CAD-Objekt dann mit ausreichender Genauigkeit tesselliert ist, muss der Polycount reduziert werden, wiederum durch automatische Optimierung oder manuelle Retopo.

Im Import-Fenster kann die Tessellierung eingestellt werden. Der Standard, der für die Szene automatisch errechnet wird, ist oft ein guter Anfangspunkt, weshalb wir beim ersten Import zunächst nichts an den Standardeinstellungen ändern.
Im Import-Fenster kann die Tessellierung eingestellt werden. Der Standard, der für die Szene automatisch errechnet wird, ist oft ein guter Anfangspunkt, weshalb wir beim ersten Import zunächst nichts an den Standardeinstellungen ändern.

Schließlich müssen UVs ausgelegt und Texturen gebacken werden, damit das Modell überhaupt mit ausreichend fps in der VR-Szene begutachtet werden kann. Und selbst dann gibt es langfristige Probleme bei beiden manuellen Aufbereitungsmethoden, wenn ein anderer Renderer genutzt werden soll oder wenn sich die anfänglichen CAD-Daten ändern. Derzeit entstehen gigantische Material-Bibliotheken, die allerdings nur auf einen einzelnen Renderer angepasst sind. Ob VRED, Arnold, V-Ray etc., das Problem ist das gleiche. Wenn man in der Zukunft auf eine andere Engine wechseln will, muss jedes Material aus der Bibliothek komplett neu als Shader gebaut werden. Ein weiteres großes Problem bei einem Product-Lifecycle-Management-System (PLM) ist, dass CAD-Daten darin ständig von Ingenieuren abgeändert werden, was bedeutet, dass alle oben genannten Schritte oftmals wöchentlich von Grund auf neu durchgeführt werden müssen. Diesen Workflow kann man mit InstaLODs CAD Live Link und Scene Import Rules komplett automatisieren. Übrigens: Jedes Feature kann als Batch-Prozess-Operator durchgeführt werden. Alle Settings, die in einem Profil aufgesetzt werden inklusive Scene Import Rules, können extern gespeichert werden als JSON-Datei. Diese können als Presets genutzt werden, oder, wenn sich das CAD-Objekt nächste Woche schon wieder ändert, lädt der User das bereits aufgesetzte Profil, wendet es an und erreicht wieder dasselbe Ergebnis: ein Objekt, das für VR funktioniert, ohne manuell einzugreifen.

Nach einigen Sekunden ist die Szene, in unserem Fall eine Felge, tesselliert im Viewport sichtbar. Im Material-Editor können die Materialien abgeändert werden, sodass der Metallwert, Oberflächenrauheit und die Farbe bereits so eingestellt sind, wie sie beim Endprodukt zu sehen sein sollen.
Nach einigen Sekunden ist die Szene, in unserem Fall eine Felge, tesselliert im Viewport sichtbar. Im Material-Editor können die Materialien abgeändert werden, sodass der Metallwert, Oberflächenrauheit und die Farbe bereits so eingestellt sind, wie sie beim Endprodukt zu sehen sein sollen.

CAD-Daten laden mit CAD Live Link

Was ist aber nun der CAD Live Link und wie setzt man ihn ein? Beim Einladen einer CAD-Datei wird man erst mal mit einem Import-Fenster begrüßt, in dem man auswählen kann, welche Parts oder Sub-Assemblies importiert werden sollen. InstaLOD unterstützt eine Vielfalt von CAD-Formaten inklusive Catia, Solidworks, Rhino, JT, NX, STEP und viele mehr. Da der CAD Live Link immer noch die Verbindung zu den originalen CAD-Parts erhält, können wir die Parts weiterhin selektiv retessellieren. Die Tessellierung wird durch drei Einstellungen beeinflusst:

  • Maximum Deviation – nutzt eine vom Nutzer angegebene Toleranz, um wie viel InstaLOD von der originalen CAD-Oberfläche abweichen darf. Dieses Feature stammt ursprünglich aus InstaLODs Optimierer, war allerdings so nachgefragt, dass es ebenfalls im CAD Live Link integriert wurde.
  • Maximum Edge Length – Spezifiziert die maximale Länge der Edges.
  • Maximum Angle – Spezifiziert den maximalen Winkel zwischen zwei Polygonen. Falls der Winkel überschritten wird, wird der Bereich nochmals unterteilt, bis der angegebene Winkel erzielt wird.

Der Maximum Angle wird bei anderen Tessellier-Programmen hauptsächlich benutzt, ist allerdings oftmals nicht die ideale Lösung. Der Grund ist, dass Kleinteile – wie zum Beispiel Schrauben – innerhalb großer Assemblies sehr schnell sehr stark tesselliert werden können. Normalerweise will man keine einzelne Schraube mit 50.000 Polygonen haben. Daher ist die Maximum Deviation die ideale Lösung. Diese tesselliert die Objekte zu der Qualitätstoleranz, die angegeben wird, unterteilt das Objekt allerdings nicht unnötig.

Hier sieht man, dass selbst auf der flachen Oberfläche der Felge Subdivisions hinzugefügt worden sind. Diese würden mit dem Maximum Angle nicht modelliert werden, da die Oberfläche zu flach ist. Um die gleiche Qualität mit dem Maximum Angle erreichen zu können, bräuchte man einen Winkel von ca 2 bis 3 Grad, wodurch dann der Rest der Szene extrem hoch tesselliert werden würde.
Hier sieht man, dass selbst auf der flachen Oberfläche der Felge Subdivisions hinzugefügt worden sind. Diese würden mit dem Maximum Angle nicht modelliert werden, da die Oberfläche zu flach ist. Um die gleiche Qualität mit dem Maximum Angle erreichen zu können, bräuchte man einen Winkel von ca 2 bis 3 Grad, wodurch dann der Rest der Szene extrem hoch tesselliert werden würde.

Getting the Splits …

Ein weiteres Problem, das bei CAD-Daten oftmals auftritt, sind Oberflächenungenauigkeiten, die zu Shading-Problemen führen können. Ein solches Problem sind z.B. Shading Splits – zu sehen auf den Bildern rechts. Standardmäßig muss nun ein 3D-Operator manuell diese Splits Stück für Stück reparieren, was ein langwieriger Prozess ist. Mit InstaLODs CAD Live Link können diese schnell und einfach mithilfe der Shading Settings behoben werden. In vielen Fällen reicht eine Rekalkulierung der Normals. In unserem Fall sind allerdings viele Shading-Informationen innerhalb der CAD-Metadaten gespeichert, die durch eine Rekalkulierung verloren gehen würden. Daher nutzen wir InstaLODs Shading Magic, welches die problematischen Bereiche automatisch lokalisiert und repariert. Nachdem die Tessellierung durchgeführt und jegliche Shading-Probleme repariert wurden, ist die Felge allerdings noch nicht wirklich brauchbar, da alle Materialien neu aufgesetzt werden müssten für einen Render. UVs gibt es auch noch keine, weshalb Texturen nicht hinzugefügt werden könnten, und schließlich haben wir in dem jetzigen Zustand 80.000 Polygone. Wenn man diese auf ein komplettes Auto skalieren würde, hätte man ganz schnell mehrere Millionen Polygone, was mit einer VR-Applikation nicht vereinbar ist.

Daher machen wir als Nächstes mit ein paar Schritten die Felge VR-ready. Als Erstes gehen wir in die Mesh Operation Settings über und fangen mit einem UV-Unwrap an. Hier nutzen wir den Hard-Surface-Axial-Algorithmus, der für die den Achsen zugewandten Flächen einen sauberen Unwrap macht.

Material Merge

Nach dem UV-Unwrap führen wir eine Material Merge Operation durch. Der Grund dafür ist, dass wir in dieser Szene drei Objekte haben mit drei Materialien. Wenn wir diese Szene auf ein komplettes Auto skalieren, haben wir ganz schnell Tausende Objekte mit Tausenden von Materialien. Dies ist erstens viel Arbeit für das manuelle Aufsetzen der Materialien für einen Render, zweitens ist dies auch eine riesige Menge an Draw Calls für eine Realtime-Applikation. Daher nutzen wir den Material Merge, der alle Materialien und Texturen in ein einziges Material zusammenfasst, mit einem Texturen-Atlas. Hierbei baken wir die Material-Parameter von Metalness und Roughness ebenfalls in eine Textur. Dies spart später Zeit zum Aufsetzen der individuellen Materialien, aber auch eine Menge Draw Calls und Texturspeicher. Um das Aufsetzen der Materialien zusätzlich zu erleichtern, kombinieren wir die Objekte, indem wir im Mesh Tool Kit (MTK) „Combine Meshes“ anwenden. Nun haben wir ein Objekt mit einem Material und einem Draw Call.

UV-Unwrap mit dem Hard-Surface-Axial-Algorithmus für an den Achsen ausgerichtete Daten.
UV-Unwrap mit dem Hard-Surface-Axial-Algorithmus für an den Achsen ausgerichtete Daten.

Dieses Objekt kann man nun exportieren und in jeden Renderer importieren, da wir die UVs und Texturen haben, um die Materialien genauso zu rendern wie anfangs aufgesetzt – komplett unabhängig vom Renderer.

Weg mit den Polygonen

Nun muss die Polygonanzahl reduziert werden. Dazu nutzen wir InstaLODs Reme­sher, der innerhalb kürzester Zeit eine komplette Rekonstruktion der Felge vornimmt, gleichzeitig UVs baut und Texturen backt. Das Resultat erzielt eine unglaubliche Reduktion von über 90 %. All diese Schritte hatten wir schon manuell gemacht, weshalb die Frage aufkommt: Warum haben wir Remeshing nicht direkt am originalen Objekt angewendet? Der Grund dafür ist der Workflow, den wir aufbauen wollen. Was wir nun machen können, ist, unsere Zeitleiste zu nehmen mit allen Einträgen von UVs, Material Merge, Combine Meshes und Remesh – und all das in ein neues Profil umzuwandeln.

Ausblick und Anwendung

Jetzt merkt man schon richtig, wie mächtig InstaLODs Workflows sind – wir können mehrere Mesh-Operationen testen, und falls wir lieber etwas anderes probieren wollen, können wir einfach in der Zeitleiste zurückspringen und andere Operationen testen, bis wir zufrieden sind. Dann können wir den Workflow in ein Profil umwandeln und auf Hunderte oder Tausende Objekte skalieren, indem wir das Profil als JSON-Datei exportieren und durch die Kommandozeile als Batch-Prozess laufen lassen. Oder wir lassen das Profil direkt innerhalb von InstaLOD Studio XL mit InstaLOD Pipeline laufen. Profile (die alle Settings enthalten) können gespeichert werden und an einem späteren Zeitpunkt wieder genutzt werden. So werden Presets etc. aufgesetzt, falls dies für einen besseren Workflow sorgt. Erfahrungsgemäß sollte man das Profil erst mal an ein oder zwei Objekten testen, um zu sehen, ob das Profil auch korrekt aufgesetzt wurde. Dann steht der großen Arbeitserleichterung – oder der vollständigen Automatisierung – nichts mehr im Weg.

Nun haben wir eine komplexe Kettenreaktion aufgebaut, mit der wir mit einem Mausklick nicht nur das low-poly Realtime-ready Modell kreieren, sondern gleichzeitig separat das High-Poly-Modell herausspeichern – mit UVs und Texturen für einen Offline-Render.
Nun haben wir eine komplexe Kettenreaktion aufgebaut, mit der wir mit einem Mausklick nicht nur das low-poly Realtime-ready Modell kreieren, sondern gleichzeitig separat das High-Poly-Modell herausspeichern – mit UVs und Texturen für einen Offline-Render.

Scene Import Rules

Beim Batch Processing der CAD-Datei hat man logischerweise keine manuelle Kontrolle über die ersten Schritte, die wir bei der Felge angewendet haben. Dazu gehören die veränderten Tessellierung und Materialien und oftmals auch die Veränderung der Objekt-Hierarchien, die man verändern oder löschen möchte, da man sie für die Visualisierung gar nicht braucht (siehe Bild oben links „Organisieren Außen“ und „Organisieren Innen“). Mit den Scene Import Rules ist all dies mit wenig Aufwand möglich. Einfach angeben, welche Objekte betroffen sind und was mit ihnen geschehen soll.

In der neuesten Version von InstaLOD Studio XL kann man die Regeln für die Aufbereitung des Objekts nun auch automatisch mit dem Record-Knopf aufnehmen.
In der neuesten Version von InstaLOD Studio XL kann man die Regeln für die Aufbereitung des Objekts nun auch automatisch mit dem Record-Knopf aufnehmen.

Um eine Regel aufzusetzen, muss man im Fenster „Scene Import Rules“ einen neuen Eintrag hinzufügen und benennen. Dann muss man ein Attribut angeben. Hier kann alles vom Objekt-Namen bis zum Pfad angegeben werden. Das schöne hierbei ist, dass grundsätzlich jedes verfügbare Attribut innerhalb der Metadaten genutzt werden kann. Welche genau vorhanden sind, kann man sich im Fenster „Selected Object Information“ anzeigen lassen. Wenn man als Attribute beispielshalber „Name“ benutzt, muss man im Feld „Match RegEx“ darunter den Namen des Objekts angeben, damit dieser von der Regel bearbeitet wird. Im Predicate kann man angeben, wie wichtig diese Regel ist, was hilfreich ist, wenn viele Regeln vorhanden sind, sodass man angeben kann, welche Regel früher oder später in der Liste bearbeitet wird. Das Predicate bestimmt, was die Regeln auf den Objekten durchführen soll. Vorhandene Optionen sind Operationen wie z.B. „Material Assignment“, „Tessellate“, „Delete“ uvm. (Bild oben links „Scene Import Rules“). Benutzerdefinierte Predicates können auch mit einem C++ Plug-in hinzugefügt werden. Diese Plug-ins sind automatisch mit dem kompletten InstaLOD-System kompatibel. Mit diesen Plug-ins kann man InstaLOD zu dem gestalten, was man für seine eigene Pipeline braucht.

Nun haben wir eine komplexe Kettenreaktion aufgebaut, mit der wir mit einem Mausklick nicht nur das low-poly Realtime-ready Modell kreieren, sondern gleichzeitig separat das High-Poly-Modell herausspeichern – mit UVs und Texturen für einen Offline-Render.
Nun haben wir eine komplexe Kettenreaktion aufgebaut, mit der wir mit einem Mausklick nicht nur das low-poly Realtime-ready Modell kreieren, sondern gleichzeitig separat das High-Poly-Modell herausspeichern – mit UVs und Texturen für einen Offline-Render.

Fazit: Automatisierung rockt!

Nun kommen wir wieder zurück zum PLM-System, das vorhin kurz erwähnt wurde. Wenn man nämlich ein Regelwerk aufgebaut hat inklusive der anschließenden Mesh-Operationen, ist es kein Problem mehr, wenn wöchentlich die CAD-Objekte upgedatet werden. Einfach das fertige Profil laden und einen Batch-Prozess durchführen, in dem automatisch die Objekte mithilfe der Regeln aufbereitet werden (inklusive Materialien, Tessellierung, Organisation uvm.) und schließlich durch die Mesh-Operationen reduziert werden. Am Ende kriegt man mit einem Knopfdruck die fertige, upgedatete Szene, ohne dass manuell in den Prozess eingegriffen werden muss. Somit können große Assemblies kontinuierlich und innerhalb kürzester Zeit aus einem PLM-System entnommen und VR-ready gemacht werden. Übrigens: Wer das selbst ausprobieren will, kann sich per Formular auf unserer Webseite InstaLOD.com eine Trial-Version besorgen und den beschriebenen Workflow und alle weiteren Features und Prozesse, die InstaLOD ermöglicht, an den eigenen Assets ausprobieren.

Hier sieht man InstaLOD Pipeline – das Tool, in dem wir Meshes oder Ordner voller Meshes laden können, die durch ein Profil in einem Batch-Prozess auch ohne manuelle Interaktion aufbereitet werden. Man kann Mesh-Operationen als Kettenreaktionen aufsetzen (Previous Output as Input) oder einfach mehrere Profile laden und angeben, welche Ordner und Dateien durch welches Profil bearbeitet werden sollen – der Artist behält die Kontrolle über alles, was bearbeitet werden soll.
Hier sieht man InstaLOD Pipeline – das Tool, in dem wir Meshes oder Ordner voller Meshes laden können, die durch ein Profil in einem Batch-Prozess auch ohne manuelle Interaktion aufbereitet werden. Man kann Mesh-Operationen als Kettenreaktionen aufsetzen (Previous Output as Input) oder einfach mehrere Profile laden und angeben, welche Ordner und Dateien durch welches Profil bearbeitet werden sollen – der Artist behält die Kontrolle über alles, was bearbeitet werden soll.

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.