Objekt-Profiler
Sie kennen sicherlich den Effekt, dass große und komplexe Szenen im Handling, Navigieren, der Animation, der Vorbereitungszeit beim Rendern etc. ziemlich zäh werden können. Dabei ist es oft schwierig zu erkennen, wo der Flaschenhals genau sitzt: welches Objekt oder welches Tag ist dasjenige welche, das am meisten Berechnungszeit braucht (s.a. Warum ein Objekt-Profiler?)?
Diese Aufgabe übernimmt jetzt der Objekt-Profiler. Er misst die Berechnungszeiten der einzelnen Objekte und Tags und zeigt sie Ihnen in übersichtlicher Form an. So erkennen Sie auf einen Blick rechenzeitintensive Elemente.
Das kann z.B. so aussehen:

In obigem Beispiel sehen Sie auf den ersten Blick, wer hier der “Übeltäter” ist: mit großem Abstand verbraucht hier das Boole-Objekt die meiste Rechenzeit.
Oben im Fenstertitel sehen Sie die Gesamtrechenzeit (hier 3057.3 Millisekunden ≈ 3 Sekunden) angegeben. Im Fenster selbst - der ein vereinfachter Objekt-Manager ist - sind alle Objekte und Tags samt ihren jeweiligen Rechenzeiten aufgelistet. Dabei sind die Elemente entsprechend der Rechenzeit sortiert. Oben finden sie jeweils die rechenaufwendigsten. Mit dem grünen Haken bzw. dem roten Kreuz können Elemente deaktiviert bzw. wieder aktiviert werden.
Warum ein Objekt-Profiler?
An vielen Stellen ist es wichtig - oder zumindest aufschlussreich - zu wissen, wofür die kostbare Rechenzeit aufgewendet wird. Natürlich ist es z.B. schön und befriedigend, eine voll parametrische Szene gebaut zu haben, die nur 400 kB Speicher auf der Festplatte benötigt, aber in der Ansicht ein äußerst komplexes Objekt erzeugt. Wenn dann allerdings die Bilderrate in der Ansicht auf 1 Bild pro Sekunde einbricht und die Navigation nur mit einer Diaschau zu vergleichen ist, dann ist das einfach unpraktisch. Hierbei kann der Objekt-Profiler helfen, die größten Zeitfresser zu identifizieren und diese z.B.
- zu deaktivieren.
- zu backen (z.B. Partikel- oder Rigid-Body-Simulationen).
- mit leichteren, schneller zu berechnenden Einstellungen zu versehen.
- durch einen anderen Workflow zu erzeugen.
- zu einem Polygonobjekt umzuwandeln etc.
Wichtig zu wissen
- Der Objekt-Profiler misst keine Prozesse, die auf der Grafikkarte/GPU laufen (z.B. Simulationen) oder beim Rendern passieren. Außerdem werden einige Deformer, sowie eine Anzahl an Tags nicht gemessen (z.B. Hair-Tags, Phong-Tag etc., allgemein alle Tags, die nicht wirklich berechnet werden müssen).
- Solange der Objekt-Profiler geöffnet ist, misst er. Da er selbst relativ wenig Resourcen verbraucht, sollte er dabei keinen wahrnehmbaren, negativen Effekt auf die Szenenperformanz haben.
- Nehmen Sie nicht alle hier angezeigten Werte für bare Münze: intern wird in Cinema 4D mitnichten alles ständig neu berechnet! Wenn Sie sich z.B. ein Extrudieren-Objekt vorstellen, das aus einem Spline mittels Verschiebung Polygone erzeugt, dann wird das erzeugte Polygon-Mesh intern in einem Cache gespeichert und vorgehalten. Und das so lange wie möglich. D.h. die Rechenzeit für die Generierung des Extrude-Objekts wird z.B. nur beim Laden der Szene aufgewendet, während es bei einer Messung in Bild 15 dann z.B. kaum weiterer Rechenzeit bedarf (es sei denn, Sie ändern dort z.B. den Spline und lösen damit eine Neuberechnung aus). Internes Cachen von Objekten passiert an unzähligen Stellen in Cinema 4D. Wann genau diese internen Caches dann aktualisiert werden - sprich neu berechnet - ist für den Benutzer weitgehend intransparent. Deshalb kann der Objekt-Profiler nicht zu jedem Zeitpunkt die eigentliche - sprich maximale - Rechenzeit für jedes Element korrekt wiedergeben! Allerdings können Sie mit den verschiedenen Profilmodi im Menü “Ansicht” Einfluss nehmen, indem Sie z.B. die Animation ablaufen lassen und der Objekt-Profiler immer nur den bis dahin gemessenen Maximalwert anzeigt.
- Da der Objekt-Profiler eine vereinfachte Objekt-Manager-Ansicht bietet, wird er diesbezüglich nicht im Detail beschrieben. Details zum Objekt-Manager finden Sie ebendort.
Objekt-Profiler-Befehle und -Einstellungen
Hier werden nur die Befehle und Einstellungen behandelt, die es im Objekt-Manager nicht gibt. Alles andere funktioniert analog zu diesem.
Ansicht-Menü
Die gemessenen Werte können parallel auch direkt im Objekt-Manager eingeblendet werden, sofern Sie diese Option aktivieren. Diese sind dort aber auch nur bei gleichzeitig geöffnetem Objekt-Profiler sichtbar!

