FH-Hof Licht . . . und Schatten Richard Göbel
FH-Hof
Licht . . . und Schatten
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 Farbe 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
Simulation eines Schatten - Darstellung
FH-Hof
Simulation eines Schatten - Programmcode
TransformGroup transShadow = new TransformGroup();
trans.addChild(transShadow);
Transform3D matrixShadow = new Transform3D();
matrixShadow.setTranslation(new Vector3f(0f,height+0.01f,0f));
transShadow.setTransform(matrixShadow);
Cylinder shadow= new Cylinder(radius,0,ap1);
transShadow.addChild(shadow);
DirectionalLight dirLight = new DirectionalLight(new Color3f(1,1,1), new Vector3f(0,-1,-1));
dirLight.setInfluencingBounds(new BoundingSphere(new Point3d(0,0,0),10));
objRoot.addChild(dirLight);
dirLight.addScope(box);
dirLight.addScope(sphere);