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