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

Preview:

Citation preview

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