CARL      VONOSSIETZKY            Licht & Material            Johannes Diemke            ¨            Ubung im Modul OpenG...
MotivationLicht & Material   Geometrisch gut aussehende Modelle allein sind nicht ausreichend   Ein realistisches visuelle...
MotivationLicht & Material    Johannes Diemke   OpenGL mit Java   WiSe 2010 / 2011   3/26
GrundlagenLichtquellen   Menschen sehen Objekte, indem Photonen ihr Auge erreichen          Prallen von der Ober߬che ab  ...
GrundlagenLichtquellen (Forts.)    Alle drei Lichtquellen haben Gemeinsamkeiten          Intensit¨t                  a    ...
GrundlagenLichtquellen (Forts.)    Unterteilung ist nicht physikalisch korrekt          Gibt aber viel Kontrolle uber Ersc...
GrundlagenMaterial   In Echtzeit-Computergrafik Systemen besitzen Materialien folgende   Parameter                      Not...
GrundlagenBeleuchtung   Bezeichnet Interaktion zwischen Material, Licht und GeometrieShading   Prozess der Beleuchtungsber...
GrundlagenBeleuchtungsmodelle   Die Beleuchtung wird mittels eines Beleuchtungsmodells berechnet   Unterteilung in Kompone...
GrundlagenEinschub: komponentenweise Multiplikation von Vektoren   Ausschließlich f¨r Farbvektor-Operationen sinnvoll     ...
GrundlagenAmbiente Komponente   Ad hoc Versuch Licht zu ber¨cksichtigen, das von anderen                              u   ...
GrundlagenDiffuse Komponente   Basiert auf Lamberts Gesetz   Photonen streuen gleichm¨ßig in alle Richtungen               ...
GrundlagenSpiegelnde Komponente   Basiert auf dem Phong Beleuchtungsmodell (nicht Phong Shading)   Simuliert Glanzlicht   ...
GrundlagenSpiegelnde Komponente (Forts.)   mshi beschreibt wie gl¨nzend ein Material erscheint                         a  ...
Licht & MaterialLicht in OpenGL   Maximal 8 Lichter in der Fixed Function Pipeline   Verwendet Variante des Phong Beleucht...
Licht & MaterialLicht in OpenGL (Forts.)   Ein- und Ausschalten der Beleuchtungsberechnung   gl.glEnable(GL2.GL_LIGHTING);...
Licht & MaterialLicht in OpenGL (Forts.)   Setzen der Parameter einer Lichtquelle   gl.glEnable(GL2.GL_LIGHTING);   gl.glE...
Licht & MaterialPoint Lights   Licht strahlt gleichm¨ßig in alle Richtungen                        a   Wird definiert durch...
Licht & MaterialDirectional Lights    Simulation von Lichtquellen mit unendlicher Entfernung    Alle Lichtstrahlen verlauf...
Licht & MaterialSpot Lights   Simulation von Scheinwerferlicht   Definition analog zu Pointlights mit w = 1   Spezielle Spo...
Licht & MaterialSpot Lights (Forts.)    Setzen der Spot Light Parameter    float[] spotDirection = {0.0f, 0.0f, -1.0f};   ...
Licht & Material                  ¨Alle Parameter im Uberblick     Setzen aller Parameter einer Lichtquellegl.glLightfv(GL...
Licht & MaterialMaterial   Bestimmt Materialeigenschaften          Reflexion des ambienten, diffusen und spiegelnden Lichts ...
Licht & MaterialMaterial (Forts.)    Zusammenfassen der Materialparameter zu einer Klasse    Material material = new Mater...
Literatur Dave Shreiner OpenGL Programming Guide http://www.opengl-redbook.com/ Richard S. Wright, Benjamin Lipchak und Ni...
Literatur Edward Angel Interactive Computer Graphics http://www.cs.unm.edu/˜angel/ Gerald Farin und Dianne Hansford Practi...
Nächste SlideShare
Wird geladen in …5
×

2010-JOGL-06-Licht-und-Material

719 Aufrufe

Veröffentlicht am

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
719
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

2010-JOGL-06-Licht-und-Material

  1. 1. CARL VONOSSIETZKY Licht & Material Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  2. 2. MotivationLicht & Material Geometrisch gut aussehende Modelle allein sind nicht ausreichend Ein realistisches visuelles Erscheinungsbild ben¨tigt mehr o Lichtquellen Materialien Texturen Nebel Transparenz Schatten ... Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/26
  3. 3. MotivationLicht & Material Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/26
  4. 4. GrundlagenLichtquellen Menschen sehen Objekte, indem Photonen ihr Auge erreichen Prallen von der Ober߬che ab a Werden von der Ober߬che emittiert a Photonen stammen von anderen Objekten oder Lichtquellen Directional Lights Point Lights Spot Lights Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/26
  5. 5. GrundlagenLichtquellen (Forts.) Alle drei Lichtquellen haben Gemeinsamkeiten Intensit¨t a Farbe (RGB Werte) Weitere Unterteilung m¨glich o Ambiente Farbintensit¨t a Diffuse Farbintensit¨t a Spiegelnde Farbintensit¨t a Notation Beschreibung samb ambiente Intensit¨t a sdiff diffuse Intensit¨t a sspec spiegelnde Intensit¨t a spos Position der Lichtquelle (vierelementig) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/26
  6. 6. GrundlagenLichtquellen (Forts.) Unterteilung ist nicht physikalisch korrekt Gibt aber viel Kontrolle uber Erscheinungsbild ¨ Spot Lights besitzen weitere Parameter Richtungsvektor Cutt-Off Winkel Spot Exponent Notation Beschreibung sdir Richtung des Spot Lights scut Cutt-Off Winkel des Lichtkegels sexp Spot Exponent zur Kontrolle der D¨mpfung a Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/26
  7. 7. GrundlagenMaterial In Echtzeit-Computergrafik Systemen besitzen Materialien folgende Parameter Notation Beschreibung mamb Ambiente Materialfarbe mdiff Diffuse Materialfarbe mspec Spiegelnde Materialfarbe mshi Shininess Parameter (Skalar) memi Emissive Materialfarbe Die Farbe einer Oberfl¨che wird durch dessen Materialeigenschaften, a den Eigenschaften der Lichtquelle und dem Beleuchtungsmodell bestimmt Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/26
  8. 8. GrundlagenBeleuchtung Bezeichnet Interaktion zwischen Material, Licht und GeometrieShading Prozess der Beleuchtungsberechnung und Bestimmung der daraus resultierenden Farben eines Pixels Drei verschiedene Shading Typen Flat, Gouraud und Phong Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/26
  9. 9. GrundlagenBeleuchtungsmodelle Die Beleuchtung wird mittels eines Beleuchtungsmodells berechnet Unterteilung in Komponenten Ambient Diffus Spiegelnd Hat nicht viel mit der Realit¨t zu tun a itot = iamb + idiff + ispec Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/26
  10. 10. GrundlagenEinschub: komponentenweise Multiplikation von Vektoren Ausschließlich f¨r Farbvektor-Operationen sinnvoll u Farben werden durch vierelementige Vektoren repr¨sentiert in denen a jedes Element im Intervall [0, 1] liegt      u1 v1 u1 · v1  :=  u2 · v2   u2   v2    u⊗v=  u3  ⊗  v3     u3 · v3  u4 v4 u4 · v4 mdiff ⊗ sdiff beschreibt bspw. die Tatsache, das Oberfl¨chen nur a Photonen mit der Farbe der Oberfl¨che diffus reflektieren k¨nnen a o Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/26
  11. 11. GrundlagenAmbiente Komponente Ad hoc Versuch Licht zu ber¨cksichtigen, das von anderen u Oberfl¨chen kommt a Indirekte Beleuchtung durch Lichtreflexion zwischen Objekten iamb = mamb ⊗ samb Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/26
  12. 12. GrundlagenDiffuse Komponente Basiert auf Lamberts Gesetz Photonen streuen gleichm¨ßig in alle Richtungen a idiff = max((n · l), 0)mdiff ⊗ sdiff Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 12/26
  13. 13. GrundlagenSpiegelnde Komponente Basiert auf dem Phong Beleuchtungsmodell (nicht Phong Shading) Simuliert Glanzlicht ispec = max((r · v), 0)mshi mspec ⊗ sspec , r = 2(n · l)n − l Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/26
  14. 14. GrundlagenSpiegelnde Komponente (Forts.) mshi beschreibt wie gl¨nzend ein Material erscheint a Je gr¨ßer mshi ist, desto gl¨nzender das Material o a Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/26
  15. 15. Licht & MaterialLicht in OpenGL Maximal 8 Lichter in der Fixed Function Pipeline Verwendet Variante des Phong Beleuchtungsmodells Blinn–Phong Beleuchtungsberechnung pro Vertex M¨gliche Shading Typen o Flat Gouraud M¨gliche Licht Typen o Directional Lights Point Lights Spot Lights Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/26
  16. 16. Licht & MaterialLicht in OpenGL (Forts.) Ein- und Ausschalten der Beleuchtungsberechnung gl.glEnable(GL2.GL_LIGHTING); gl.glDisable(GL2.GL_LIGHTING); Jedes der 8 m¨glichen Lichter muss einzeln ein- und ausgeschaltet o werden gl.glEnable(GL2.GL_LIGHT0); gl.glEnable(GL2.GL_LIGHT7); // draw fully lit deathstar gl.glDisable(GL2.GL_LIGHT0); gl.glDisable(GL2.GL_LIGHT7); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/26
  17. 17. Licht & MaterialLicht in OpenGL (Forts.) Setzen der Parameter einer Lichtquelle gl.glEnable(GL2.GL_LIGHTING); gl.glEnable(GL2.GL_LIGHT0); float[] ambientLight = {0.0f, 0.0f, 0.0f, 1.0f}; float[] diffuseLight = {1.0f, 1.0f, 1.0f, 1.0f}; float[] specularLight = {1.0f, 1.0f, 1.0f, 1.0f}; float[] lightPosition = {0.0f, 0.0f, 0.0f, 1.0f}; gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, ambientLight, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, diffuseLight, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, specularLight, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lightPosition, 0); Aber das ist noch lange nicht alles . . . Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 17/26
  18. 18. Licht & MaterialPoint Lights Licht strahlt gleichm¨ßig in alle Richtungen a Wird definiert durch Setzen der w -Komponente der Lichtposition auf w = 1 float[] lightPosition = {point.x, point.y, point.z, 1.0f}; gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lightPosition, 0); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/26
  19. 19. Licht & MaterialDirectional Lights Simulation von Lichtquellen mit unendlicher Entfernung Alle Lichtstrahlen verlaufen parallel Wird definiert durch Setzen der w -Komponente der Lichtposition auf w = 0 Position wird dann als Vektor in Richtung der Lichtquelle interpretiert float[] lightPosition = {vector.x, vector.y, vector.z, 0.0f}; gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lightPosition, 0); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 19/26
  20. 20. Licht & MaterialSpot Lights Simulation von Scheinwerferlicht Definition analog zu Pointlights mit w = 1 Spezielle Spotlightparameter Spotlight Cutoff (≥ 180 ergibt wieder ein Pointlight) Spotlight Direction Spotlight Exponent Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 20/26
  21. 21. Licht & MaterialSpot Lights (Forts.) Setzen der Spot Light Parameter float[] spotDirection = {0.0f, 0.0f, -1.0f}; float spotExponent = 0.0f; float spotCutoff = 30.0f; gl.glLightf(GL2.GL_LIGHT0, GL2.GL_SPOT_CUTOFF, spotCutoff); gl.glLightf(GL2.GL_LIGHT0, GL2.GL_SPOT_EXPONENT, spotExponent); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPOT_DIRECTION, spotDirection, 0); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 21/26
  22. 22. Licht & Material ¨Alle Parameter im Uberblick Setzen aller Parameter einer Lichtquellegl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, ambientLight, 0);gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, diffuseLight, 0);gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, specularLight, 0);gl.glLightf(GL2.GL_LIGHT0, GL2.GL_CONSTANT_ATTENUATION, constantAttenuation);gl.glLightf(GL2.GL_LIGHT0, GL2.GL_LINEAR_ATTENUATION, linearAttenuation);gl.glLightf(GL2.GL_LIGHT0, GL2.GL_QUADRATIC_ATTENUATION, quadraticAttenuation);gl.glLightf(GL2.GL_LIGHT0, GL2.GL_SPOT_CUTOFF, spotCutoff);gl.glLightf(GL2.GL_LIGHT0, GL2.GL_SPOT_EXPONENT, spotExponent);gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPOT_DIRECTION, spotDirection, 0);gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lightPosition, 0); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 22/26
  23. 23. Licht & MaterialMaterial Bestimmt Materialeigenschaften Reflexion des ambienten, diffusen und spiegelnden Lichts Eigene Lichtemission und Gl¨nzen a float[] matAmbient = {0.0f, 0.0f, 0.0f, 1.0f}; float[] matDiffuse = {0.0f, 0.0f, 0.0f, 1.0f}; float[] matSpecular = {0.0f, 0.0f, 0.0f, 1.0f}; float[] matEmission = {0.0f, 0.0f, 0.0f, 1.0f}; float matShininess = 0.0f; gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_AMBIENT, matAmbient, 0); gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_DIFFUSE, matDiffuse, 0); gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_SPECULAR, matSpecular, 0); gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_EMISSION, matEmission, 0); gl.glMaterialf(GL2.GL_FRONT, GL2.GL_SHININESS, matShininess); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 23/26
  24. 24. Licht & MaterialMaterial (Forts.) Zusammenfassen der Materialparameter zu einer Klasse Material material = new Material(); material.setAmbient(0.2f, 0.2f, 0.2f, 1.0f); material.setDiffuse(0.5f, 0.56f, 0.5f, 1.0f); material.setSpecular(Color.ORANGE); material.setEmission(0,0,0,0); material.setShininess(12.0f); material.bind(gl); deathstar.draw(gl); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 24/26
  25. 25. Literatur Dave Shreiner OpenGL Programming Guide http://www.opengl-redbook.com/ Richard S. Wright, Benjamin Lipchak und Nicholas Haemel OpenGL SuperBibel http://www.starstonesoftware.com/OpenGL/ Randi J. Rost OpenGL Shading Language http://www.3dshaders.com/ Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman o Real-Time Rendering http://www.realtimerendering.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 25/26
  26. 26. Literatur Edward Angel Interactive Computer Graphics http://www.cs.unm.edu/˜angel/ Gerald Farin und Dianne Hansford Practical Linear Algebra http://www.farinhansford.com/books/pla/ Fletcher Dunn und Ian Parberry 3D Math Primer for Graphics and Game Development www.gamemath.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 26/26

×