Ambient Occlusion
Anwendung von AO

Umgebungsverdeckung (englisch Ambient Occlusion, AO) ist eine Shading-Methode, die in der 3D-Computergrafik verwendet wird, um mit relativ kurzer Renderzeit eine realistische Verschattung von Szenen zu erreichen. Das Ergebnis ist zwar nicht physikalisch korrekt, reicht jedoch in seinem Realismus oft aus, um auf rechenintensive globale Beleuchtung verzichten zu können.

Umgebungsverdeckung wird zusätzlich zum herkömmlichen Shading mit Phong Shading oder ähnlichen Algorithmen berechnet. Das Ergebnis der AO Berechnung wird als Graustufenbild einfach mit dem herkömmlichen Renderergebnis multipliziert. Dies kann direkt beim Rendern, oder auch erst in der Nachbearbeitung erfolgen. Ein Bild, das mittels Umgebungsverdeckung berechnet wurde, ähnelt der Beleuchtungssituation eines bewölkten Tages – äußerst diffuse Schattierungen sind das Hauptmerkmal.

Inhaltsverzeichnis

Funktionsweise

Umgebungsverdeckung basiert auf der Beobachtung, dass in Ritzen und Ecken normalerweise eine geringere Beleuchtungsstärke vorherrscht, was hauptsächlich auf die zahlreichen, diffusen Reflexionen, die an diesen Engstellen auftreten, zurückzuführen ist. Umgebungsverdeckung wird von den meisten Renderengines in Form eines Shaders oder als globaler Effekt unterstützt.

Das Umgebungsverdeckungsverfahren beruht auf der Grundannahme, dass ein Objekt, eine Menge von Objekten oder eine ganze Szene von einer Einheitskugel aus Licht umgeben wird. Ankommendes Licht kann also nur mittels Selbstverdeckung durch diese Geometrie blockiert oder prozentual abgeschwächt werden. Dabei werden zwei Parameter pro Messpunkt errechnet: Der prozentuelle Grad der Verdeckung und der sogenannte Bent Normal, der in die Richtung der prozentual niedrigsten Verdeckung zeigt. Der Bent Normal kann später für erweiterte Beleuchtungssimulationen genutzt werden, z.B. im Lichttransfer über Irradiance Environment Maps.

Berechnung der Parameter

Die zur Errechnung der beiden oben genannten Parameter nötige Vorgehensweise lässt sich wiederum in zwei prinzipielle Klassen unterteilen: Die Inside-Out Verfahren stellen den klassischen Ansatz zur Berechnung dar. Hierbei werden vom Messpunkt aus Strahlen über dessen Hemisphäre Ω verschickt und auf Kollision mit dem Objekt selbst geprüft. Stößt der Strahl in Richtung ω mit einem Teil der Geometrie zusammen, so kann kein Licht aus dieser Richtung am Punkt ankommen. Das Gegenteil ist der Fall, sollte der Strahl seinen Weg ungehindert fortsetzen können. Stellt man dieses Verhältnis durch eine Visibility-Funktion V dar, die im Fall einer Verdeckung den Wert 0, ansonsten 1 annimmt, so errechnet sich der Grad der Verdeckung durch die Integration der Visibility-Funktion über der Hemisphäre Ω des Punkt \mathbf{x} mit Normalenvektor \mathbf{n} durch

A(\mathbf{x}, \mathbf{n}) = \frac{1}{\pi} \int_{\omega \in \Omega} V(\mathbf{x}, \omega) \left| \omega \cdot \mathbf{n} \right| d \omega

Diese Funktion lässt sich durch Monte-Carlo-Integration einfach über einen Raytracer implementieren. Mittelt man alle Strahlen, die nicht von Geometrie verdeckt wurden, erhält man gleichzeitig den Bent-Normal. Es sei darauf hingewiesen, dass der Bent-Normal nicht zwangsweise korrekt ist: Spezielle Situationen können dazu führen, dass die Verdeckung eines Punkts den durchlässigen Teil der Hemisphäre zweiteilt. In diesem Fall gibt es keine eindeutige Richtung der niedrigsten Verdeckung.

Die zweite Klasse zur Ermittlung der Umgebungsverdeckungsparameter bilden die Outside-In-Verfahren. Hierbei wird das Objekt von außen betrachtet[1]. Es wird der Punkt \mathbf{x} zentriert und das Objekt um zufällige Raumwinkel α und β gedreht. Über die OpenGL-Erweiterung ARB_Occlusion_Query, die die Anzahl von Fragmenten im fertigen Bild eines Objekts zählt, kann die Sichtbarkeit des Punkts ermittelt werden. Gehört der zufällig gewählte Raumwinkel zur Hemisphäre Ω des Punkts, so kann die Sichtbarkeitsfunktion über die Erweiterung implementiert und genutzt werden. Auch hier lässt sich durch Monte-Carlo-Integration über genügend viele Samples eine gute Annäherung errechnen.

