In diesem Tutorial werden wir die Eigenschaften, Einstellungen, Gemeinsamkeiten und Unterschiede zwischen Depth und Mist untersuchen: zwei Compositing Render Passes in Blender, die uns Informationen über die Entfernung von Objekten oder die Tiefe der Szene in der Postproduktion liefern.
Videotranskript
Hallo zusammen! In diesem Tutorial werden wir die Eigenschaften, Einstellungen, Gemeinsamkeiten und Unterschiede zwischen Depth und Mist untersuchen: zwei Compositing Render Passes in Blender, die uns Informationen über die Entfernung von Objekten oder die Tiefe der Szene in der Postproduktion liefern.
Beide können verwendet werden, um Bilder zu erhalten, die an den Punkten, die der Kamera am nächsten sind, schwarz erscheinen und an den am weitesten entfernten Punkten weiß. Dadurch können wir Effekte erzeugen, indem wir diese Bilder entweder direkt mit dem Rendering mischen oder sie als Masken verwenden, um andere Effekte zu erstellen, wie ich es zum Beispiel in meiner Videotutorial-Reihe über Atmospheric Perspective gezeigt habe.
Es gibt jedoch einige Unterschiede, nicht nur darin, wie der Wertebereich in der virtuellen Szene berechnet wird, sondern auch in anderen Eigenschaften der resultierenden Bilder, die sie für bestimmte Anwendungen mehr oder weniger geeignet machen können. Um diese Unterschiede besser zu erklären, werde ich im Verlauf des Tutorials ein paar 3D-Szenen verwenden und euch die Unterschiede in den Ergebnissen zeigen, während ich jedes Mal einige Einstellungen ändere.
Kurz gesagt besteht der Unterschied zwischen Depth und Mist darin, dass Depth die tatsächlichen Entfernungswerte der Objekte von der virtuellen Kamera zurückgibt, während Mist Nebel ab einer bestimmten Entfernung von der Kamera hinzufügt und diesen über eine bestimmte Tiefe verstärkt, ab der alles weiß wird.
Deshalb eignet sich Depth besser für Anwendungen, bei denen die echten Distanzwerte verwendet werden müssen, zum Beispiel mit den Nodes Defocus und Z-Combine.
Defocus ermöglicht es, auf Elemente in einer bestimmten Entfernung von der Kamera zu fokussieren und andere unscharf darzustellen, wodurch also Depth of Field umgesetzt wird.

Z-Combine hingegen ermöglicht es, zwei Szenen zu mischen, indem bestimmt wird, welche Pixel angezeigt und welche ausgeblendet werden sollen. Grundlage dafür sind die Distanzwerte zur Kamera, die in den Z- oder Depth-Feldern jeder Szene oder jedes Bildes gespeichert sind.

Das bedeutet jedoch nicht, dass Depth nicht auch in anderen Fällen verwendet werden kann: Ich selbst habe es in der Reihe über Atmospheric Perspective verwendet, musste dort aber die von Depth zurückgegebenen Informationen normalisieren. Wir werden gleich sehen, was das Normalisieren von Depth bedeutet und welche Auswirkungen das auf die Daten haben kann.
Der Depth Render Pass ist standardmäßig im Abschnitt Passes des Tabs View Layers im Properties Editor ausgewählt. In diesem Tab heißt dieser Render Pass Z, während er im Render Layers Node des Compositing Editors Depth genannt wird.

Der minimale Distanzwert, den Depth zurückgibt, wird durch den Wert Clip Start des Camera-Objekts bestimmt, da alle Objekte, die näher an der Kamera liegen als Clip Start, nicht gerendert werden. Deshalb ist dies der minimale Wert, den Depth zurückgeben kann, sofern die Ausgabe von Depth nicht normalisiert wird.

Der maximale Distanzwert, den Depth zurückgibt, wird dagegen durch den Wert Clip End des Camera-Objekts bestimmt, da alle Objekte, die weiter entfernt liegen als dieser Wert, nicht gerendert werden. Der Hintergrund des virtuellen Universums wird als unendlich weit entfernt betrachtet und erhält daher den maximalen Wert in der Depth-Maske.
Ihr könnt die Punkte Clip Start und Clip End in der 3D-Szene anzeigen, indem ihr die virtuelle Kamera auswählt und die Option Limits im Abschnitt Viewport Display des Tabs Data im Properties Editor aktiviert.
Auf diese Weise wird es einfacher, den Wert für Clip End passend einzustellen.

Mist hingegen liefert ein Bild zurück, das mit zunehmender Entfernung von der Kamera immer weißer wird. In diesem Fall wird der Startpunkt des Nebeleffekts jedoch nicht durch Clip Start bestimmt, sondern durch einen Wert, den wir frei festlegen können und der Mist Start heißt.
Im Gegensatz zu Depth, das standardmäßig aktiv ist, muss der Mist Render Pass im Abschnitt Passes ausdrücklich aktiviert werden. Das sollte vor dem Start des Renderings erfolgen, da die Informationen sonst nicht berechnet werden und das Rendering erneut gestartet werden muss, um sie zu verwenden.
Nach der Aktivierung des Mist Render Pass erscheint im Tab World ein neuer Abschnitt namens Mist, in dem wir Mist Start und weitere Parameter einstellen können.

