Die Klasse JsgEleLighting ist ein Bestandteil eines JsgEleData Objektes, welches jedem JsgGraphEle Grafik-Element zugewiesen ist. Sie bestimmt die Oberflächen-Eigenschaften der Grafik-Elemente wie Beleuchtungs-Algorithmus, Reflexionen und Beleuchtungs-Effekte. Objekte der Klasse JsgEleLighting müssen nicht explizit erzeugt werden, sie werden beim Erzeugen von Objekten der Klasse JsgEleData implizit erzeugt.
Die Farbe jedes Flächen-Elementes hängt von der Beleuchtung, den Oberflächen-Eigenschaften und den Element-Farben ab. Wie Element-Farben definiert werden, kann unter JsgEleAttr Klasse nachgelesen werden. Die JsgEleLighting Eigenschaften können pro Flächenseite separat definiert werden (siehe JsgEleData Klasse).
}
ApplyCamLight | Anwenden der Kamera-Beleuchtung |
ApplyAmbient | Anwenden der Ambient-Beleuchtung |
ApplyPhong | Anwenden der Phong-Beleuchtung |
BlackAndWhite | Schwar/Weiss Bild zeichnen |
ColorResolution | Anzahl Farben pro Kanal |
Dimm | Abdunkelung der Fläche |
CamRefl | Reflexion der Kamera-Beleuchtung |
AmbiRefl | Reflexion der Ambient-Beleuchtung |
DiffRefl | Diffuse Reflexion der Phong-Beleuchtung |
SpecRefl | Specular Reflexion der Phong-Beleuchtung |
Roughness | Rauheit der Fläche |
Shiny | Spiegelungsstärke der Fläche |
DiffXRay | Diffuse Reflexion der von der Lichtquelle abgewandten Seite |
SpecXRay | Specular Reflexion der von der Lichtquelle abgewandten Seite |
JsgEleLighting() | JsgEleLighting Konstruktor: Erzeugt ein JsgEleLighting Objekt |
JsgEleLighting.Set() | Ändert Properties eine JsgEleLighting Objektes |
JsgEleLighting.ApplyCamLight: Boolean; Init = true; → Kamera-Beleuchtung
Bestimmt, ob die Kamera-Beleuchtung für die betroffene Fläche bzw. Flächenseite angewandt werden soll. Das Property CamRefl bestimmt zusammen mit JsgScene.CamLight die Intensität der Kamera-Lichtreflexion. Die Farbe der Fläche, siehe JsgEleAttr.AreaColor, wird mit der Farbe des JsgScene.CamLight gemischt. Sind weitere JsgLightSource Lichtquellen definiert, werden auch deren Farben hinzugemischt, wenn ApplyPhong aktiviert wird.
Das Kamera-Licht erhellt der Kamera zugewandte Flächen mehr als solche, die in einem Winkel zur Kamera stehen. Dies lässt das Modell plastisch erscheinen. Flächen, welche in einem schrägen Winkel zur Kamera stehen werden nur schwach beleuchtet. Wenn der Hell-Dunkel Kontrast nicht so stark ausfallen soll, kann zusützlich die Ambient-Beleuchtung ApplyAmbient aktiviert werden.
JsgEleLighting.ApplyAmbient: Boolean; Init = true; → Ambient-Beleuchtung
Bestimmt, ob die Ambient-Beleuchtung für die betroffene Fläche bzw. Flächenseite angewandt werden soll. Das Property AmbiRefl bestimmt zusammen mit JsgScene.AmbientLight die Intensität der Ambient-Lichtreflexion. Die Farbe der Fläche, siehe JsgEleAttr.AreaColor, wird mit der Farbe des JsgScene.AmbientLight gemischt. Sind weitere JsgLightSource Lichtquellen definiert, werden auch deren Farben hinzugemischt, wenn ApplyPhong aktiviert wird.
Die Ambient-Beleuchtung (Umgebungs-Beleuchtung) erhellt alle Flächen gleichermassen. Sie kann zur Aufhellung einer Scene verwendet werden. Eine alleinige Ambient-Beleuchtung zeigt alle Flächen derselben Farbe in exakt derselben Farbe und Helligkeit, unabhängig von ihrer Neigung bezüglich der Kamera; vergleiche mit ApplyCamLight.
JsgEleLighting.ApplyPhong: Boolean; Init = false; → Phong-Beleuchtung
Bestimmt, ob die Phong-Beleuchtung für die betroffene Fläche bzw. Flächenseite angewandt werden soll. Mit Hilfe der Phong-Beleuchtung werden Scenen-Beleuchtungen mit mehreren Lichtquellen simuliert. Zudem können matte bis glänzende Oberflächen damit simuliert werden.
Die Properties DiffRefl und SpecRefl bestimmen zusammen mit JsgLightSource.DiffInt und JsgLightSource.SpecInt die Intensität der jeweiligen Lichtreflexionen. Die Farbe der Fläche, siehe JsgEleAttr.AreaColor, wird mit den Farben der JsgLightSource Reflexionen gemischt.
Die Phong-Beleuchtung kann mit der Kamera-Beleuchtung ApplyCamLight und der Ambient-Beleuchtung ApplyAmbient kombiniert werden. Die Phong-Beleuchtung erfordert das Erzeugen einer oder mehrere JsgLightSource Objekte, siehe AddLightSource().
Im Gegensatz zur Kamera-Beleuchtung, siehe ApplyCamLight, können mit der Phong-Beleuchtung Lichtquellen frei im Raum platziert werden. Die DiffRefl bestimmt analog der CamRefl die Intensität der diffusen Licht-Reflexion. Mit der SpecRefl kann zudem eine Glanz-Reflextion hinzugemischt werden. Shiny und Roughness bestimmen, wie glänzend die Reflexion erscheinen soll. Die Reflexionen könne für jede Lichtquelle unterschiedlich stark eingestellt werden, siehe JsgLightSource.DiffInt und JsgLightSource.SpecInt.
JsgEleLighting.BlackAndWhite: Boolean; Init = false; → Schwarz/Weiss-Darstellung
Bestimmt, ob die Fläche in Farbe oder Schwarz/Weiss (d.h. in Graustufen) dargestellt werden soll.
JsgEleLighting.ColorResolution: Integer(>= 0); Init = 0
Bestimmt die Auflösung jedes Farbkanals. Wenn der Wert 0 ist, dann wird die volle Auflösung (256 Bits pro Farbe) verwendet. Beim Wert 1 werden pro Farbkanal 2 Stufen verwendet usw.
JsgEleLighting.Dimm: Number(>=0); Init = 1.0
Dimmfaktor: Die Helligkeit der Fläche wird mit diesem Faktor multipliziert. Damit kann zum Beispiel die Rückseite einer Fläche dunkler eingefärbt werden.
JsgEleLighting.CamRefl: Number(>=0); Init = 1.0
Camera Reflection: Bestimmt, wie stark die Kamera-Beleuchtung von der Fläche reflektiert wird, also wie gross der Anteil der Beleuchtung des Kamera-Lichtes JsgScene.CamLight ist. CamRefl hat nur eine Auswirkung, wenn ApplyCamLight true ist.
JsgEleLighting.AmbiRefl: Number(>=0); Init = 0.2
Ambient Reflection: Bestimmt, wie stark die Ambient-Beleuchtung von der Fläche reflektiert wird, also wie gross der Anteil des Umgebungslichtes JsgScene.AmbientLight ist. AmbiRefl hat nur eine Auswirkung, wenn ApplyAmbient true ist.
JsgEleLighting.DiffRefl: Number(>=0); Init = 0.5
Diffuse Reflection: Bestimmt, wie stark der diffuse Lichtanteil JsgLightSource.DiffInt der Phong-Beleuchtung von der Fläche reflektiert wird. DiffRefl hat nur eine Auswirkung, wenn ApplyPhong true ist und mindestens eine JsgLightSource erzeugt wurde.
JsgEleLighting.SpecRefl: Number(>=0); Init = 0.5
Specular Reflection: Bestimmt, wie stark der glänzende Lichtanteil SpecInt der Phong-Beleuchtung von der Fläche reflektiert wird. SpecRefl hat nur eine Auswirkung, wenn ApplyPhong true ist und mindestens eine JsgLightSource erzeugt wurde.
JsgEleLighting.Roughness: Number(>=0); Init = 1.0
Bestimmt die Rauheit der Oberfläche einer Fläche. Dies wirkt sich auf die Helligkeitsverteilung aus. Kleinere Werte als 1 lassen Flächen matter erscheinen, ähnlich wie Keramik.
Roughness hat nur eine Auswirkung, wenn ApplyPhong true ist und mindestens eine JsgLightSource erzeugt wurde.
JsgEleLighting.Shiny: Number(>=0); Init = 16
Bestimmt die Spiegelungsstärke der Oberfläche einer Fläche. Bei grossen Werten erscheint die Fläche metallisch spiegelnd, bei kleinen Werten matter. Empfohlene Werte sind: 1, 2, 4, 8, 16, 32, 64...
Shiny hat nur eine Auswirkung, wenn ApplyPhong true ist und mindestens eine JsgLightSource erzeugt wurde.
JsgEleLighting.DiffXRay: Number(>=0); Init = 0.0
Wie DiffRefl, jedoch auf die von einer Lichtquelle abgewandte Seite einer Fläche angewandt.
JsgEleLighting.SpecXRay: Number(>=0); Init = 0.9
Wie SpecRefl, jedoch auf die von einer Lichtquelle abgewandte Seite einer Fläche angewandt.
new JsgEleLighting( Params )
Erzeugt ein JsgEleLighting Objekt und initialisiert es mit Werten, welche in Params übergeben werden. In Params müssen nur Properties definiert werden, welche von den Default-Werten abweichen.
Wenn in Params ein JsgEleLighting Objekt übergeben wird, wird eine Kopie dieses Objektes zurückgegeben.
JsgEleLighting.Set( Params )
Ändert die in Params aufgeführten Properties. Nicht aufgeführte Properties behalten ihren aktuellen Wert.
}