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