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.
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.
Um Objekten ein realistischeres Aussehen zu verleihen, wenden Sie zusätzlich zur Umgebungsbeleuchtung diffuse oder spekuläre Beleuchtung an.
Zugehörige Themen