Beleuchtungsmathematik
Das Direct3D-Lichtmodell deckt Umgebungs-, Diffuse-, Glanz- und Emissive-Beleuchtung ab. Dies ist ausreichend flexibel, um eine vielzahl von Beleuchtungssituationen zu lösen. Die Gesamtmenge des Lichts in einer Szene wird als globale Beleuchtung bezeichnet.
Die globale Beleuchtung wird wie folgt berechnet:
global_illumination = ambient_lighting + diffuse_lighting + specular_lighting + emissive_lighting;
Umgebungsbeleuchtung ist konstante Beleuchtung . 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.
Diffuse Beleuchtung hängt sowohl von der Lichtrichtung als auch von der Normalen der Objektoberfläche ab. Diffuse Beleuchtung variiert über die Oberfläche eines Objekts als Ergebnis der sich ändernden Lichtrichtung und des sich ändernden Oberflächenzahlvektors. Es dauert länger, diffuse Beleuchtung zu berechnen, da sie sich für jeden Objektvertex ändert, aber der Vorteil der Verwendung besteht darin, dass es Objekte schattiert und ihnen dreidimensionale Tiefe (3D) verleiht.
Glanzlicht identifiziert die hellen Glanzlichter, die auftreten, wenn Licht auf eine Objektoberfläche trifft und zurück zur Kamera reflektiert. Glanzlicht ist intensiver als diffuses Licht und fällt schneller über die Objektoberfläche hinaus. Es dauert länger, um glanzförmige Beleuchtung zu berechnen als diffuse Beleuchtung, aber der Vorteil der Verwendung besteht darin, dass sie einer Oberfläche erhebliche Details hinzufügt.
Emissive Beleuchtung ist Licht, das von einem Objekt ausgegeben wird, z. B. ein Leuchteffekt. Durch Die Emission scheint ein gerendertes Objekt selbstleuchtend zu sein. Die Emission wirkt sich auf die Farbe eines Objekts aus und kann z. B. ein dunkles Material heller machen und einen Teil der ausgegebenen Farbe übernehmen.
Realistische Beleuchtung kann erreicht werden, indem jede dieser Beleuchtungsarten auf eine 3D-Szene angewendet wird. Die werte, die für Umgebungs-, Emissive- und diffuse Komponenten berechnet werden, werden als diffuse Vertexfarbe ausgegeben; Der Wert für die Glanzlichtkomponente wird als Glanzvertexfarbe ausgegeben. Umgebungs-, Diffuse- und Glanzlichtwerte können durch den Dämpfungs- und Blickpunktfaktor eines bestimmten Lichts beeinflusst werden. Siehe Dämpfungs- und Blickpunktfaktor.
Um einen realistischeren Lichteffekt zu erzielen, fügen Sie weitere Lichter hinzu; Das Rendern der Szene dauert jedoch länger. Um alle gewünschten Effekte zu erzielen, verwenden einige Spiele mehr CPU-Leistung als allgemein verfügbar. In diesem Fall ist es typisch, die Anzahl der Beleuchtungsberechnungen auf ein Minimum zu reduzieren, indem Beleuchtungskarten und Umgebungszuordnungen verwendet werden, um einer Szene Beleuchtung hinzuzufügen, während Texturzuordnungen verwendet werden.
Beleuchtung wird im Kamerabereich berechnet. Siehe Kameraraumtransformationen. Optimierte Beleuchtung kann im Modellraum berechnet werden, wenn spezielle Bedingungen vorhanden sind: Normale Vektoren sind bereits normalisiert, Vertexmischung ist nicht erforderlich, und Transformationsmatrizen sind orthogonal.
Alle Beleuchtungsberechnungen werden im Modellbereich vorgenommen, indem die Position und Richtung der Lichtquelle zusammen mit der Kameraposition transformiert wird, um den Raum mithilfe der Umkehrung der Weltmatrix zu modellieren. Wenn also die Welt- oder Ansichtsmatrizen eine nicht einheitliche Skalierung einführen, kann die resultierende Beleuchtung ungenau sein.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
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. |
|
Diffuse Beleuchtung hängt sowohl von der Lichtrichtung als auch von der Normalen der Objektoberfläche ab. Diffuse Beleuchtung variiert über die Oberfläche eines Objekts als Ergebnis der sich ändernden Lichtrichtung und des sich ändernden Oberflächenzahlvektors. Es dauert länger, diffuse Beleuchtung zu berechnen, da sie sich für jeden Objektvertex ändert, aber der Vorteil der Verwendung besteht darin, dass es Objekte schattiert und ihnen dreidimensionale Tiefe (3D) verleiht. |
|
Glanzlicht identifiziert die hellen Glanzlichter, die auftreten, wenn Licht auf eine Objektoberfläche trifft und zurück zur Kamera reflektiert. Glanzlicht ist intensiver als diffuses Licht und fällt schneller über die Objektoberfläche hinaus. Es dauert länger, um glanzförmige Beleuchtung zu berechnen als diffuse Beleuchtung, aber der Vorteil der Verwendung besteht darin, dass sie einer Oberfläche erhebliche Details hinzufügt. |
|
Emissive Beleuchtung ist Licht, das von einem Objekt ausgegeben wird, z. B. ein Leuchteffekt. Durch Die Emission scheint ein gerendertes Objekt selbstleuchtend zu sein. Die Emission wirkt sich auf die Farbe eines Objekts aus und kann z. B. ein dunkles Material heller machen und einen Teil der ausgegebenen Farbe übernehmen. |
|
Scheitelpunkte im Kamerabereich werden berechnet, indem die Objektvertices mit der Weltansichtsmatrix transformiert werden. |
|
Die diffusen und glanzförmigen Beleuchtungskomponenten der globalen Beleuchtungsgleichung enthalten Begriffe, die die Lichtdämpfung und den Spotlight-Kegel beschreiben. |
Verwandte Themen