Umgebungsbeleuchtung (Direct3D 9)

Die Umgebungsbeleuchtung sorgt für eine konstante Beleuchtung einer Szene. Es leuchtet alle Objektpunkte gleich an, da es nicht von anderen Beleuchtungsfaktoren wie Scheitelpunktnormalen, Lichtrichtung, Lichtposition, Bereich oder Dämpfung abhängig ist. Es ist die schnellste Art von Beleuchtung, aber es erzeugt die am wenigsten realistischen Ergebnisse. Direct3D enthält eine einzelne globale Umgebungslichteigenschaft, die Sie verwenden können, ohne Licht zu erzeugen. Alternativ können Sie jedes Lichtobjekt so einstellen, dass es eine Umgebungsbeleuchtung bereitstellt. Die Umgebungsbeleuchtung für eine Szene wird durch die folgende Gleichung beschrieben.

Umgebungsbeleuchtung = Cₐ*[Gₐ + summe(Atteni*Spoti*Lai)]

Hierbei gilt:

Parameter Standardwert type BESCHREIBUNG
Cₐ (0,0,0,0) D3DCOLORVALUE Umgebungsfarbe des Materials
Gₐ (0,0,0,0) D3DCOLORVALUE Globale Umgebungsfarbe
Atteni (0,0,0,0) D3DCOLORVALUE Lichtdämpfung des Ith-Lichts. Siehe Dämpfung und Spotlight-Faktor (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Spotlight-Faktor des Ith-Lichts. Siehe Dämpfung und Spotlight-Faktor (Direct3D 9).
Sum Summe des Umgebungslichts
Lai (0,0,0,0) D3DVECTOR Helle Umgebungsfarbe des Ith-Lichts

 

Der Wert für Cₐ lautet entweder:

  • vertex color1, wenn AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 und die erste Vertexfarbe in der Vertexdeklaration angegeben wird.
  • vertex color2, wenn AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 und die zweite Vertexfarbe in der Vertexdeklaration angegeben wird.
  • Umgebungsfarbe des Materials.

Hinweis

Wenn eine AMBIENTMATERIALSOURCE-Option verwendet wird und die Scheitelpunktfarbe nicht angegeben wird, wird die Materialumgebungsfarbe verwendet.

 

Verwenden Sie SetMaterial, wie im folgenden Beispielcode gezeigt, um die Umgebungsfarbe des Materials zu verwenden.

Gₐ ist die globale Umgebungsfarbe. Sie wird mithilfe von 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. Jede Direct3D-Leuchte 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

// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);

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 Grau und die helle Farbe, die leuchtend rot ist.

Abbildung einer grauen Kugel illustration einer roten Kugel

Die resultierende Szene ist in der folgenden Abbildung dargestellt. Das einzige Objekt in der Szene ist eine Kugel. Umgebungslicht leuchtet alle Objektvertices mit der gleichen Farbe an. Es ist nicht abhängig vom Scheitelpunkt normal oder von der Lichtrichtung. Infolgedessen 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 spekuläre Beleuchtung an.

Lichtmathematik