WaBis

walter.bislins.ch

JSG3D: JsgEleLighting

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).

JsgEleLighting Klasse

JsgEleLighting = {
ApplyCamLight: Boolean; Init = true → Kamera-Beleuchtung
ApplyAmbient: Boolean; Init = true → Ambient-Beleuchtung
ApplyPhong: Boolean; Init = false → Phong-Beleuchtung
BlackAndWhite: Boolean; Init = false → Schwarz/Weiss-Darstellung
ColorResolution: Integer(>=0); Init = 0
Dimm: Number(>=0); Init = 1.0
CamRefl: Number(>=0); Init = 1.0
AmbiRefl: Number(>=0); Init = 0.2
DiffRefl: Number(>=0); Init = 0.5
SpecRefl: Number(>=0); Init = 0.5
Roughness: Number(>=0); Init = 1.0
Shiny: Number(>=0); Init = 16
DiffXRay: Number(>=0); Init = 0.0
SpecXRay: Number(>=0); Init = 0.9
}

JsgEleLighting Properties

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 Funktionen

JsgEleLighting.ApplyCamLight

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

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

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

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

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

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

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

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

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

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

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

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

JsgEleLighting.DiffXRay: Number(>=0); Init = 0.0 

Wie DiffRefl, jedoch auf die von einer Lichtquelle abgewandte Seite einer Fläche angewandt.

JsgEleLighting.SpecXRay

JsgEleLighting.SpecXRay: Number(>=0); Init = 0.9 

Wie SpecRefl, jedoch auf die von einer Lichtquelle abgewandte Seite einer Fläche angewandt.

JsgEleLighting()

new JsgEleLighting( Params )

Params: EleLightingDef or JsgEleLighting; Optional
Return: JsgEleLighting

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()

JsgEleLighting.Set( Params )

Params: EleLightingDef or JsgEleLighting; Optional

Ändert die in Params aufgeführten Properties. Nicht aufgeführte Properties behalten ihren aktuellen Wert.

EleLightingDef

EleLightingDef = {
ApplyCamLight: Boolean; Optional; Default = true
true → Beleuchtung vom Kameralicht CamLight anwenden.
ApplyAmbient: Boolean; Optional; Default = true
true → Umgebungsbeleuchtung AmbientLight anwenden.
ApplyPhong: Boolean; Optional; Default = false
truePhong-Beleuchtung anwenden.
BlackAndWhite: Boolean; Optional; Default = false
true → Schwarz/Weiss Darstellung; Farben werden in Graustufen umgerechnet.
ColorResolution: Integer(0-255); Optional; Default = 0
Darstellung mit beschränkter Anzahl Farben; Farbpalette wird auf ColorResolution+1 Farben pro Farbkanal (rot, grün, blau) reduziert.
Dimm: Number(0-1,>1); Optional; Default = 1.0
Abdunklung der Flächenfarbe: 0 → schwarz, 1 → keine Abdunklung.
CamRefl: Number(0-1,>1); Optional; Default = 1.0
Reflexionsanteil des Kameralichtes CamLight.
AmbiRefl: Number(0-1,>1); Optional; Default = 0.2
Reflexionsanteil des Umgebungslichtes AmbientLight.
DiffRefl: Number(0-1,>1); Optional; Default = 0.5
Reflexionsanteil des Diffusen Lichtanteils der Lichtquellen in LightSourceList.
SpecRefl: Number(0-1,>1); Optional; Default = 0.5
Reflexionsanteil des Glanzlichtanteils (Specular) der Lichtquellen in LightSourceList.
Roughness: Number(0-1); Optional; Default = 1.0
Keramikeffekt: Rauheit der Oberfläche, 0 = maximale Rauheit.
Shiny: Integer(>1); Optional; Default = 16
Glanzeffekt: 1 = Matt bis 64 und mehr für Hochglanz.
DiffXRay: Number(0-1,>1); Optional; Default = 0.0
Diffuse Reflection bei Beleuchtung von hinten.
SpecXRay: Number(0-1,>1); Optional; Default = 0.9
Specular Reflection bei Beleuchtung von hinten.
}
Weitere Infos zur Seite
Erzeugt Dienstag, 22. Juli 2014
von wabis
Zum Seitenanfang
Geändert Sonntag, 8. Januar 2017
von wabis