Dynamic Lighting with OpenGL

Click here to load reader

  • date post

    19-May-2015
  • Category

    Technology

  • view

    1.373
  • download

    7

Embed Size (px)

description

Small paper about dynamic lighting using OpenGL

Transcript of Dynamic Lighting with OpenGL

  • 1. Saxion Hogeschool EnschedeD YNAMIC L IGHTINGImplementatie in OpenGLIn dit document wordt uiteengezet hoe dynamische verlichting metbehulp van OpenGL kan worden gesimuleerd. Naast eenuitgebreide introductie van het fenomeen licht, bevat dit verslagtevens een met wiskundige berekeningen onderbouwde handleidingvoor toepassing van de materie in OpenGL in combinatie met c++.Jeroen Rosenberg31-3-2008

2. 1Dynamic LightingVoorwoord Dit document is geschreven in het kader van een studietaak voor het vak computer graphics, als onderdeel van het derde studiejaar van de opleiding Informatica aan de Saxion Hogeschool te Enschede.Het verslag voert ons terug naar de oorsprong van licht, waardoor het de lezer aan de nodige basiskennis in de rest van het document niet zal ontbreken. Vervolgens wordt uitgebreid aandacht besteed aan de mogelijkheden van OpenGL met betrekking tot het ontwerp van lichtmodellen. Na het lezen van dit document beschikt de lezer hopelijk over voldoende kennis om de beschreven theorie in praktijk te kunnen brengen. Saxion Hogeschool Enschede | De oorsprong van licht 3. 2Dynamic LightingInhoudsopgave 1. De oorsprong van licht ......................................................................... 3 1.1 Een stroom van deeltjes of een golf van energie ................................... 3 1.2 De kleur van licht ............................................................................. 4 1.3 Abstracte typen licht ......................................................................... 6 1.3.1 Ambient light ............................................................................. 8 1.3.2 Diffuse light ............................................................................... 9 1.3.3 Specular light ........................................................................... 11 1.3.4 Emissive light ........................................................................... 12 1.4 Berekening van het licht op een willekeurig object .............................. 13 2. Licht in OpenGL ................................................................................ 14 2.1 Lighting en shading models ............................................................. 14 2.1.1 Object shading ......................................................................... 14 2.1.2 Light Models............................................................................. 14 2.1.3 Global ambient light model ......................................................... 15 2.1.4 Smooth shading ....................................................................... 15 2.1.5 Lichttypen ............................................................................... 162.1.5.1 Definiring van een lichtbron................................................. 162.1.5.2 In- en uitschakeling van een lichtbron .................................... 172.1.5.3 Het definiren van oppervlakmateriaal.................................... 182.1.5.4 Polygon winding .................................................................. 192.1.5.5 Materiaal eigenschappen ...................................................... 202.1.5.6 Overige eigenschappen ........................................................ 22 2.2 Normaal berekening ....................................................................... 23 2.2.1 Berekening van de vectoren ....................................................... 24 2.2.2 Berekening van het uitwendig product ......................................... 25 2.2.3 Normaliseren van de normaal ..................................................... 26Saxion Hogeschool Enschede | De oorsprong van licht 4. 3Dynamic Lighting 1. DE OORSPRONG VAN LICHT Licht is het belangrijkste aspect achter visuele representatie van elk willekeurig signaal dat een mens visueel waarneemt. Perceptie van licht vindt zijn oorsprong in het feit dat wat men kan zien niet gebaseerd is op de objecten die men bekijkt, maar op de reflectie van lichtstralen, die uitgezonden zijn vanuit een lichtbron, door deze objecten. Het is belangrijk om te beseffen dat onze ogen objecten niet direct zien, omdat hier tussen geen lichamelijke correlatie bestaat.Lichtstralen reizen theoretisch in een rechte lijn. Op het moment dat men een object visueel waarneemt, zijn het deze lichtstralen die door dat object gereflecteerd of verstrooid zijn. Bij het programmeren van een 3D licht engine, waarbij men gebruik maakt van de OpenGL lichtmodellering functies, is het belangrijk de volgende twee regels te begrijpen:Je ogen zijn mechanismen die gemaakt zijn om deeltjes van licht waar te nemen en niet de objecten zelf. Als een programmeur zul je deze werking op het computer scherm moeten simuleren.Een lichtstraal reist in een rechte lijn.1.1 Een stroom van deeltjes of een golf van energie Het laatstgenoemde punt hoeft niet per definitie waar te zijn. Er zijn twee manieren om licht te beschouwen. Een theorie beschrijft het licht als een stroom van deeltjes. Een tweede theorie ziet licht als een golf van energie. De oude Grieken zagen licht als een stroom van deeltjes die reizen in een rechte lijn en tegen een muur kaatsen op dezelfde manier als andere fysieke objecten doen. Men kon het licht niet zien, omdat de deeltjes simpelweg te klein of te snel voor het oog waren.In de zeventiende eeuw werd voorgesteld dat licht een golf van energie was die niet exact in een rechte lijn reisde. Dit werd in het jaar 1807 bevestigd met een experiment dat demonstreerde dat het licht, wanneer het een smalle opening passeerde, extra licht uitstraalde aan de andere kant van de opening. Hierdoor was bewezen dat het licht zich in de vorm van een golf moest verplaatsen om zich op deze manier te spreiden.Albert Einstein ontwikkelde de theorie van licht verder in het jaar 1905. Hij sprak van het foto-elektrische effect, waarbij ultraviolet licht elektronen van het oppervlak dat het raakte uitstraalde. Deze theorie beschouwde licht als een stroom van energie pakketjes, de zogenaamde fotonen.Hieruit kunnen we concluderen dat licht zich zowel als een golf als pakketjes van energie deeltjes (fotonen) kan gedragen. Saxion Hogeschool Enschede | De oorsprong van licht 5. 4namic LightingDyn1.2 De kleu van lic urcht Het licht dat he menselijk oog kan zien bestaa in het alg etkeat gemeen uit een mix van allerlei soor rten licht ve erstrooid en weerkaatst tegen de o t omringende objecten met elk hun eigen materiaal eigensc chappen. Alle fysieke ddeeltjes bestaan uit atommen. De manier van refflectie van ffotonen doo fysieke deoreeltjes hang o.a. af gt van het soort a atoom, het a aantal atommen van elk soort en de volgorde van dekemen in het object dat de fotone weerkaatst. Sommi atomt en ige fotonen worden n weerrkaatst en ssommige geeabsorbeerd Dit conce bepaald de visuele kwaliteitd.ept van materiaal. De kleur lic cht die het materiaal w weerkaatst wordt gezie als de en kleur van dat materiaal. Des te me r eer licht erd door het mmateriaal weeerkaatst word des te m dt, meer het lijjkt teglimmenvoor het h menselijk oog.Elkeverschillende kle eur bestaaat eenvo oudigweg uitu enerrgie die weergegeveen kan worden dooreeen golfleengte die zichtbaar is voor het oog. Een golfleng rEgte word gemeten tussen twe dt ee toppen of dalen van ee en enerrgiegolf. F Figuur 1 Een golflengte wnwordt gemete tussenen twee toppen of dalen van een golfn nSaxion Hogeschool En nschede | D oorsprong van licht De 6. 5namic LightingDynHet zzichtbare lic ligt tusse de golflengtes varirend van 39 nanometer (violetcht en 90 licht) tot 720 nanometer (rood licht Het segment van golflengtes die hier) t). tusse liggen woenordt het kleurenspectru genoemd.um Figuur 2 Het kleu urenspectrummBij het pr jrogramm meren vannliccht hoevven wij aalleenrekening t houden mettezicchtbaar llicht. Saxion Hogeschool Ennschede | D oorsprong van lichtDe 7. 6namic LightingDyn1.3 Abstrac typen licht cte n Om het effect vvan licht in OpenGL te begrijpen, is het goed om stil te staan bij de drie verschillende soorte lichtbronnen nen die Ope enGL onders scheidt:Directioonal lights, waarbij we ons voorstellen dat d lichtbron oneindig ede ver weg is, zodat de lichtstralen parallel aa elkaar lopen an pen.Point lig ghts, waarb de lichtbbij catie heeft in de ruimte en licht bron een loce in alle ric chtingen uitzendt. hts, waarbij de lichtbro eveneens een locatie heeft in de ruimte, Spotligh on se e maar alle een licht uitzendt binne een kegel.en Figuu 3 Directio ur onal light Figuu 4 Point lig ur ght Figuu 5 - Spotligh ur htSaxion Hogeschool En nschede | D oorsprong van licht De 8. 7 Dynamic LightingEchte lichtbronnen zenden licht uit van area sources (bronnen die licht vanuit een bepaald gebied uitzenden) of volume sources (driedimensionale bronnen van uitzendend licht). Point lights zijn een redelijke benadering van werkelijke lichtbronnen, maar produceren niet altijd visueel correcte informatie. Zo hebben schaduwen die gegenereerd worden door point lights scherpe hoeken, terwijl schaduwen gegenereerd door echte lichtbronnen een vloeiende rand hebben.1Voor het representeren van licht bij het programmeren zijn er een aantal abstracte termen die specifieke effecten van licht beschrijven samengevoegd tot abstracte typen licht. De terminologie van deze typen is essentieel voor een grafische programmeur. Deze set van effecten geeft bij langer na niet alle effecten die licht kan produceren weer, maar doet dienst als een redelijke benadering hiervan.Het is belangrijk om te begrijpen welk effect elk van deze abstracte typen licht hebben op het oppervlak van 3D objecten. De typen zijn bedacht omdat het noodzakelijk is dat bepaalde effecten van licht op objecten beschreven zijn om zo de ingewikkelde wiskundige berekeningen te distilleren. Dit betekent echter niet dat deze typen in werkelijkheid bestaan. Het zou erg tijdrovend zijn om de werkelijke mechaniek van licht te berekenen. Derhalve onderscheidt OpenGL de volgende soorten l