Umgebungsbeleuchtung (Direct3D 9)

Umgebungsbeleuchtung stellt eine konstante Beleuchtung für eine Szene bereit. Alle Objektvertices sind identisch, da sie nicht von anderen Beleuchtungsfaktoren wie Scheitelpunktnormale, Lichtrichtung, Lichtposition, Bereich oder Dämpfung abhängig sind. Dies ist die schnellste Art von Beleuchtung, führt aber zu den am wenigsten realistischen Ergebnissen. 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 Umgebungslicht bereitzustellen. Die Umgebungsbeleuchtung für eine Szene wird durch die folgende Gleichung beschrieben.

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

Hierbei gilt:

Parameter Standardwert type BESCHREIBUNG
Cₐ (0,0,0,0) D3DCOLORVALUE Material ambient color (Material-Umgebungsfarbe)
Gₐ (0,0,0,0) D3DCOLORVALUE Globale Umgebungsfarbe
Atteni (0,0,0,0) D3DCOLORVALUE Lichtdämpfung des Ith-Lichts. Weitere Informationen finden Sie unter Dämpfung und Spotlight-Faktor (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Spotlight-Faktor des Ith-Lichts. Weitere Informationen finden Sie unter Dämpfung und Spotlight-Faktor (Direct3D 9).
Sum Nicht zutreffend Nicht zutreffend Summe des Umgebungslichts
Lai (0,0,0,0) D3DVECTOR Helle Umgebungsfarbe des Ith-Lichts

Der Wert für Cₐ ist:

  • vertex color1, wenn AMBIENTMATERIALSOURCE = D3DMCS _ COLOR1, und die erste Scheitelpunktfarbe in der Scheitelpunktdeklaration angegeben wird.
  • vertex color2, wenn AMBIENTMATERIALSOURCE = D3DMCS _ COLOR2, und die zweite Scheitelpunktfarbe in der Scheitelpunktdeklaration angegeben wird.
  • Material umgebungsfarbe.

Hinweis

Wenn entweder die AMBIENTMATERIALSOURCE-Option verwendet wird und die Scheitelpunktfarbe nicht angegeben wird, wird die materiale Umgebungsfarbe verwendet.

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

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 mithilfe des Umgebungslichts der Szene und einer materialen Umgebungsfarbe farbig dargestellt.

#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 hellen Farbe.

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 dargestellt. Das einzige Objekt in der Szene ist eine Kugel. Umgebungslicht leuchtet alle Objektvertices mit der gleichen Farbe. Sie ist nicht von der Scheitelpunktnormale oder der Lichtrichtung abhängig. Daher sieht die Kugel wie ein 2D-Kreis aus, da es keinen Unterschied in 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 eine diffuse oder glanzlichtige Beleuchtung an.

Mathematik der Beleuchtung