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.


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.

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