Statische und dynamische Umgebungsverdeckung

Da das Ergebnis des Umgebungsverdeckungsverfahrens unabhängig von der Position der Lichtquellen ist, kann es für statische Geometrie sowohl in gerenderten Bildern als auch in Echtzeitanwendungen wie z.B. Computerspielen verwendet werden.

Sollte es sich allerdings um dynamische Geometrie handeln, die zur Laufzeit unvorhersehbare Positionen und Formen annehmen kann (im Gegensatz zu Schlüsselbildanimationen), so muss die Berechnung erheblich beschleunigt werden, um Echtzeitanforderungen einer Anwendung gerecht zu werden. Diverse Ausarbeitungen zu diesem Thema[1][2] existieren für die AO-Simulation einzelner Objekte. Sollen sich allerdings mehrere Objekte auch untereinander schattieren können, so müssen bei der Berechnung alle Objekte gleichzeitig in Betracht gezogen werden. Da dieser Aufwand für aktuelle Grafikbeschleuniger zu hoch ist, wird eine Approximation vorgeschlagen[3], die AO-Parameter für die Umgebung eines Objekts vorberechnet, und in Cubemaps speichert. Diese werden zur Laufzeit bei einer Kollision zwischen Objekten ausgelesen und auf die AO-Parameter der kollidierenden Objekte übertragen.

Weblinks

Quellen

  1. a b Sattler et al.: Hardware-accelerated ambient occlusion computation, In: Vision, Modeling, and Visualization 2004, Akademische Verlagsgesellschaft Aka GmbH, Berlin, November 2004.
  2. Brunell: Dynamic Ambient Occlusion and Indirect Lighting, In: GPU Gems 2, Addison Wesley, 2005, S. 223–233
  3. Laine et al.: Ambient occlusion fields, In: SI3D ’05: Proceedings of the 2005 symposium on Interactive 3D graphics and games. New York, NY, USA : ACM Press, 2005.

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Ambient occlusion — is a shading method used in 3D computer graphics which helps add realism to local reflection models by taking into account attenuation of light due to occlusion. Unlike local methods like Phong shading, ambient occlusion is a global method,… …   Wikipedia

  • Ambient occlusion — Occlusion ambiante L occlusion ambiante, aussi appelée Ambient Occlusion est un algorithme utilisé dans la modélisation 3D, ayant pour but d améliorer le réalisme d un rendu 3D. Procédé L algorithme est un principe d illumination globale, à… …   Wikipédia en Français

  • Ambient occlusion — Использованы модели (сверху вниз): прямого освещения, Ambient occlusion (AO)и комбинированная модель AO и прямого освещения Ambient occlusion (AO)  модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности… …   Википедия

  • Screen Space Ambient Occlusion — (сокращённо SSAO; англ. преграждение окружающего света в экранном пространстве) программная техника (методика) в трёхмерной компьютерной графике, которая является приближенной имитацией глобального освещения и представляет собой изменённый и …   Википедия

  • Screen Space Ambient Occlusion — (SSAO) is a rendering technique for efficiently approximating the well known computer graphics ambient occlusion effect in real time. It was used for the first time in a video game in the 2007 PC game Crysis.Fact|date=June 2008The algorithm is… …   Wikipedia

  • Occlusion — may refer to: Occlusion (dentistry), the manner in which the upper and lower teeth come together when the mouth is closed Occlusion effect, an audio phenomenon that occurs when one closes the opening into the ear canal and the loudness of low… …   Wikipedia

  • Occlusion ambiante — L occlusion ambiante, aussi appelée Ambient Occlusion est un algorithme utilisé dans la modélisation 3D, ayant pour but d améliorer le réalisme d un rendu 3D. Procédé L algorithme est un principe d illumination globale, à savoir que la lumière… …   Wikipédia en Français

  • Ambient — англ. Ambient (досл.  «окружающий», «внешний») обычно не переводится и в русском языке используется в виде кальки «эмбиент». Может означать: Эмбиент  музыкальный жанр. Ambient  графическая оболочка для ОС «MorphOS». Ambient… …   Википедия

  • Umgebungsverdeckung — Anwendung von AO Umgebungsverdeckung (englisch Ambient Occlusion, AO) ist eine Shading Methode, die in der 3D Computergrafik verwendet wird, um mit relativ kurzer Renderzeit eine realistische Verschattung von Szenen zu erreichen. Das Ergebnis ist …   Deutsch Wikipedia

  • CryEngine 2 — Игровой движок (Список) Официальный логотип движка …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”