eBook 04 Optimierung

Kap. 1.5 Optimierung

 

Dieser Beitrag ist ein überarbeiteter Auszug aus dem Lehrbuch „Professionelle Architekturvisualisierungen mit Cinema 4D“, das online in deutscher und englischer Sprache im Gumroad-Shop zu erwerben ist.

 

Es gibt verschiedene Flaschenhälse, die das Arbeiten mit Cinema 4D bzw. den für Cinema 4D verfügbaren Renderengines verlangsamen können. Hier möchte ich einige dieser Schwachstellen vorstellen, zumal die meisten von ihnen mit etwas planerischem Vorgehen gut umschifft werden können. Grundsätzlich sind Optimierungsbemühungen in Bezug auf die Performance der Viewport-Darstellung (s. Kap. 1.5.1) und der Geschwindigkeit/Qualität des Renderprozesses (s. Kap. 1.5.2) zu unterscheiden:

 

1.5.1 Verbesserung der Viewport-Performance

Komplexe Szenen können den Viewport schnell derart verlangsamen, dass die zunächst flüssige Darstellung zu einer Diashow wird. Häufig vermuten Nutzer als Ursache hierfür eine vermeintliche Leistungsschwäche der Grafikkarte, doch muss man dabei die Programmarchitektur von MAXONs Cinema 4D berücksichtigen:

Alle Modellier-, Dynamik- und Animations-, Partikel- und Rigging-Prozesse im Cinema 4D-Viewport, die auf Geometrie und Effektoren aufbauen, basieren auf der Rechenleistung eines einzigen CPU-Kerns (Ausnahme: Deformer). Natürlich spielt auch die GPU eine gewisse Rolle bei der Viewport-Darstellung, doch ist der Flaschenhals hier fast immer eine zu schwach getaktete CPU. Wenige, dafür aber hochgetaktete Prozessorkerne beeinflussen die Leistung des Viewports daher generell positiv.

Dass die Leistung des Viewports in Cinema 4D bei komplexen Szenen einbricht, liegt vor allem an zwei Faktoren:

 

Polygon-Anzahl

Sind einzelne Objekte aus einer zu großen Polygonanzahl aufgebaut, kann dies negative Auswirkungen auf die Viewportleistung haben. Solche high-poly-Meshes sind v.a. aus der Photogrammetrie und dem 3D-Scanning bekannt. Dies betrifft aber auch viele der 3D-Assets, die über 3D-Plattformen angeboten werden und häufig eine vergleichsweise hohe Polygonzahl aufweisen. Für die meisten 3D-Szenen sind derart detaillierte Modelle eine unnötig starke Belastung, zumal meist nicht nur ein solches Asset in die Szene geladen wird.

 

Abb. 1 Visualisierung zum Beispielprojekt „Urban Villa“. Die 3D-Szene sowie alle zugehörigen Materialien und Assets können im Gumroad-Shop erworben werden.

 

Gerade bei Außenvisualisierungen summieren sich nicht nur die Polygone der detaillierten Pflanzenmodelle zu einer Systembelastung, sondern auch Möbel und Einrichtungselemente. Häufig würden einfache low-poly-Modelle für solche Szenen ausreichen, da durch die spiegelnden Fensterscheiben meist nur die unmittelbar dahinter liegenden Einrichtungsobjekte der Innenräume deutlich erkennbar sind.

Auch in der hier behandelten Szene „Stadtvilla“ sind die Möbel und Einrichtungsobjekte überwiegend in stark reduzierten Formen und ohne unnötige Details ausgeführt.

Gerade bei Hintergrundobjekten und speziell Pflanzendarstellungen ist immer auch zu überlegen, ob diese Objekte nicht als Billboards dargestellt werden können, da sich dadurch erhebliche Ressourcen einsparen lassen (s. Kap. 1.2).

 

Objekt-Anzahl

Der andere Faktor, der die Darstellungsleistung im Viewport beeinflusst, ist die Anzahl von Objekten, die sich in einer Szene befinden. Sind nämlich zu viele Einzelobjekte vorhanden, sinkt die Geschwindigkeit des Viewports rapide, denn Cinema 4D muss für jedes Objekt die Position, Ausrichtung, Dimensionen, etwaige Generatoren und Effekte, die darauf einwirken usw. im Darstellungsprozess mitführen. Eine zu große Zahl von separaten Objekten in einer Szene kann also auch ein leistungsstarkes System rasch in die Knie zwingen. Bei Architekturvisualisierung sieht man sich besonders während des Imports von CAD-Daten mit diesem Problem konfrontiert (s.o.), da die CAD-Objekte beim Import in unzählige Pfade und Einzelobjekte zerlegt und in verschachtelte Ordnerstrukturen abgelegt werden.

