Upload
annaliese-ratay
View
106
Download
1
Embed Size (px)
Citation preview
FH-Hof
Licht
Richard Göbel
FH-Hof
Licht in Java3D - Basisideen
Bereitstellung unterschiedlicher Lichtquellen
Definition der Wirkung einer Beleuchtung auf Objekte durch Material-Objekte für Appearances
Berechnung der wahrgenommenen Farbe in Abhängigkeit von:
der Farbe der Oberfläche
der Farbe des Lichts
Positionen von Lichtquelle, Objekt und
Beobachter
FH-Hof
Vereinfachungen
Eine Lichtquelle enthält nur bis zu drei Farben (RGB) und kein kontinuierliches Spektrum
Material-Objekte modellieren nur einige Aspekte der Lichtreflektion:
keine Rauheit
keine spiegelnden Flächen
Nur direkte Beleuchtung wird berücksichtigt:
kein Schatten
keine Abbildung von Objekten auf anderen
Objekten
FH-Hof
Typen von Lichtquellen
Szene ohne Licht AmbientLight DirectionalLight
PointLight SpotLight
FH-Hof
Ambient & Directional Light - Programmcode
AmbientLight ambLight = new AmbientLight(true,new Color3f(1f,1f,1f));
ambLight.setInfluencingBounds(new BoundingSphere(new Point3d(0,0,0),10));
objRoot.addChild(ambLight);
DirectionalLight dirLight = new DirectionalLight(new Color3f(1,0,0),
new Vector3f(-1,0,0));
dirLight.setInfluencingBounds(new BoundingSphere(new Point3d(0,0,0),10));
objRoot.addChild(dirLight);
FH-Hof
PointLight - Programmcode
Argumente Licht Position Abnahme
PointLight poiLight = new PointLight(new Color3f(0f, 1f, 0f), new Point3f(-1f,0,0), new Point3f(0f,0f,1f));
poiLight.setInfluencingBounds(new BoundingSphere(new Point3d(0,0,0),10));
objRoot.addChild(poiLight);
FH-Hof
SpotLight - Programmcode
Argumente: Farbe Position Abnahme Richtung Öffnungswinkel Abnahme zum Rand des Kegels
SpotLight spoLight = new SpotLight(new Color3f(0f,0f,1f), new Point3f(0f,1f,0f), new Point3f(0f,0f,1f), new Vector3f(0f,-1f,0f), (float) (Math.PI/8),
0f);
spoLight.setInfluencingBounds(new BoundingSphere(new Point3d(0,0,0),10));
FH-Hof
Beispiel für eine Szene mit Lichtquellen
FH-Hof
Material-Objekt - Beleuchtungsbereiche
Ambient ColorDiffuse Color
Specular Color
FH-Hof
Material-Objekt - Parameter „Shininess“
Wert: 1
Wert: 64
Wert: 128
FH-Hof
Material-Objekt - Programmcode
Appearance ap = new Appearance();
Material ma = new Material();
ma.setShininess(16f);
ma.setAmbientColor(0.2f, 0.2f, 0f);
ma.setDiffuseColor(1f, 1f, 0f);
ma.setEmissiveColor(0f, 0f, 0f);
ma.setSpecularColor(1f, 1f, 0.8f);
ap.setMaterial(ma);
Sphere sphere = new Sphere(0.4f,ap);
FH-Hof
Registrieren von Objekten - Idee
Für eine Lichtquelle lassen sich die zu beleuchtenden Objekte einzeln registrieren
Andere Objekte werden dann nicht mehr beleuchtet!
Anwendungen:
Lichtquellen in unterschiedlichen Räumen
Schatten
Besondere Lichteffekte
. . .
FH-Hof
Registrieren von Objekten - Code
DirectionalLight dirLight = new DirectionalLight( . . . );
. . .
dirLight.addScope( . . .);