Was ist Selbstbeschattung?

"Selbstbeschattung" ist ein Begriff, der den Umstand beschreibt, in dem ein Teil eines Objekts einen Schatten auf sich wirft. Beispiele für Selbstbeschattung sind der Schatten, den eine menschliche Nase auf das Gesicht oder die Oberlippe wirft, wenn die Lichtquelle von oben kommt, oder der Schatten, den ein Stuhlsitz auf die Stuhlbeine wirft. Wenn der Begriff in der Computergrafik verwendet wird - insbesondere in der Computergrafikprogrammierung -, bezieht er sich auf Schatten, die von dreidimensionalen (3D) Objekten einer Szene auf sich selbst oder von dynamischen Objekten auf sich selbst und auf Objekte in ihrer Umgebung geworfen werden . Die Natur der Echtzeit-3D-Computergrafikprogrammierung führt dazu, dass viele Anwendungen Techniken verwenden, die häufig die Möglichkeit des Renderns von Selbstschatten zugunsten anderer Optimierungen ausschließen. Mit zunehmender Geschwindigkeit und Leistungsfähigkeit von Computern werden jedoch Echtzeit-Selbstschattenmethoden eingesetzt zugänglicher geworden. Es gibt verschiedene Methoden zum Rendern von sich selbst abschattenden Objekten in Echtzeit. Hardwareeinschränkungen führen jedoch in der Regel zu Ergebnissen, die einige Nachteile aufweisen, z. B. ungenaue Schatten, Schatten mit künstlich harten Kanten oder Szenen, die auf Grafikkarten, die nicht unglaublich schnell sind, sehr langsam gerendert werden .

Ein Unterschied zwischen statischen und dynamischen Objekten in Echtzeitgrafiken ist zu machen, wenn von Selbstbeschattung die Rede ist. Statische Objekte sind 3D-Objekte in einer Szene, die sich nicht bewegen und deren Geometrie sich im Verlauf des Renderns nicht teilweise ändert. Ein dynamisches Objekt hingegen ist ein Objekt, das in keiner Weise direkt mit der Szene verbunden ist und von Frame zu Frame unterschiedlich sein kann. Die meisten statischen Objekte und Nicht-Echtzeitszenen machen einen Selbstschatten, entweder aufgrund der Rendering-Engine oder aufgrund anderer verwendbarer Grafik-Tricks.

Mehrere Optimierungen, die zum Rendern von 3D-Echtzeitgrafiken verwendet werden, erschweren die Implementierung einer dynamischen Selbstbeschattung. Einige Beispiele umfassen eine Grafik-Engine, die Beleuchtungseffekte nur auf einen statischen Hintergrund anwendet und dynamische Objekte wie Zeichen in einer Szene ignoriert, oder eine Engine, die Objekte nur als Silhouetten ohne Kenntnis der internen Geometrie behandelt. Mit der Zunahme von Grafikprozessoren und Computern ermöglichen neue Techniken das Erscheinen von selbstbeschatteten Objekten in einer Echtzeitszene, mit einigen Einschränkungen und Kompromissen.

Schattenvolumen sind eine Möglichkeit, wie Selbstschatten in einer 3D-Szene implementiert werden kann. Diese Methode erstellt im Wesentlichen 3D-Objekte, die ein geschlossenes Volumen in einer Szene einnehmen, in der ein Schatten geworfen wird. Auf diese Weise kann der Renderer oder Shader testen, ob sich ein Punkt innerhalb eines Schattenvolumens befindet, um zu bestimmen, wie er beleuchtet wird. Bei anderen Methoden werden Schattenmaps oder ungefähre Schatten von Scheitelpunkten aus erstellt, um sehr diffuse Schatten zu erzeugen, die nicht unbedingt der Genauigkeit einer Kante entsprechen.

Nahezu alle Methoden zur Selbstbeschattung müssen entweder die Geschwindigkeit oder die Qualität austauschen, um ein akzeptables Ergebnis zu erzielen. Qualitätsprobleme können durch die Verwendung schneller, aber niedrig aufgelöster oder unscharfer Techniken auftreten, die dazu führen können, dass einige Selbstschatten falsch oder unangebracht erscheinen. Geschwindigkeitsprobleme treten auf, wenn die verwendeten Algorithmen zu viel Overhead pro Frame erfordern oder versuchen, Schattenprojektionen zu genau zu berechnen. Obwohl es keinen einzigen Standard-Algorithmus zur Erzeugung von Selbstschatten gibt, enthalten einige Grafikkarten eine systemeigene Beschleunigung für verschiedene Methoden, die die Geschwindigkeit einiger Techniken erhöhen können.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?