Um hier die Leistungsfähigkeit von Cinema 4D aufrecht zu erhalten, sollten nach dem Import nach Cinema 4D alle Pfade einem Verbinden-Objekt untergeordnet werden, damit Cinema 4D die einzelnen Pfade in der Darstellung als ein Objekt behandelt (s. Kapitel 1.3.2 CAD-Referenzen). Anschließend können die nicht benötigten Pfade und Segmente innerhalb dieser Gruppe gelöscht werden, ohne dass man durch eine schwache Viewport-Performance in dieser Arbeit behindert wird.

 

Generatoren und XPresso-Schaltungen

Cinema 4D kann die Viewport-Ansicht am schnellsten berechnen, wenn möglichst „reine“ Polygone für die Darstellung berechnet werden müssen. Alle Generatoren (Subdivision Surface-, Extrudieren-Objekte, parametrische Grundobjekte, Instanzen, Kloner-Objekte, usw.) und XPresso-Schaltungen in einer Szene verlangsamen den Darstellungsprozess.

Will man im Sinne eines reversiblen Arbeitsprozesses die betreffenden Objekte und Generatoren nicht mittels des Befehls Aktuellen Zustand in Objekt wandeln bzw. Grundobjekt konvertieren in ein editierbares Mesh verwandeln, kann man zum flüssigen Arbeiten im Viewport die Generatoren zumindest vorübergehend deaktivieren und erst für das Rendering wieder aktivieren.