Nanu, aber warum sehen Sie im Objekt-Manager 2 Spalten? Diese haben - vereinfacht gesagt - folgende Bedeutung:
- die linke Spalte zeigt die Messungen für das Objekt inkl. seinen Tags.
- die rechte Spalte zeigt die Messungen für das Objekt inkl. dessen Unterobjekte/Tags an. Darüber hinaus ist ebenfalls die Zeit enthalten, die das Objekt evtl. in anderen Objekten “verbringt”. Was ist damit gemeint? Stellen Sie sich einen Kloner vor, auf den der Python-Effektor wirkt. Die Python-Effektor-Berechnungszeit wird dann ebenfalls beim Kloner selbst mit eingerechnet.
Profilmodus
Der Profilmodus ist der vielleicht wichtigste Parametersatz hier im Objekt-Profiler. Versuchen Sie diese 4 Einstellungen möglichst gut zu verstehen, damit Sie wissen, was der Objekt-Profiler eigentlich misst. Dazu muss etwas weiter ausgeholt werden.
Selbst ein einfacher Klick in den Objekt-Manager veranlasst Cinema 4D zu einer Szenenberechnung aller Objekte (“Szenenausführung”). Das wäre für unveränderte, bereits berechnete Objekte natürlich übertrieben: wenn keine Eingangsparameter neu eingegeben wurden (sei es manuell oder animiert), muss ja eigentlich nichts neu berechnet werden. Und das passiert auch nicht, denn solche Objekte wissen normalerweise, ob sie neu berechnet werden müssen oder nicht und geben das so auch an Cinema 4D weiter - das Objekt wird dann aus dem bereits berechneten Cache geholt. Nur, und jetzt kommt das große Aber, der Objekt-Profiler weiß nicht, ob die gemessene Objektzeit jetzt für das bloße Überprüfen eines unveränderten Objekts oder eben doch dessen komplette Neuberechnung gilt. Deshalb gibt es diese vier, weiter unten beschriebenen Modi.
Beispiel
Laden Sie einmal die folgende Szene und öffnen Sie den Objekt-Profiler (
).Aktivieren Sie dort im Menü unter
die Option Letzte Ausführung.In der Szene wirken eine Reihe von Generatoren, die aus einem Kreis-Spline eine Art gezackte Korona erstellt: Aus einem Kreis-Spline macht ein Displacer-Deformer einen gezackten, der mit Hilfe eines Sweep-Objekts ein Polygon-Mesh erzeugt. Dieses Polygon-Mesh konvertiert ein Volumenerzeuger in Voxel, glättet diese etwas, woraufhin ein Volumenmesher schlussendlich das Ziel-Mesh generiert.
Es werden also nacheinander eine Reihe von rechenaufwendigen Prozessen durchgeführt.
Klicken Sie jetzt mehrfach in einen leeren Bereich des Objekt-Managers - oder auch Objekt-Profilers - und beobachten Sie die gemessenen Zeiten im Objekt-Profiler (Abbildung links).
Danach drücken Sie jetzt mehrfach die Taste A (Abbildung rechts). Es ergeben sich auf einem Mittelklasse-PC (2024) in etwa folgende Zeiten:

Es zeigen sich hier dramatisch unterschiedliche Zeiten. Warum das?
Beim Klick in den Manager wird eine Szenenausführung unter Berücksichtigung aller Caches und Rechenzeit sparender Maßnahmen ausgeführt. Das geht sehr schnell. Im zweiten Fall (Taste A = Neuzeichnen) wird eine komplette Szenenausführung veranlasst, wobei jedes Objekt neu berechnet wird. Das passiert z.B. automatisch, wenn Sie eine Szene laden, hierbei kann Cinema 4D noch auf keine Caches (es sei denn, Sie haben diese explizit vorher mit abgespeichert) zurück greifen, sondern muss alles zunächst berechnen.
Das nur zum Unterschied, wie dramatisch verschiedenen gemessene Zeiten sein können.
In diesem Modus wird die Dauer der letzten Szenenausführung angezeigt. Und das quasi in Echtzeit, d.h. wenn Sie mit der Maus irgendwohin klicken oder in der Ansicht einfach nur über die Szene fahren, oder wann immer Cinema 4D eine neue Szenenausführung durchführt, wird das direkt angezeigt. D.h. es kann passieren, dass sich die Werte hier laufend ändern und die eine für sie wichtige Messung geht evtl. unter. Siehe auch Beispiel, wo dieser Modus verwendet wird.
Dieser Modus gilt pro (Animations-)Bild. Von den unter Umständen zahlreichen Szenenausführungen, die pro Bild passieren, wird immer nur das Ergebnis mit der längsten Berechnungszeit angezeigt, langsamere werden direkt überschrieben. Wechseln Sie das (Animations-)Bild, wird die vorherige Maximalzeit gelöscht und von vorne begonnen.
Das Problem hierbei: Sie ändern z.B.bei einem Volumenerzeuger die Voxelgröße um auszuprobieren, wie sich das auf die Rechenzeit auswirkt. Im Modus Aktuelles Bild würde Ihnen keine kürzere Zeit angezeigt. Dazu schalten Sie dann in den nächsten Modus:
Funktioniert ähnlich wie Aktuelles Bild, nur dass bei jeder Änderung von Ihnen an einem Objekt oder Tag neu gemessen wird. D.h. Sie sollten diesen Modus verwenden, wenn Sie den Einfluss von Parameteränderungen studieren wollen, da dann auch - im Gegensatz zur vorherigen Option - sich verringernde Zeiten angezeigt werden.
In diesem Modus schlussendlich geht es um das Entdecken von Zeitfressern über eine ganze Animation hinweg. Lassen Sie die Animation dazu einmal komplett durchlaufen (s.a. Tipp unten).
Es werden laufend die maximalen Elementberechnungszeiten pro Bild ermittelt (also wie es Aktuelles Bild für den aktuellen Zeitpunkt auch macht), wobei der Objekt-Profiler immer nur das bis zu diesem Zeitpunkt ermittelte Maximum anzeigt. Startet die Animation von vorne, wird das angezeigte Maximum ebenfalls zurückgesetzt.
Stellen Sie sich vor, in Bild 67 wird ein zuvor deaktivierter Remesher per Animation angeschaltet. Dessen Rechenzeit wird in den Bildern 0-66 natürlich nicht angezeigt. Deshalb ist eine Messung über die gesamte Animation von Nöten, damit alles berücksichtigt werden kann.
- Setzen Sie den Abspiel-Modus (z.B. im
Einfach, damit die Animation im letzten Bild anhält; startet die Animation von vorne, würden bereits gemessene Zeiten wieder gelöscht.
) auf - Setzen Sie die Bilder-Rate (z.B im
Alle Bilder, damit keine Animationsbilder übersprungen werden und deren Messergebnisse im Objekt-Profiler fehlen.
) auf
Einheit
Definieren Sie hier die Art und Weise, wie die Zeitmessungen angezeigt werden sollen.
Die Zeiten werden in ms (Millisekunden = tausendstel Sekunden) angezeigt.
Hier werden die einzelnen Elemente immer als Anteil der Gesamtmesszeit in Prozent angezeigt
Hier werden die Zeiten entweder in “ms” (Millisekunden = tausendstel Sekunden) oder “µs” (Mikrosekunden = millionstel Sekunden) angezeigt. Sollte die Anzeige in “µs” vierstellig werden, wird automatisch auf “ms” umgeschaltet.