Es gibt noch einen weiteren Unterschied zwischen Mist und Depth: Mist verwendet nicht Clip End, um die Entfernung festzulegen, ab der alle Objekte weiß gerendert werden. Stattdessen wird ein Parameter namens Mist Depth verwendet. Alle Objekte in einer Entfernung von Start + Depth werden daher weiß dargestellt.
Ihr könnt Mist Start und Mist Depth auch im 3D Viewport anzeigen, indem ihr einfach die Checkbox Mist im Abschnitt Viewport Display des Tabs Data aktiviert. Falls ihr zusätzlich Limits aktiviert habt, empfiehlt es sich, diese Option wieder zu deaktivieren, da sich die Darstellungen überlappen.

Bevor ich erneut rendere, stelle ich die Werte für Mist Start und Depth so ein, dass sich der Effekt mit den Werten Clip Start und Clip End überlappt.
Im Abschnitt Mist des Tabs World gibt es noch einen weiteren Parameter: Falloff. Dieser bestimmt, wie der Nebel über die Entfernung hinweg umgesetzt wird. Der Standardmodus ist Quadratic, aber es gibt auch Optionen wie Inverse Quadratic und Linear.
Quadratic erzeugt denselben Übergang wie Licht und sorgt für einen weicheren Übergang von 0 zu 1. Linear erzeugt einen etwas schärferen Übergang als Quadratic. Inverse Quadratic dagegen wechselt sehr schnell von 0 zu 1 und zeigt dadurch dichten Nebel selbst bei Vordergrundobjekten.

Z-Depth besitzt diesen Parameter nicht, da es sich nicht um einen Effekt handelt, der anhand einer Formel umgesetzt wird. Stattdessen liefert es die echten Distanzwerte der Objekte zurück. Man könnte sagen, es ist immer linear, aber diese Aussage ergibt eigentlich wenig Sinn.
Wie bereits erwähnt eignet sich Z-Depth daher besser, um Informationen über reale Entfernungen zu erhalten, während Mist besser geeignet ist, um den Effekt zu erzeugen, nach dem es benannt ist, da sich dessen Eigenschaften frei festlegen lassen.
Wenn wir jetzt rendern und die Passes in einem Compositor-Fenster betrachten, erhalten wir ein interessantes Ergebnis aus dem Mist-Output, während die Maske aus Depth zumindest auf den ersten Blick unbrauchbar erscheint.

Sehen wir uns nun an, was mit „Depth normalisieren“ gemeint ist und warum in vielen Tutorials häufig der Normalize Node verwendet wird.
Wie bereits erwähnt liegen die von Z-Depth zurückgegebenen Werte nicht im Bereich von 0 bis 1, sondern stellen tatsächlich Entfernungen zur virtuellen Kamera dar. Das kann nützlich sein, wenn ihr zum Beispiel einen Effekt exakt ab einer bestimmten Entfernung zur Kamera einsetzen möchtet.

Die gespeicherten Zahlen können sehr groß sein, weshalb das Z-Depth-Feld die Daten mit mehr Speicher als den üblichen 8 oder 16 Bit der meisten Bilddateien wie JPG oder PNG speichert. Ich bin ziemlich sicher, dass tatsächlich 32 Bit verwendet werden.
Außerdem werden im Backdrop alle Werte größer als 1 auf diesen Wert begrenzt oder „geclamped“, und die entsprechenden Pixel werden weiß dargestellt. Die Z-Depth-Werte werden jedoch durch Clip End bestimmt, was normalerweise deutlich größer als 1 ist.
Aus diesen Gründen werden die zurückgegebenen Werte im Backdrop des Compositing Editors nicht korrekt angezeigt, da dort alle Werte größer als 1 als weiß dargestellt werden. Deshalb wirken die Bilder in den meisten Fällen sehr hell und detailarm …
... tatsächlich liegt in der von mir verwendeten Szene der Wert für Clip Start bei 1 und Clip End bei 20000, weshalb der Depth Pass komplett weiß erscheint!
Aus diesem Grund wird häufig der Normalize Node aus der Gruppe Utilities verwendet, um die Werte in den Bereich von 0 bis 1 umzuwandeln. An diesem Punkt müssen wir jedoch kurz innehalten, denn es gibt eine wichtige Klarstellung.

Der Normalize Node bildet die Werte nicht zwischen Clip Start und Clip End auf den Bereich von 0 bis 1 ab. Stattdessen berücksichtigt er die minimalen und maximalen Werte der Pixel im Bild, das er verarbeitet.
Dieses Bild entspricht jedoch nicht dem, was wir im Backdrop sehen, da der Depth-Kanal, wie bereits erwähnt, viel mehr Daten speichert als sichtbar dargestellt werden.
Deshalb erscheinen die Elemente am unteren Rand des Renderings schwarz, wenn wir einen Normalize Node zwischen den Depth-Output und den Viewer schalten. Das liegt daran, dass diese Punkte der virtuellen Kamera am nächsten sind und daher die dunkelsten Werte in der Depth-Maske besitzen. In der normalisierten Version werden sie deshalb schwarz dargestellt, obwohl sie eindeutig nicht in Clip-Start-Entfernung zur Kamera liegen!