Eine bequeme Möglichkeit, alle verwendeten Generatoren, Deformer usw. anzusteuern ist der Filter des Objekt-Managers (s. Abb. 2). Aktiviert man den Filter, werden alle vorhandenen Kategorien des Projekts aufgelistet. Wählt man eine der Kategorien (z.B. den Bevel-Deformer aus, werden im Attribute-Manager alle Einstellungen angezeigt, die für sämtliche Elemente der gewählten Kategorie verfügbar sind. Hier lassen sich auch (je nach verwendetem Elemente-Typ) alle Elemente der Kategorie an- oder ausstellen. Während des Modeling-Prozesses kann es z.B. sinnvoll sein, alle Generatoren zu deaktivieren. Will man sie für das finale Rendering wieder aktivieren, ist dies dank der Filter-Funktion eine Sache von wenigen Klicks.

Abb. 2 Die Filter-Funktion bietet jederzeit Einblick in die verwendeten Generatoren, Deformer und anderen Elemente des Projekts. Zudem erlaubt er, diese Elemente zu aktivieren bzw. deaktivieren.

 

Instanzen

Die kritische Objektanzahl einer Szene wird vor allem beim Einsatz von Klon-Objekten schnell erreicht. Hier bieten Instanzen eine Lösung an: Allerdings gibt es hier Unterschiede zwischen den Instanzen-Typen, die beachtet werden sollten:

Tunlichst vermeiden sollte man den Einsatz von einfachen Instanzen, denn diese werden von Cinema 4D nicht anders behandelt als Kopien eines Objekts. Jedes Instanz-Objekt dupliziert intern eine komplette Kopie mit allen Effektoren und Deformatoren des Referenz-Objekts, was selbst bei wenigen Instanzen schnell eine große Menge an Objekten zur Folge hat – und viel Speicherplatz verbraucht. Der ursprüngliche Ansatz zum Gebrauch von Instanzen war, die Arbeit an vielen identischen Objekten zu vereinfachen, indem Manipulationen am Referenzobjekt auf alle Instanz-Objekte übertragen werden.

Bei Renderinstanzen wird dagegen nur ein einzelnes Referenzobjekt belassen, die Vervielfältigung erfolgt über echte Instanzen dieses Referenzobjekts, so dass die Anzahl an Objekten, die Cinema 4D in der Visualisierung der Klone im Viewport verwalten muss, deutlich kleiner ausfällt. Aber auch diese Methode kann das System an seine Grenzen führen, wenn eine große Anzahl von Objekten geklont werden muss – etwa bei Rasenflächen.

Dagegen sind die neuen Multiinstanzen am effizientesten in der Speicherbelastung, da hier alle Klon-Instanzen wie ein einziges Objekt behandelt werden. Der Vorteil von Render- und Multiinstanzen liegt vor allem in der Entlastung des Viewports, denn Cinema 4D muss mit den Instanzen weniger Objekte berechnen, was sich vorteilhaft auf die Leistungsfähigkeit auswirkt. Wie eingangs bereits beschrieben, muss die Viewport-Darstellung in Cinema 4D von nur einem CPU-Kern getragen werden.

Render- und Multiinstanzen bieten darüber hinaus den Vorteil, dass sie den Speicherbedarf einer Szene reduzieren, denn die einzelnen Instanzen referenzieren nur auf das Ursprungsobjekt, ohne selbst viel Speicherplatz in Anspruch zu nehmen. Besonders bei Staffage-Elementen mit hoher Polygonzahl, also Vegetationselemente oder Möbel, kann diese Reduzierung des Speicherbedarfs der Szene entscheidend sein. Auch geht das Laden einer Szene in Cinema 4D und die Überführung in die Renderpipeline mit Render- und Multi-Instanzen erheblich zügiger vonstatten.

 

Proxies

Während Instanzen beim Klonen von Objekten zum Einsatz kommen, um das Bearbeiten vieler identischer Objekte zu vereinfachen und gleichzeitig die Viewport- und Renderleistung zu verbessern, sind Proxies Stellvertreterobjekte für die Original-Objekte selbst. Sie nehmen das betreffende Objekt aus der Szene und lagern es in einer eigenen Proxy-Datei aus. Das Stellvertreter-Objekt in Cinema 4D enthält dann nur noch die Texturen und Informationen zur Position und Größe des Objekts. Zwar dauert das Hineinladen des Proxy-Objekts in die Szene länger, doch wird der Speicherplatzbedarf der Projektdatei selbst dadurch kleiner und die Darstellung im Viewport somit flüssiger. Für die „Stadtvilla“-Szene verwende ich Corona und Vray Proxy-Objekte.

Um Probleme beim Export von Corona Proxy-Objekten zu vermeiden und die Zuordnung der Texturen des Quellobjekts einfach zu gestalten, reduziere ich Objekte, die aus mehreren Mesh-Objekten bestehen zu einem Objekt (Objekte verbinden und löschen).

Im Fall des Corona Renderers müssen, nachdem das Corona Proxy erstellt und mit dem Referenzobjekt verlinkt wurde, alle Material-Tags des Referenzobjekts in exakt derselben Reihenfolge auf das Proxy-Objekt verschoben werden. Selektions-Tags müssen NICHT übertragen werden, da diese im Proxy-Objekt bereits hinterlegt sind.

Um auch nach Erstellung der Proxies die Viewport-Performance hoch zu halten, empfiehlt sich auch hier die Darstellung der Proxies als „Gitterbox“ (Wire bounding box). Einzustellen über die „Visualizsation method“ im Attribute-Manager des Proxy-Objekts.

 

Darstellungs-Tags und LOD

Das Darstellungs-Tag erlaubt die Steuerung der Art, wie das mit dem Tag belegte Mesh im Viewport abgebildet wird. Ich setze dieses Tag sowohl bei einzelnen Objekten wie auch Objektordnern ein, um die Darstellungsform bestimmter Szene-Elemente gezielt steuern zu können. Nützlich ist dies v.a. bei Vegetationsmodellen, die häufig größere Teile der Szene verdecken. Mithilfe des Darstellung-Tags können diese Objekte z.B. als Würfel im Linien-Modus abgebildet werden, während der Rest der Szene als echte Mesh-Objekte dargestellt wird.

Die Detailstufe (25%/50%/100%) in den Viewport-Einstellungen regelt die Menge der abgebildeten Klon-Objekte. Die Detailstufe (level of detail, LOD) kann auch in den Projektvoreinstellungen definiert werden. Gerade bei einer großen Zahl von Pflanzen-Klonen lässt sich durch die Reduzierung der Darstellungsart dieser Elemente die Agilität des Viewports auf einfache Weise optimieren.

 

Die Fortsetzung dieses Kapitels mit vielen weiteren nützlichen Informationen und Links zum Thema Szenen-Komposition und -Konzeption findet ihr im Handbuch Professionelle Architekturvisualisierungen mit Cinema 4D zu finden, das online im Gumroad-Shop zu erwerben ist. Eine englische Fassung liegt dort ebenfalls vor.