Umgebungslicht
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. Die Umgebungsbeleuchtung ist in alle Richtungen konstant und farbt alle Pixel eines Objekts gleich. Es ist schnell zu berechnen, aber Objekte wirken flach und unrealistisch.
Die Umgebungsbeleuchtung ist die schnellste Art von Beleuchtung, aber sie 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 | Typ | 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 Scheinwerferfaktor. |
Spoti | (0,0,0,0) | D3DVECTOR | Spotlight-Faktor des Ith-Lichts. Siehe Dämpfung und Scheinwerferfaktor. |
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
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 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.
Verwandte Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für