Ähnliche Überlegungen gelten für weiter entfernte Objekte und für Pixel, die in der normalisierten Version der Depth-Maske weiß erscheinen.
Als weiterer Beweis dafür, dass Normalize auf die minimalen und maximalen Werte des gelieferten Bildes wirkt, schaut euch an, was passiert, wenn ich auch die Informationen von Mist normalisiere: Die Pixel am unteren Rand, die die dunkelsten Werte besitzen, werden auf 0 abgebildet und daher schwarz dargestellt, während die Pixel der am weitesten entfernten Elemente bereits weiß waren und deshalb unverändert bleiben.
Ich zeige euch jetzt ein weiteres Beispiel, um dieses Konzept besser zu verstehen. In der Szene, die ich euch jetzt zeige, befinden sich die Kamera und einige Objekte innerhalb eines Raumes.
Der Wert für Clipping End der Kamera ist so eingestellt, dass die Vorderseite der am weitesten entfernten Box im Raum gerendert wird, die Rückwand des Raumes jedoch nicht.

Tatsächlich ist nicht einmal die entfernteste Box vollständig sichtbar, was jedoch auf den Perspektiveffekt der Kameraperspektive zurückzuführen ist.

Es gibt keine Objekte in der Nähe von Clip Start, das auf 10 Zentimeter Abstand zur Kamera eingestellt ist. Selbst die Wände des Raumes an den Bildrändern befinden sich weiter entfernt als dieser Wert.
Wenn ich jetzt rendere und den nicht normalisierten Depth Render Pass betrachte, ist die Rückwand vollständig weiß, weil der Depth Pass tatsächlich nicht über die entfernteste Box hinaus „sieht“ und alles dahinter als weiß rendert.
Es gibt jedoch keine schwarzen Bereiche, weil sich, wie bereits erwähnt, keine Objekte in der Nähe von Clip Start befinden.

Wenn wir jedoch einen Normalize Node verwenden, entsteht am unteren Rand ein schwarzer Streifen, den wir auch bereits im Rendering der zuvor verwendeten Szene gesehen haben. Dieser Teil des Bodens liegt offensichtlich am nächsten zur Kamera.

Wir können das Gesagte überprüfen, indem wir eine der Seitenwände weiter nach innen verschieben, sodass sie näher an der Kamera liegt, und anschließend erneut rendern.

Es ist wichtig zu verstehen, wie die Depth-Maske durch Normalize verändert wird.
Dieser Node sollte nicht mit Mist verwendet werden, und auch bei Depth sollte sein Einsatz sorgfältig entschieden werden. Er ist nützlich, um Masken für Spezialeffekte wie die bereits erwähnte Atmospheric Perspective zu erzeugen, während er in anderen Fällen nicht verwendet werden sollte.
Ihr fragt euch jetzt vielleicht, ob es eine Möglichkeit gibt, die Werte von Clip Start und Clip End in den Bereich von 0 bis 1 abzubilden, um die Depth-Maske im Backdrop sichtbar zu machen …
… und ja, die gibt es: Fügt im Compositor einen Map Range Node aus der Gruppe Utilities hinzu und setzt anschließend die Werte From Min und From Max des Nodes auf die Werte Clip Start und Clip End der Kamera.
Ihr erhaltet dadurch eine Maske ähnlich dem Mist Pass, verliert dabei aber natürlich die echten Tiefenwerte.

Es gibt noch einen letzten wichtigen Unterschied, den wir hervorheben sollten, bevor wir dieses Tutorial abschließen: die Anzahl der Samples, die verwendet werden, um die Distanzwerte der Objekte in der Szene zu berechnen.
Mist implementiert nämlich auch Anti-Aliasing, was bei Z-Depth nicht berechnet wird.
Der Z-Depth-Wert verwendet insbesondere nur ein einziges Sample und kann daher problemlos eingesetzt werden, wenn keine Effekte wie Motion Blur oder Depth of Field verwendet werden, also in Fällen, in denen das Mischen der Tiefenwerte nicht notwendig ist. Wenn die Tiefenwerte gemischt werden müssen, ist Mist besser geeignet.

Abschließend noch eine Betrachtung zu den Color-Management-Einstellungen des Renderings und dazu, wie die Z-Depth- und Mist-Masken im Backdrop dargestellt werden.
Je nach gewähltem Modus für den Parameter View Transform können die auf dem Bildschirm angezeigten Ergebnisse sowohl für Mist als auch für Depth, normalisiert oder nicht normalisiert, stark variieren.

Diese Transformationen sollten jedoch nur beeinflussen, wie die Daten im Backdrop angezeigt werden, und ihre eigentlichen Werte nicht verändern.

Gut, das war alles für dieses Tutorial! Ich hoffe, es war hilfreich! Bis bald!