Mathematik der Beleuchtung (Direct3D 9)

Das Direct3D-Lichtmodell deckt umgebungs-, diffuse, spiegel- und emissive Beleuchtung ab. Dies ist genug Flexibilität, um eine Vielzahl von Beleuchtungssituationen zu lösen. Sie bezeichnen die Gesamtmenge an Licht in einer Szene als globale Beleuchtung und berechnen sie mithilfe der folgenden Gleichung.

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 

Umgebungsbeleuchtung (Direct3D 9) ist konstante Beleuchtung. Es ist in alle Richtungen konstant und farbig farbig alle Pixel eines Objekts gleich. Es ist schnell zu berechnen, aber Objekte wirken flach und unrealistisch. Informationen zur Berechnung der Umgebungsbeleuchtung durch Direct3D finden Sie unter Umgebungsbeleuchtung (Direct3D 9).

Diffuse Beleuchtung (Direct3D 9) hängt sowohl von der Lichtrichtung als auch von der Objektoberfläche normal ab. Sie variiert über die Oberfläche eines Objekts aufgrund der sich ändernden Lichtrichtung und des sich ändernden Flächenzahlvektors. Es dauert länger, diffuse Beleuchtung zu berechnen, da sie sich für jeden Objektvertex ändert. Der Vorteil der Verwendung besteht jedoch darin, dass es Objekte schattiert und ihnen dreidimensionale (3D)-Tiefe verleiht. Informationen dazu, wie diffuse Beleuchtung in Direct3D berechnet wird, finden Sie unter Diffuse Beleuchtung (Direct3D 9).

Specular Lighting (Direct3D 9) identifiziert die hellen spiegelförmigen Highlights, die auftreten, wenn Licht auf eine Objektoberfläche trifft und zurück zur Kamera reflektiert wird. Es ist intensiver als diffuses Licht und fällt schneller über die Objektoberfläche ab. Es dauert länger, um die spiegelförmige Beleuchtung zu berechnen als diffuse Beleuchtung, aber der Vorteil der Verwendung besteht darin, dass es einer Oberfläche erhebliche Details hinzufügt. Informationen zur Berechnung der spiegelförmigen Beleuchtung in Direct3D finden Sie unter Specular Lighting (Direct3D 9).

Emissive Beleuchtung (Direct3D 9) ist Licht, das von einem Objekt ausgegeben wird; beispielsweise ein Leuchten. Informationen zur Berechnung der emissiven Beleuchtung in Direct3D finden Sie unter Emissive Beleuchtung (Direct3D 9).

Realistische Beleuchtung kann erreicht werden, indem jede dieser Arten von Beleuchtung auf eine 3D-Szene angewendet wird. Die für umgebungs-, emissiven und diffusen Komponenten berechneten Werte werden als diffuse Vertexfarbe ausgegeben. Der Wert für die Komponente "Spiegelbeleuchtung" wird als spiegelförmige Vertexfarbe ausgegeben. Umgebungs-, Diffuse- und Spiegellichtwerte können durch die Dämpfung und den Scheinwerferfaktor eines bestimmten Lichts beeinflusst werden. Weitere Informationen zur Funktionsweise der Dämpfung finden Sie unter Dämpfung und Spotlight-Faktor (Direct3D 9).

Um einen realistischeren Lichteffekt zu erzielen, fügen Sie weitere Leuchten hinzu. Das Rendern der Szene dauert jedoch länger. Um alle Effekte zu erzielen, die ein Designer möchte, verwenden einige Spiele mehr CPU-Leistung als üblich. In diesem Fall ist es typisch, die Anzahl der Beleuchtungsberechnungen auf ein Minimum zu reduzieren, indem Beleuchtungskarten und Umgebungskarten verwendet werden, um einer Szene Beleuchtung hinzuzufügen, während Texturkarten verwendet werden.

Die Beleuchtung wird im Kamerabereich berechnet. Informationen zur Berechnung von Lichttransformationen finden Sie unter Kameraraumtransformationen (Direct3D 9). Optimierte Beleuchtung kann im Modellraum berechnet werden, wenn besondere Bedingungen vorhanden sind: Normale Vektoren sind bereits normalisiert (D3DRS_NORMALIZENORMALS ist True), Vertex-Blending ist nicht erforderlich, Transformationsmatrizen sind orthogonal usw.

Leuchten und Materialien