Freigeben über


Umgebungslicht

Die Umgebungsbeleuchtung bietet eine konstante Beleuchtung für eine Szene. Es leuchtet alle Objektvertices gleich, da sie nicht von anderen Beleuchtungsfaktoren wie Vertexnormalen, Lichtrichtung, Lichtposition, Bereich oder Dämpfung abhängig ist. Die Umgebungsbeleuchtung ist in allen Richtungen konstant und farbig alle Pixel eines Objekts gleich. Es ist schnell zu berechnen, aber lässt Objekte flach und unrealistisch aussehen.

Umgebungsbeleuchtung ist die schnellste Art der Beleuchtung, aber es erzeugt die am wenigsten realistischen Ergebnisse. Direct3D enthält eine einzelne globale Umgebungslichteigenschaft, die Sie verwenden können, ohne Licht zu erstellen. Alternativ können Sie ein beliebiges Lichtobjekt festlegen, um Umgebungsbeleuchtung bereitzustellen.

Die Umgebungsbeleuchtung für eine Szene wird durch die folgende Formel beschrieben.

Ambient Lighting = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

Hierbei gilt:

Parameter Standardwert Typ Beschreibung
Cₐ (0,0,0,0) D3DCOLORVALUE Material umgebungsfarbe
Gₐ (0,0,0,0) D3DCOLORVALUE Globale Umgebungsfarbe
Atteni (0,0,0,0) D3DCOLORVALUE Lichtdämpfung des Ith-Lichts. Siehe Dämpfungs- und Blickpunktfaktor.
Spoti (0,0,0,0) D3DVECTOR Blickpunktfaktor des Ith-Lichts. Siehe Dämpfungs- und Blickpunktfaktor.
Sum Summe des Umgebungslichts
Lai (0,0,0,0) D3DVECTOR Helle Umgebungsfarbe des Ith-Lichts

 

Der Wert für Cₐ lautet entweder:

  • Vertexfarbe1, wenn AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 und die erste Vertexfarbe in der Vertexdeklaration angegeben wird.
  • Vertexfarbe2, wenn AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 und die zweite Vertexfarbe in der Vertexdeklaration angegeben wird.
  • Material Umgebungsfarbe.

Hinweis : Wenn eine der beiden AmbientMATERIALSOURCE-Optionen verwendet wird und die Vertexfarbe nicht angegeben wird, wird die Umgebungsfarbe des Materials verwendet.

 

Um die Materialumgebungsfarbe zu verwenden, verwenden Sie SetMaterial wie im folgenden Beispielcode dargestellt.

Gₐ ist die globale Umgebungsfarbe. Sie wird mit SetRenderState(D3DRS_AMBIENT) festgelegt. Es gibt eine globale Umgebungsfarbe in einer Direct3D-Szene. Dieser Parameter ist keinem Direct3D-Light-Objekt zugeordnet.

Lai ist die Umgebungsfarbe des Ith-Lichts in der Szene. Jedes Direct3D-Licht verfügt über eine Reihe von Eigenschaften, von denen eine die Umgebungsfarbe ist. Der Begriff Sum(Lai) ist eine Summe aller Umgebungsfarben in der Szene.

Beispiel

In diesem Beispiel wird das Objekt mit dem Umgebungslicht der Szene und einer Materialumgebungsfarbe gefärbt.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

Gemäß der Gleichung ist die resultierende Farbe für die Objektvertices eine Kombination aus der Materialfarbe und der Lichtfarbe.

Die folgenden beiden Abbildungen zeigen die Materialfarbe, die grau ist, und die Helle Farbe, die hellrot ist.

Abbildung einer grauen KugelAbbildung einer roten Kugel

Die resultierende Szene wird in der folgenden Abbildung gezeigt. Das einzige Objekt in der Szene ist eine Kugel. Umgebungslicht beleuchtet alle Objektvertices mit derselben Farbe. Sie ist nicht von der Scheitelpunktnormal oder der Lichtrichtung abhängig. Daher sieht die Kugel wie ein 2D-Kreis aus, da es keinen Unterschied bei der Schattierung um die Oberfläche des Objekts gibt.

Abbildung einer Kugel mit Umgebungsbeleuchtung

Um Objekten ein realistischeres Aussehen zu verleihen, wenden Sie zusätzlich zur Umgebungsbeleuchtung diffuse oder glanzförmige Beleuchtung an.

Mathematik der Beleuchtung