28
Java3d „Licht und Material“ (präsentiert von Nicolaus Walter)

Java3d Licht und Material (präsentiert von Nicolaus Walter)

Embed Size (px)

Citation preview

Page 1: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Java3d „Licht und Material“

(präsentiert von Nicolaus Walter)

Page 2: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Überblick

Licht

Material

Surface Normale

Lichteinfluss

Leuchtende Objekte

Schatten

Page 3: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Licht

Shading

Beleuchtete Szenen

Lichtklassen Ambient Light Directional Light Point Light Spot Light

Maximale Anzahl von Lichtquellen

Page 4: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Shading

Lighting ModelLicht- und Augenvektoren können konstant oder variable seinInter-Objekt Effekte werden nicht unterstütztColor Model: RGBEinflussbereich des LichtesShading Model

Page 5: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Shading – Lighting Model

Das Lighting Model besitzt drei Vektoren: Surface Normale(N) Lichtrichtung(L) Betrachtungsrichtung(E)

(Quelle: Java 3D Tutorial von Sun)

Page 6: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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)

Page 7: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Shading – ShadingModel

SHADE_GOURAUD

SHADE_FLAT

FASTEST

NICEST

Page 8: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Shading – ShadingModel

SHADE_GOURAUD

SHADE_FLAT

FASTEST

NICEST(Quelle: Java 3D Tutorial von Sun)

Page 9: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Erstellungbeleuchteter Szenen

1. Licht Quellen Spezifikation

a. Einflussbereich festlegen

b. Dem „scene graph“ hinzufügen

2. Sichtbares Objekt

a. Normalen

b. Material Eigenschaften

Page 10: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Beleuchtete Szenen

(Quelle: Java 3D Tutorial von Sun)

Page 11: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Lichtklassen:Ambient Light

Konstante Intensität

Richtungsunabhängig

Simuliert die Lichtrefflektion der Umgebung

Page 12: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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

Page 13: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Lichtklassen:Point Light

Licht wirkt nach allen Richtungen

Intensität abhängig von Entfernung und Position

Simuliert Lichtquellen wie Glühbirnen oder Kerzenflammen

Page 14: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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

Page 15: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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)

Page 16: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Hierarchie der Lichtklassen

(Quelle: Java 3D Tutorial von Sun)

Page 17: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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

Page 18: Java3d Licht und Material (präsentiert von Nicolaus Walter)

AppearanceFarbe und Transparenz Material ColoringAttributes TransparancyAttributes

Rendering PointAttributes LineAttributes PolygonAttributes Rendering Attributes

Texturen Texture TextureAttributes TexCoordGeneration

Page 19: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Materialrigenschaften

ambient color

diffuse color

specular color

emissive color

shininess

Page 20: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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

Page 21: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Lichteinfluss

setInluencingBounds()

setInfluencingBoundingLeaf()

Scoping

Page 22: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Bounds

Benötigt Bounds-ObjektEinflussbereich bewegt sich mit der LichtquelleObjekte außerhalb des Einflussbereiches werden nicht beleuchtetObjekte werden ganz oder gar nicht beleuchtet

Page 23: Java3d Licht und Material (präsentiert von Nicolaus Walter)

BoundingLeaf

Wird in den Szenen Graph direkt eingesetzt

Kann unabhängig von der Lichtquelle bewegt werden

Bewegen der Lichtquelle verändert den Einflussbereich nicht

Page 24: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Scoping

Beschränkt den Einflussbereich

Erleichtert Selektierung nahegelegener Objekte

Verringert Renderingzeit

Standard Scope ist Scope der virtuellen Welt

Page 25: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Leuchtende Objekte

emissive – Wert bestimmt die Leuchtkraft

Wirkt sich nicht auf andere Objekte in der Szene aus

(Quelle: Java 3D Tutorial von Sun)

Page 26: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Schatten

Sehr komplex

Wird nicht von Java 3D unterstützt

Es gibt viele Verfahren zum generieren von Schatten

Kann mit Schatten Polygonen simuliert werden

Page 27: Java3d Licht und Material (präsentiert von Nicolaus Walter)

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

Page 28: Java3d Licht und Material (präsentiert von Nicolaus Walter)

Quellen

Java Sun Tutorial

TU Berlin

FHS-Hagenberg