2.10 Lichtquellen und Beleuchtung

Ähnliche Dokumente
OpenGL for Java OpenGL for Java Prof. Dr. V. Stahl

Computergraphik Grundlagen

I - Phone 3D 3D Spieleentwicklung für's I-Phone

Proseminar Computergrafik: OpenGL

Multimedia-Programmierung

Einführung in OpenGL. Einführung in OpenGL

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

Grundlagen der 3D-Computergrafik Programmieren mit OpenGL

Einführung in OpenGL. Thomas Kalbe Technische Universität Darmstadt.

Das ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas

die Planung eindrucksvoll präsentieren

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Eine Einführung in OpenGL

Rendering: Lighting & Shading

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG

Texture Mapping. Texturen

OpenGL als API für Augmented und Virtual Reality

OpenGL Modellierung und Beleuchtung

Der Einsatz von HDRIs in LightWave 7

Softwareprojekt Spieleentwicklung

Unity 4 Teil II. Universität zu Köln Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: Manfred Thaller Marvin Busch

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

OpenGL unter Python. Department für Informatik Dipl.-Inform. Rüdiger Busch

(1) 3D Engines. Vorlesung Computergraphik 2 D. Grüntjens Folien: Stefan Rilling / D. Grüntjens KOBLENZ LANDAU

Rendering Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Programmierpraktikum 3D Computer Grafik

Planare Projektionen und Betrachtungstransformation. Quelle: Angel (2000)

Photonik Technische Nutzung von Licht

Aus Zahlen werden Bilder. Jan Tobias Mühlberg

3.3 Beleuchtung und Schattierung

Licht und Schatten Visualieren mit dem PC. Andreas Asperl

Szenengraph-Architekturen im Kontext von VR- und AR-Anwendungen

Globale Beleuchtung. Thorsten Grosch. Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr

Texture Based Direct Volume Rendering

Spiele entwickeln für ipad, iphone und ipod touch

Grafikprogrammierung mit OpenGL

RENDERING. Cobalt Xenon Argon. mit Ashlar-Vellum.

Real-Time High-Dynamic Range Texture Mapping

Lineare Gleichungssysteme (Teschl/Teschl 11.1)

Computer-Graphik I Transformationen & Viewing

NÜTZLICHE TIPPS FÜR OPTIMALE SCANS

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

Grafikprogrammierung (Echtzeitrendering)

Kurzeinführung in OpenGL(ES)

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen

ANIMATION - GRUNDLAGEN

Visualisierung mit TurboCAD

2.2 Projektionen und Kameramodelle

