Das Scene Objekt speichert Beleuchtungsdaten wie AmbientLight, CamLight und LightSourceList. Diese Daten werden beim Zeichnen von 3D-Flächen benötigt. Scene ist ein Property der JsGraph3D Klasse. Das Scene Objekt wird beim Erzeugen des JsGraph3D Objektes angelegt.
}
Die JsGraph3D.Scene kann mit der Funktion NewScene() durch eine neue Scene ersetzt werden. Der Konstruktor der JsgScene Klasse ist eine private Funktion, welche von NewScene() gerufen wird.
AmbientLight | Farbe und Helligkeit des Umgebungs-Lichtes |
CamLight | Farbe und Helligkeit des Kamera-Lichtes |
LightSourceList | Liste mit Lichtquellen |
Die JsgScene Properties dürfen nur gelesen werden. Verwende die JsgScene Funktionen, um die Scene-Einstellungen zu ändern.
NewScene() | Erzeugt ein neues JsGraph3D.Scene Objekt |
SaveScene() | Speichert eine JsgScene in einem Objekt |
SetScene() | Lädt eine JsgScene aus einem Objekt |
SaveLight() | Speichert die Lichtquellen der JsGraph3D.Scene in einem Objekt |
SetLight() | Kann zum Ersetzen der LightSourceList der JsGraph3D.Scene durch einen Array von JsgLightSource Objekten verwendet werden. |
SetAmbientLight() | Setzt das Umgebungs-Licht einer JsgScene |
SetCamLight() | Setzt das Kamera-Licht einer JsgScene |
AddLightSource() | Erzeugt eine neue Lichtquelle für die JsgScene |
JsgScene.AmbientLight: JsgColor; ReadOnly; Init = JsgColor.White(); → SetAmbientLight()
Farbe und Helligkeit des Umgebungs-Lichtes. Die effektive Farbe und Helligkeit hängt auch vom Property AreaColor und AmbiRefl einer Fläche ab.
JsgScene.CamLight: JsgColor; ReadOnly; Init = JsgColor.White(); → SetCamLight()
Farbe und Helligkeit des Kamera-Lichtes. Die effektive Farbe und Helligkeit hängt auch vom Property AreaColor und CamRefl einer Fläche ab.
JsgScene.LightSourceList: Array of JsgLightSource; ReadOnly; Init = [ ]; → AddLightSource()
Liste mit Lichtquellen, welche die Scene beleuchten.
JsGraph3D.NewScene( AmbientLight, CamLight )
Erzeugt eine neue JsGraph3D.Scene und ersetzt damit eine bestehende Scene. Mit der gelöschten Scene werden auch alle Lichtquellen gelöscht.
JsGraph3D.SaveScene( Params )
Speichert die JsGraph3D.Scene im Property Object.Scene. Wenn Params definiert ist, wird die Scene in diesem Objekt abgespeichert. Wenn Params undefiniert ist, wird ein neues Objekt vom Typ JsgSceneDef zum Speichern der Scene erzeugt. Das neue Objekt oder Params wird als Returnwert zurückgegeben.
Mit der Funktion SetScene() kann die gespeicherte Scene wieder im JsGraph3D.Scene Property installiert werden.
Hinweis: Im Objekt Params können auch andere Parameter definiert sein, welche nicht zu einer JsgScene gehören. So können im selben Objekt Properties verschiedener Objekte gespeichert werden. Dasselbe Objekt kann dann an mehere Funktionen übergeben werden, wobei jede Funktion ihre Parameter ausliesst und die anderen ignoriert.
JsGraph3D.SetScene( Params )
Übernimmt eine ganze JsgScene und ersetzt damit die JsGraph3D.Scene oder ersetzt die Beleuchtung der Scene wie in den Parametern angegeben.
}
Wenn der Parameter Scene definiert ist, wird das Property JsGraph3D.Scene durch diese Scene ersetzt. Wenn Scene nicht definiert ist, wird die Funktion SetLight() mit Params aufgerufen, welche die anderen drei Parameter verarbeitet. Diese werden in die bestehende JsGraph3D.Scene übernommen.
Hinweis: Die Funktion SaveScene() speichert die ganze JsGraph3D.Scene im Objekt, nicht die einzelnen Komponenten.
JsGraph3D.SaveLight( Params )
Speichert die Lichtquellen AmbientLight, CamLight und LightSourceList der JsGraph3D.Scene in einem Objekt. Wenn Params ein Objekt ist, werden die Lichtquellen in diesem Objekt abgespeichert. Wenn Params undefined ist, wird ein neues Objekt zum Speichern der Lichtquellen erzeugt. Params oder dieses Objekt wird als Returnwert zurückgegeben.
Mit der Funktion SetLight() können die gespeicherten Lichtquellen wieder in der JsGraph3D.Scene installiert werden.
JsGraph3D.SetLight( Params )
Setzt die Beleuchtung-Parameter des JsGraph3D.Scene Objektes. Für Parameter, welche nicht angegeben werden, behalten die entsprechenden JsgScene Properties ihren alten Wert.
}
Wird LightSourceList angegeben, werden alle vorhandenen Lichtquellen gelöscht und durch die in LightSourceList definierten Lichtquellen ersetzt. Alle Lichtquellen können gelöscht werden, indem LightSourceList = [ ] gesetzt wird.
g3d.SetLight( { AmbientLight: JsgColor.RGB( 0, 0, 1 ), CamLight: JsgColor.RGB( 1, 1, 0.9 ), LightSourceList: [ { LightColor: JsgColor.White(), LightDir: JsgVect3.New( 0, 0, 1 ) }, { LightColor: JsgColor.RGB( 1, 0, 0 ), LightPos: JsgVect3.New( -100, 0, 100 ) } ] } );
Für weitere Parameter von LightSourceList und weitere Beispiele siehe AddLightSource().
JsGraph3D.SetAmbientLight( LightColor )
Farbe und Helligkeit des Umgebungs-Lichtes. Die effektive Farbe und Helligkeit der Fläche hängt auch vom Property AreaColor und AmbiRefl einer Fläche ab.
JsGraph3D.SetCamLight( LightColor )
Farbe und Helligkeit des Kamera-Lichtes. Die effektive Farbe und Helligkeit der Fläche hängt auch vom Property AreaColor und CamRefl einer Fläche ab.
JsGraph3D.AddLightSource( Params )
Erzeugt eine punktförmige oder eine unendlich entfernte grossflächige Lichtquelle und speichert sie in der LightSourceList der JsGraph3D.Scene. Eine Refernz auf die erzeugte Lichtquelle wird als Returnwert zurückgegeben.
Wenn Params ein JsgLightSource Objekt ist, wird eine Kopie davon in der LightSourceList gespeichert.
}
Es müssen nur jene Properties definiert werden, welche von den Defaultwerten abweichen.
Die ersten 5 Properties entsprechen den JsgLightSource Properties. Wenn einer der anderen 4 Properties definiert ist, wird LightDir bzw. LightPos aus diesen 4 Werten berechnet. Für nicht definierte Properties wird jeweils der Defaultwert verwendet.
Hinweis: Von den Farben wird keine Kopie erstellt, sondern es werden die Referenzen auf die Farben in Params im JsgLightSource Objekt gespeichert. Änderungen an diesen Farben wirken sich daher auf die Lichtquelle aus. Ist dies nicht erwünscht, kann in Params mit der Funktion JsgColor.Copy() eine Kopie des Farb-Objektes übergeben werden.
Ein Beispiel wie die Funktion AddLightSource() verwendet werden kann, um einzelne Lichtquellen zu erzeugen:
g3d.AddLightSource( { LightColor: JsgColor.RGB(1,0,0), LightDir: JsgVect3.New( 0, 0.5, 1 ) } ); g3d.AddLightSource( { LightColor: JsgColor.RGB(0,0,1), LightDir: JsgVect3.New( 0, -0.5, 1 ) } );
Es kann auch die gesamte Beleuchtung auf einmal mit der Funktion SetLight() erzeugt werden:
g3d.SetLight( { LightSourceList: [ { LightColor: JsgColor.RGB(1,0,0), LightDir: JsgVect3.New( 0, 0.5, 1 ) }, { LightColor: JsgColor.RGB(0,0,1), LightDir: JsgVect3.New( 0, -0.5, 1 ) } ] } );