java3d licht und material (präsentiert von nicolaus walter)
TRANSCRIPT
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 ModelLicht- und Augenvektoren können konstant oder variable seinInter-Objekt Effekte werden nicht unterstütztColor Model: RGBEinflussbereich des LichtesShading Model
Shading – Lighting Model
Das Lighting Model besitzt drei Vektoren: Surface Normale(N) Lichtrichtung(L) Betrachtungsrichtung(E)
(Quelle: Java 3D Tutorial von Sun)
Shading – Lighting Modelambient reflection - schwaches Licht einer Szene
diffuse reflection – normale Lichtreflektionspecular reflection – erhellte Lichtreflektion
!Kein Schlagschatten!!Keine Effekte zwischen Objekten
ambient reflection
no shadow!
specular reflection
diffuse reflection
no inter-objekt reflection
(Quelle: Java 3D Tutorial von Sun)
Shading – ShadingModel
SHADE_GOURAUD
SHADE_FLAT
FASTEST
NICEST
Shading – ShadingModel
SHADE_GOURAUD
SHADE_FLAT
FASTEST
NICEST(Quelle: Java 3D Tutorial von Sun)
Erstellungbeleuchteter 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
Point Light
Spot Light
(Quelle: Java 3D Tutorial von Sun)
(Quelle: Java 3D Tutorial von Sun)
(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
AppearanceFarbe 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 NormaleNormale einer Oberfläche
Bestimmend zur Berechnung von Ein- und Austrittswinkeln bei Reflektionen
BackFaceNormale zur Beleuchtung der Unterseite einer Oberfläche
Normalengenerator benötigt GeometryInfo-Objekt
Primitiven erstellen Normale automatisch
Kann mit setNormale() in Geometrie des Objektes gesetzt werden
Lichteinfluss
setInluencingBounds()
setInfluencingBoundingLeaf()
Scoping
Bounds
Benötigt Bounds-ObjektEinflussbereich bewegt sich mit der LichtquelleObjekte außerhalb des Einflussbereiches werden nicht beleuchtetObjekte 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 PositionKeine MaterialeigenschaftenAuß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