Java3d

Werbung
Java3d
„Licht und Material“
(präsentiert von Nicolaus Walter)
Überblick
Licht
Material
Surface Normale
Lichteinfluss
Leuchtende Objekte
Schatten
Licht
Shading
Beleuchtete Szenen
Lichtklassen




Ambient Light
Directional Light
Point Light
Spot Light
Maximale Anzahl von Lichtquellen
Shading
Lighting Model
Licht- und Augenvektoren können
konstant oder variable sein
Inter-Objekt Effekte werden nicht
unterstützt
Color Model: RGB
Einflussbereich des Lichtes
Shading Model
Shading – Lighting
Model
(Quelle: Java 3D Tutorial von Sun)
Das Lighting Model besitzt drei Vektoren:



Surface Normale(N)
Lichtrichtung(L)
Betrachtungsrichtung(E)
Shading – Lighting
Model
ambient reflection - schwaches Licht einer Szene
diffuse reflection – normale Lichtreflektion
specular reflection – erhellte Lichtreflektion
!Kein Schlagschatten!
!Keine Effekte zwischen Objekten
specular reflection
ambient reflection
no shadow!
(Quelle: Java 3D Tutorial von Sun)
diffuse reflection
no inter-objekt reflection
Shading – Shading
Model
SHADE_GOURAUD
SHADE_FLAT
FASTEST
NICEST
Shading – Shading
Model
SHADE_GOURAUD
SHADE_FLAT
FASTEST
NICEST
(Quelle: Java 3D Tutorial von Sun)
Erstellung
beleuchteter Szenen
1. Licht Quellen Spezifikation
a. Einflussbereich festlegen
b. Dem „scene graph“ hinzufügen
2. Sichtbares Objekt
a. Normalen
b. Material Eigenschaften
Beleuchtete Szenen
(Quelle: Java 3D Tutorial von Sun)
Lichtklassen:
Ambient Light
Konstante Intensität
Richtungsunabhängig
Simuliert die Lichtrefflektion
der Umgebung
Lichtklassen:
Directional Light
Nur in eine Richtung
Der Lichtvektor ist gleichbleibend
Nur „diffuse reflection“ und „specular
reflection“ werden beeinflusst
Simuliert ein weit entferntes Licht wie
etwa die Sonne
Lichtklassen:
Point Light
Licht wirkt nach allen Richtungen
Intensität abhängig von Entfernung
und Position
Simuliert Lichtquellen wie Glühbirnen
oder Kerzenflammen
Lichtklassen:
Spot Light
Unterklasse von Point Light
Hat eine Richtung
Intensität abhängig von Nähe zum
Kern des Kegels
Simuliert Lichtquellen wie
Taschenlampen oder Scheinwerfer
Lichtklassen im
Überblick
Directional Light
(Quelle: Java 3D Tutorial von Sun)
Point Light
(Quelle: Java 3D Tutorial von Sun)
Spot Light
(Quelle: Java 3D Tutorial von Sun)
Hierarchie der
Lichtklassen
(Quelle: Java 3D Tutorial von Sun)
Maximale Anzahl von
Lichtquellen
Achtung:



OpenGL: bei der Berechnung der Farbwerte eines
Objekts dürfen maximal 8 Lichtquellen verwendet
werden (hängt aber von der Grafikkarte ab!!).
Das heißt nicht, dass in einer Java3D Szene nur
acht Lichtquellen vorkommen dürfen.
Durch Setzen der Einflussbereiche der Lichtquellen
muss sicher gestellt sein, dass EIN Objekt von
höchstens 8 Lichtquellen beleuchtet wird
Appearance
Farbe und Transparenz



Material
ColoringAttributes
TransparancyAttributes
Rendering




PointAttributes
LineAttributes
PolygonAttributes
Rendering Attributes
Texturen



Texture
TextureAttributes
TexCoordGeneration
Materialrigenschaften
ambient color
diffuse color
specular color
emissive color
shininess
Surface Normale
Normale einer Oberfläche
Bestimmend zur Berechnung von Ein- und
Austrittswinkeln bei Reflektionen
BackFaceNormale zur Beleuchtung der
Unterseite einer Oberfläche
Normalengenerator benötigt GeometryInfoObjekt
Primitiven erstellen Normale automatisch
Kann mit setNormale() in Geometrie des
Objektes gesetzt werden
Lichteinfluss
setInluencingBounds()
setInfluencingBoundingLeaf()
Scoping
Bounds
Benötigt Bounds-Objekt
Einflussbereich bewegt sich mit der
Lichtquelle
Objekte außerhalb des
Einflussbereiches werden nicht
beleuchtet
Objekte werden ganz oder gar nicht
beleuchtet
BoundingLeaf
Wird in den Szenen Graph direkt
eingesetzt
Kann unabhängig von der Lichtquelle
bewegt werden
Bewegen der Lichtquelle verändert den
Einflussbereich nicht
Scoping
Beschränkt den Einflussbereich
Erleichtert Selektierung nahegelegener
Objekte
Verringert Renderingzeit
Standard Scope ist Scope der virtuellen
Welt
Leuchtende Objekte
emissive – Wert
bestimmt die
Leuchtkraft
Wirkt sich nicht
auf andere
Objekte in der
Szene aus
(Quelle: Java 3D Tutorial von Sun)
Schatten
Sehr komplex
Wird nicht von Java 3D unterstützt
Es gibt viele Verfahren zum generieren
von Schatten
Kann mit Schatten Polygonen simuliert
werden
Schatten Polygone
Erschaffen eines Polygons in Form des
Schattens an gewünschter Position
Keine Materialeigenschaften
 Außerhalb des Einflussbereiches einer
oder mehrerer Lichtquellen lassen

Objekte lassen sich nur unter großem
Aufwand bewegen
Quellen
Java Sun Tutorial
TU Berlin
FHS-Hagenberg
Herunterladen