(x 1. Vektoren. g: x = p + r u. p r (u1. x 2. u 2. p 2

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Android: Property Animation

C# Programm: Raytracer (3D Renderer)

Artlantis ARTLANTIS - INSPEKTOREN INSPEKTOREN ÜBERSICHT: Quelle: Artlantis Hilfe

3D-Grundlagen 0. Was, abgesehen von einem 3D-Grafiker, brauche ich, um eine 3D-Szene auf meinen Bildschirm zu zaubern?

Aufgaben und Lösungen

Einführung in GLSL - OpenGL Shading Language. Athanasios Karamalis

8 Cycles. ein GUI-basierter Ansatz wie bei den Blender-Intern-Materialien.

Graphische Datenverarbeitung und Bildverarbeitung

Färben, texturieren und rendern in Solid Edge

3D-Computergrafik und animation. Shading und globale Beleuchtungsverfahren, Animationstechniken

Darstellung komplexer 3D-Stadtmodelle im (mobilen) Webbrowser mittels bildbasiertem Rendering

Was ist der Farbwiedergabeindex?

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Advanced Rendering Interior Szene

Lights & Cameras Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

2D-Transformationen. Kapitel Translation. 6.2 Skalierung

DEUTSCHE SCHULE MONTEVIDEO BIKULTURELLES DEUTSCH-URUGUAYISCHES ABITUR ( AUF SPANISCH )

6 Licht, Schatten und die Welt

elaspix Real-Live-Fotos mit Artificial-3D-Stills kombinieren Tobias Günther

Zusammenfassung Vektorrechnung und Komplexe Zahlen

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

Seminar Game Development Game Computer Graphics. Einleitung

3.17 Zugriffskontrolle

Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian. Dauer: 30 min jeweils. Note: 1.

y x x y ( 2x 3y + z x + z

Gameprogramming WS2013/14 Futurella von Pavel Belskiy und Felix Niemeyer Betreuer: Stefan Buschmann

Maturitätsprüfung Mathematik

Computergraphik Grundlagen

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, Kore Nordmann

Lineare Algebra und analytische Geometrie

Grafikprogrammierung mit OpenGL II

Prof. W. Henrich Seite 1

13. Klasse TOP 10 Grundwissen 13 Geradengleichungen 01

Kurzanleitung. colorcontrol Software C4. colorsensor OT-3-MA-200 OT-3-GL-200 OT-3-HR-200

Abschnitt 9: Schnittstellen: Interfaces

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern

Inhalt. Grundlagen - Licht und visuelle Wahrnehmung 1. Grundlagen - 2D-Grafik (Teil 1) 43. Grundlagen - 2D-Grafik (Teil 2) 67

1 OpenGL in Delphi. 1.1 Vom Pixel zur Simulation. kleiner kommunikation

Digitale Bildverarbeitung Einheit 12 3D-Modellierung

Thomas Neubauer RICHTIG FOTOGRAFIEREN. 20 Tipps und Tricks für bessere Digital Fotos

geschlossene Schachtel mit einem kleinen Loch

Shader für Geometrische Grundprimitive. Beispielszene mit vielen Kegeln unterschiedlicher Größe und Farbe

CSCB - Fotoclub Workshop. TIPS und Grundlagen für gute Bilder

Den Filter-Dialog öffnen

Shadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen

Transkript:

2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1

2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2

2.10 Lichtquellen und Normalenvektoren - Modelview-Transformation kann unter Umständen die Länge der Normalenvektoren beeinflussen - Abhilfe: - glenable(gl_normalize) garantiert normalisierte Normalen aufwendig - glenable(gl_rescale_normal) skaliert Normalen in Abhängigkeit der Modelview- Transformationsmatrix funktioniert nur korrekt, wenn Normalen vorher normalisiert waren 2-3

2.10 Lichtquellen und Definition der Lichtquellen - Bestimmung der Lichtquellenparameter void gllighti(glenum light, GLenum paramname, GLint param); void gllightf(glenum light, GLenum paramname, GLfloat param); void gllightiv(glenum light, GLenum paramname, GLint *param); void gllightfv(glenum light, GLenum paramname, GLfloat *param); - Definiert die Parameter der entsprechenden Lichtquelle light - light kann die Werte GL_LIGHT0 bis GL_LIGHT7 annehmen 2-4

2.10 Lichtquellen und Lichtquellenparameter - GL_AMBIENT ambiente Intensität der Lichtquelle Defaultwert: (0.0, 0.0, 0.0, 1.0) - GL_DIFFUSE diffuse Intensität der Lichtquelle Defaultwert: Weiß für Licht 0, schwarz für alle anderen - GL_SPECULAR spiegelnde Intensität der Lichtquelle Defaultwert: Weiß für Licht 0, schwarz für alle anderen - GL_POSITION Position der Lichtquelle Defaultwert: (0.0, 0.0, 1.0, 0.0) - GL_SPOT_DIRECTION Hauptrichtung eines Spotlights Defaultwert: (0.0, 0.0, -1.0) - GL_SPOT_EXPONENT Spot-Exponent Defaultwert: 0 - GL_SPOT_CUTOFF Abstrahlungswinkel des Spots zu einer Seite Defaultwert: 180 2-5

2.10 Lichtquellen und Abschwächungsparameter einer Lichtquelle - GL_CONSTANT_ATTENUATION konstanter Abschwächungsfaktor Defaultwert: 1.0 - GL_LINEAR_ATTENUATION linearer Abschwächungsfaktor Defaultwert: 0.0 - GL_QUADRATIC_ATTENUATION quadratischer Abschwächungsfaktor Defaultwert: 0.0 2-6

2.10 Lichtquellen und Beispiel GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; gllightfv(gl_light0, GL_AMBIENT, light_ambient); gllightfv(gl_light0, GL_DIFFUSE, light_diffuse); gllightfv(gl_light0, GL_SPECULAR, light_specular); gllightfv(gl_light0, GL_POSITION, light_position); 2-7

2.10 Lichtquellen und Positionierung der Lichtquellen GLfloat light_position[] = { x, y, z, w }; gllightfv(gl_light0, GL_POSITION, light_position); - Homogene Koordinate entscheidet über den Typ der Lichquelle: - Richtungs-Lichtquelle (directional light) Die Lichtquelle ist unendlich weit entfernt, ihre Strahlen verlaufen parallel - Positions-Lichtquelle (positional light) Die Lichtquelle hat eine genaue Position in der Szene und wird als Punktlichtquelle betrachtet 2-8

2.10 Lichtquellen und Abschwächungsfaktoren der Lichtquellen d: Entfernung zwischen Lichtquelle und beleuchtetem Objekt gllightf(gl_light0, GL_CONSTANT_ATTENUATION, 2.0); gllightf(gl_light0, GL_LINEAR_ATTENUATION, 1.0); gllightf(gl_light0, GL_QUADRATIC_ATTENUATION, 0.3); 2-9

2.10 Lichtquellen und Spotlights GL_SPOT_CUTOFF GL_SPOT_EXPONENT GL_SPOT_DIRECTION k 2-10

2.10 Lichtquellen und Definition mehrerer Lichtquellen Analog können die Parameter mehrerer Lichtquellen gesetzt werden gllightfv(gl_light0, GL_AMBIENT, light0_ambient); gllightfv(gl_light0, GL_DIFFUSE, light0_diffuse); gllightfv(gl_light0, GL_SPECULAR, light0_specular); gllightfv(gl_light0, GL_POSITION, light0_position); gllightfv(gl_light1, GL_AMBIENT, light1_ambient); gllightfv(gl_light1, GL_DIFFUSE, light1_diffuse); gllightfv(gl_light1, GL_SPECULAR, light1_specular); gllightfv(gl_light1, GL_POSITION, light1_position); 2-11

2.10 Lichtquellen und Bewegung von Lichtquellen - Lichtquellen werden in OpenGL wie grafische Primitive behandelt - Ihre Position wird durch die Modelview-Matrix analog zur Position anderer Primitive verändert - Beispiel: GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; glclear (GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT); glpushmatrix (); glulookat (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glpushmatrix (); glrotated ((GLdouble) spin, 1.0, 0.0, 0.0); gllightfv (GL_LIGHT0, GL_POSITION, position); glpopmatrix (); glutsolidtorus (0.275, 0.85, 8, 15); glpopmatrix (); glflush (); 2-12

2.10 Lichtquellen und Bewegung von Lichtquellen relativ zum Auge - Wird erreicht durch Positionierung der Lichtquelle vor der Definition der Viewing-Transformation - Position der Lichtquelle wird in Aug-Koordinaten gespeichert 2-13

2.10 Lichtquellen und Bewegung von Lichtquellen relativ zum Auge - Beispiel der Initialisierung: GLfloat light_position[]={0.0, 0.0, 0.0, 1.0}; glviewport(0, 0, (GLint) w, (GLint) h); glmatrixmode(gl_projection); glloadidentity(); gluperspective(40.0, (GLfloat) w / (GLfloat) h, 1.0, 100.0); glmatrixmode(gl_modelview; glloadidentity(); gllightfv(gl_light0, GL_POSITION, light_position); 2-14

2.10 Lichtquellen und Bewegung von Lichtquellen relativ zum Auge - Beispiel der Display-Routine: static GLdouble ex, ey, ez, upx, upy, upz; void display(void) { glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glpushmatrix(); glulookat(ex, ey, ez, 0.0, 0.0, 0.0, upx, upy, upz); glutsolidtorus (0.275, 0.85, 8, 15); glpopmatrix(); glflush(); } 2-15

2.10 Lichtquellen und Beispielprogramm - movelight.c - eyelight.c (Siehe Website) 2-16

2.10 Lichtquellen und Das OpenGL smodell - Eigenschaften - Intensität des globalen Umgebungslichts - Augpunkt-Position in der Szene oder unendlich weit entfernt - Unterschiedliche s-berechnungen für Vorder- und Rückseiten der Oberflächen - Berechnung der spiegelnden Reflexion / Farbe getrennt von ambienter und diffuser Reflexion nach der Texturierung 2-17

2.10 Lichtquellen und Definition eines OpenGL smodells - Definition der Parameter des smodells void gllightmodeli(glenum parametername, GLint parameter) void gllightmodelf(glenum parametername, GLfloat parameter) void gllightmodeliv(glenum parametername, GLint *parameter) void gllightmodelfv(glenum parametername, GLfloat *parameter) - Legt die entsprechenden Parameter des smodells fest 2-18

2.10 Lichtquellen und Parameter des OpenGL smodells - GL_LIGHT_MODEL_AMBIENT Intensität des globalen Umgebungslichts Defaultwert: (0.2, 0.2, 0.2, 1.0) als RGBA-Wert - GL_LIGHT_MODEL_LOCAL_VIEWER Augpunkt-Position zur Berechnung der Reflexionswinkel bei Defaultwert: 0.0 oder GL_FALSE Spiegelung - GL_LIGHT_MODEL_TWO_SIDE Unterschiedliche für Vorder- und Defaultwert: 0.0 oder GL_FALSE Rückseiten - GL_LIGHT_MODEL_COLOR_CONTROL Getrennte Berechnung Defaultwert: GL_SINGLE_COLOR spiegelnder Reflexion 2-19

2.10 Lichtquellen und Globales Umgebungslicht - Ambientes Licht in der Szene, das nicht direkt von einzelnen Lichtquellen stammt - Anwendung: GLfloat lmodel_ambient[]={0.3, 0.1, 0.2, 1.0}; gllightmodelfv(gl_light_model_ambient, lmodel_ambient); 2-20

2.10 Lichtquellen und Lokaler oder unendlich weit entfernter Augpunkt - Beeinflusst die Berechnung von Spiegelungen / Highlights - Annahme über den Augpunkt bei der Berechnung des Vektors von einer Polygon-Ecke zum Augpunkt - Unendlich entfernter Augpunkt: Vektor von Polygon-Ecke zum Augpunkt wird als konstant angenommen und nur einmal berechnet - Lokaler Augpunkt: Vektor wird für jede Ecke und für aktuellen Augpunkt neu berechnet Realistischere Resultate Kostet mehr Rechenleistung - Anwendung: gllightmodeli(gl_light_model_local_viewer, GL_TRUE); 2-21

2.10 Lichtquellen und Zweiseitige - Bietet die Möglichkeit, für Vorder- und Rückseiten der Polygone unterschiedliche Materialeigenschaften zu verwenden - Vorteil: Vielfältigere Darstellungsmöglichkeiten - Nachteil: Rechenintensiver - Defaulteinstellung: ausgeschaltet - Anwendung: gllightmodeli(gl_light_model_two_side, GL_TRUE); 2-22

2.10 Lichtquellen und Sekundäre spiegelnde Farbe - Emissive, ambiente, diffuse und spiegelnde Farbe werden typischerweise getrennt berechnet und anschließend aufaddiert - Per Default wird Texture-Mapping nach der soperation ausgeführt - Spiegelnde Highlights werden möglicherweise verdeckt - Abhilfe: Getrennte Berechnung der spiegelnden Beiträge der nach dem Texture-Mapping - Anwendung: gllightmodeli(gl_light_model_color_control, GL_SEPARATE_SPECULAR_COLOR); bzw. gllightmodeli(gl_light_model_color_control, GL_SINGLE_COLOR); 2-23

2.10 Lichtquellen und Aktivieren der - glenable(gl_lighting); Aktivieren der einzelnen Lichtquellen - glenable(gl_light<i>); 2-24

Aufgabe Bewegte Lichtquellen - Spezifizieren Sie eine einfache Szene bestehend aus einem Torus - Definieren Sie eine feststehende rote Lichtquelle - Lassen Sie eine grüne Lichtquelle um den Torus rotieren 2-25

2.11 Materialeigenschaften Materialeigenschaften / Reflexionsverhalten von Materialien - Ambiente Reflexion - Diffuse Reflexion - Spiegelnde Reflexion - Emission 2-26

2.11 Materialeigenschaften Lokales smodell in OpenGL für n Lichtquellen k s 2-27

2.11 Materialeigenschaften Definition des Reflexionsverhaltens - Festlegung der Materialparameter void glmateriali(glenum face, GLenum pname, GLint parameter) void glmaterialf(glenum face, GLenum pname, GLfloat parameter) void glmaterialiv(glenum face, GLenum pname, GLint *parameter) void glmaterialfv(glenum face, GLenum pname, GLfloat *parameter) - Legt die emissive, ambiente, diffuse und spiegelnde Farbe des Materials fest - Der Parameter face legt fest, auf welche Seite sich die Materialeigenschaften beziehen - GL_FRONT - GL_BACK - GL_FRONT_AND_BACK 2-28

2.11 Materialeigenschaften Materialparameter - GL_AMBIENT Ambiente Farbe des Materials Defaultwert: (0.2, 0.2, 0.2, 1.0) als RGBA-Wert - GL_DIFFUSE Diffuse Farbe des Materials Defaultwert: (0.8, 0.8, 0.8, 1.0) - GL_AMBIENT_AND_DIFFUSE Gleichzeitige Definition des ambienten und diffusen Reflexionsverhaltens - GL_SPECULAR Farbe des Materials bei Defaultwert: (0.0, 0.0, 0.0, 1.0) spiegelnder Reflexion - GL_SHININESS Exponent der spiegelnden Defaultwert: 0.0 Reflexion - GL_EMISSION Emissive Farbe des Materials Defaultwert: (0.0, 0.0, 0.0, 1.0) 2-29

2.11 Materialeigenschaften Diffuse und ambiente Reflexion - Diffuse und ambiente Reflexionseigenschaften des Materials können sowohl getrennt als auch gemeinsam gesetzt werden - Diffuse und ambiente Reflexion liefern typischerweise die gleiche Farbe - Anwendung: GLfloat mat_amb_diff[]={0.1, 0.7, 0.54, 1.0}; glmaterialfv(gl_front_and_back, GL_AMBIENT_AND_DIFFUSE, mat_amb_diff); 2-30

2.11 Materialeigenschaften Spiegelnde Reflexion - Erzeugt spiegelnde Highlights - Hängt von Position der Lichtquelle und Augpunkt ab - Spiegelnder Anteil des smodells: s - GL_SPECULAR bestimmt spiegelndes Reflexionsverhalten K s - GL_SHININESS den Exponenten in der sformel - Anwendung: GLfloat mat_specular[]={1.0, 1.0, 0.1, 1.0}; GLfloat shininess = 5.0; glmaterialfv(gl_front, GL_SPECULAR, mat_specular); glmaterialf(gl_front, GL_SHININESS, shininess); 2-31

2.11 Materialeigenschaften Emission - Definiert ein Eigenleuchten der entsprechenden Materialien - Wird genutzt um Lampen oder ähnliches zu simulieren - Achtung: Die Objekte wirken NICHT als Lichtquellen auf andere Objekte! - Anwendung: GLfloat mat_emission[]={1.0, 0.3, 0.1, 1.0}; glmaterialfv(gl_front, GL_EMISSION, mat_emission); 2-32

2.11 Materialeigenschaften Beispielprogramm - material.c (Siehe Website) 2-33

2.11 Materialeigenschaften Color Material Modus - Methode zur Performance-Steigerung - Wendet die jeweils durch glcolor..() definierte Farbe auf einen Materialmodus an void glcolormaterial(glenum face, GLenum mode); - face kann folgende Werte annehmen: - GL_FRONT, GL_BACK, GL_FRONT_AND_BACK (Default) - mode kann die entsprechenden Werte für die verschiedenen Reflexionseigenschaften eines Materials annehmen: - GL_AMBIENT, GL_DIFFUSE, GL_AMBIENT_AND_DIFFUSE (Default), GL_SPECULAR, GL_EMISSION - Zu jeder Zeit ist nur ein Modus aktiv 2-34

2.11 Materialeigenschaften Beispiel glenable(gl_color_material); glcolormaterial(gl_front, GL_DIFFUSE); glcolor3f(0.2, 0.5, 0.7); // draw some objects... glcolormaterial(gl_front, GL_SPECULAR); glcolor3f(0.9, 0.1, 0.1); // draw some other objects with same diffuse material // properties but different specular properties gldisable(gl_color_material); 2-35

2.11 Materialeigenschaften Beispielprogramm - colormat.c (Siehe Website) 2-36

Aufgabe Materialien für Objekte in der Szene Ihres Projektes - Definieren Sie geeignete Materialeigenschaften für die Oberflächen der Objekte Ihres Projektes - Definieren Sie einige Lichtquellen, um die Szene zu beleuchten - Bewegen Sie eine Lichtquelle mit dem Augpunkt - Bewegen Sie eine Lichtquelle (z.b. per Maus oder Tastatur) um die Szene 2-37