Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T

Storlek: px
Starta visningen från sidan:

Download "Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T"

Transkript

1 Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T Examensarbete Stockholm, Sverige 2006

2 Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T Examensarbete i datalogi om 20 poäng vid Programmet för datateknik Kungliga Tekniska Högskolan år 2006 Handledare på CSC var Lars Kjelldahl Examinator var Lars Kjelldahl TRITA-CSC-E 2006:097 ISRN-KTH/CSC/E--06/097--SE ISSN Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:

3 Referat Att simulera fenomen som uppstår i våran omgivning har länge varit ett stort forskningsområde inom datorgrafik. I dagens datorspel ställs stora krav på att miljöerna är visuellt attraktiva och så naturtrogna som möjligt. För att ytterligare öka realismen i datorspel är det önskvärt att inkludera det fenomen som uppstår då ljusstrålar sprids och absorberas mot partiklar i luften. Bland annat uppstår skenet runt en ljuskälla under en dimmig kväll på grund av att ljusstrålar sprids och når vårat öga från olika riktningar. Även den ljuskon som bildas i exempelvis en rökfylld studio uppkommer på grund av detta fenomen. Ljuset spridning och absorption mot partiklar är beräkningsmässigt komplicerat och rapporten syftar till att göra en noggrann undersökning av tidigare forskning kring algoritmer som simulerar fenomenet i realtid. Speciellt har metoder som använder sig av datorns grafikhårdvara utvärderats med tanke på lämpligheten att införa algoritmen i en komplex grafikmotor. För att kunna inkluderar en algoritm i exempelvis ett datorspel ställs speciella krav på dess effektivitet i och med att datorspel innehåller många andra beräkningskrävande algoritmer som kräver mycket processorkraft. Arbetet presenterar även en metod som approximerar ljusets interaktion med partiklar i luften genom att definiera tredimensionell geometri bestående av polygoner. Metoden är effektiv och är enkel att inkludera i en befintlig grafikmotor.

4 Abstract Real-Time Light Scattering in Participating Media In the field of computer graphics, simulation of natural phenomena has always been an important research subject. The visual appearance of todays computer games is becoming more and more important. The effect of light scattering in participating media will increase the visual experience of the 3D scene. The glows around light sources on a misty evening is due to light reaching the viewer from different directions. Studio spotlights that produce an illuminated volume is also because light scatters and absorbs against particles in the atmosphere. Light scattering in the atmosphere is very time consuming to calculate and the thesis main purpose is to summarize the research previously made in the area of light scattering. Methods that uses the modern graphic hardware has mostly been studied in the terms of how easy the algorithm is to implement in an complex graphics engine. Special requirements is made on these methods because computer games contains other time consuming processes that demand a large portion of the computers resources. The thesis also proposes a method that simulates light scattering in participating media through 3D geometry and an easy to understand rendering algorithm. The method is fast and simple to include in an existing graphics engine.

5 Innehåll 1 Introduktion Mål och syfte Metod Översikt Bakgrund Grafik hårdvara Introduktion Transformationer och koordinatsystem Texturering Programmerbarhet i grafikprocessorer Ljusvolymer Grundläggande teori Spridningsekvationen Metoder för att rendera spridningsekvationen Dimmiga miljöer OpenGL dimma Icke homogen dimma Arbetet Isotropisk punktljuskälla Implementation Begränsningar i metoden Volym från en riktad ljuskälla Implementation

6 3.2.2 Begränsningar i metoden Resultat och slutsatser 39 Litteraturförteckning 43

7 Figurer 2.1 Standard grafik-pipeline Tangent-Space Tvådimensionell texturering Texturmappning av en cylinder Programmerbar grafik-pipeline. Illustrerar flödet mellan vertex-shader och pixel-shader Illustration av hur ljusstrålar interagerar med partiklar i luften Ljus sprids och orsakar ett starkt sken runt en punktljuskälla Illustration av komplexiteten i att simulera ljusets interaktion med partiklar Ljus sprids en gång och färdas i riktning mot en betraktare Billboard-plan orienterad mot en betraktare Artefakter för Billboards-metoden Beräkna kortaste avståndet mellan ljuskälla och betraktarvektor för att simulera skenet runt en ljuskälla Exempel på ATIs metod för att rendera skenet runt en ljuskälla Evaluera spridningsekvationen med hjälp av samplingsplan Samplingsplan belägna inuti ett ljusfrutum Sikt och kontrast mellan föremål reduceras på grund av dimma Skärmdumpar på en scen renderad med dimma OpenGL s funktioner för att beräkna dimma Noise-textur för att rendera moln Endimensionell noise-funktion Interpolerad noise-funktion Utjämnad noise-funktion

8 2.23 Tvådimensionella Perlin noise-texturer Perlin s turbulenstextur Ljus sprids och färdas i riktning mot en betraktare D-graf för funktionen F (u, v) Funktionen F (u, v) som en tvådimensionell textur Exempel på upplysta ljusvolymer Textur för att uppskatta hur ljuset avtar vertikalt längs ljuskonen Problem vid silhuett-avkänning Tangent-space för några hörn på ljuskonen Beräkning av konens silhuett Problem då ett föremål skär ljuskonen Illustration av de olika stegen för att rendera en ljuskon Skillnaden mellan Suns metod och billboards då en ljuskälla placeras intill en vägg Storleken på skenet bestäms delvis av avståndet till betraktaren Dimmans spridningskoefficient bestämmer storleken på skenet Exempel på hur ljusvolymen kan användas

9 Kapitel 1 Introduktion Att simulera fenomen som uppstår i våran omgivning har länge varit ett stort forskningsområde inom datorgrafik. I dagens datorspel ställs stora krav på att miljöerna är visuellt attraktiva och så naturtrogna som möjligt. För att ytterligare öka realismen i datorspel är det önskvärt att inkludera det fenomen som uppstår då ljusstrålar sprids mot partiklar i luften. Detta fenomen är beräkningsmässigt komplicerat och genom åren har många metoder föreslagits för att visualisera fenomenet i realtid. Utan att gå in i detalj reduceras ofta komplexiteten i problemet genom att göra en mängd olika approximationer för hur ljusstrålar interagerar med partiklar. De effekter som uppstår på grund av detta fenomen inkluderar det sken som bildas runt exempelvis en gatlykta under en dimmig kväll, eller den ljuskägla som bildas på grund av att en lampa eller spotlight sänder ut ljusstrålar i begränsade riktningar. Anledningen till att skenet uppstår beror på att de ljusstrålar som gatlyktan sänder ut sprids mot partiklar i luften och når vårat öga från olika riktningar. En ljusstråle kan påverkas av flera partiklar innan den når betraktaren vilket leder till att komplexiteten för problemet är stort i och med att flera spridningshändelser måste betraktas. En annan faktor som spelar in vid simuleringen av dessa fenomen är att den intensitet som ljusstrålarna har även absorberas då de interagerar med partiklar, exempelvis kan en del av intensiteten absorberas och den andra delen färdas i en ny rikting. Sannolikheten att en ljusstråle kolliderar med en partikel beror på partikelkoncentrationen i luften och sträckan som ljuset färdas. En hög koncentration av partiklar i luften ger en tätare dimma och sannolikheten för att ljuset sprids mot en partikel är därför hög. Andra effekter som uppstår på grund av dimma, och då speciellt tät dimma, är att sikten försämras och att föremål i omgivningen tappar kontrast, det vill säga konturerna mellan bakgrund och föremålens kanter suddas ut och blir därmed svårare att urskilja. 1

10 KAPITEL 1. INTRODUKTION 1.1 Mål och syfte Huvudmålet med detta projekt är att göra en noggrann undersökning och analys av den forskning som tidigare gjorts inom området och återge materialet i en sammanfattning. Utöver undersökningen och sammanfattningen ingår framtagandet av en metod som på ett trovärdigt och effektivt sätt kan simulera hur ljus sprids mot partiklar och därmed bildar skenet som omger punktljuskällor i en dimmig miljö. Även en metod för den ljusvolym som bildas då ljuset från en riktad ljuskälla interagerar med partiklar skall utvecklas. Metoderna skall fungera i realtid och vara enkla att inkludera i en befintlig grafikmotor. Exempel på frågeställningar som besvaras i denna rapport är bland annat: Är det möjligt att lätt integrera dessa effekter i en komplex grafikmotor? Hur effektiva är metoderna? Vad är fördelarna respektive nackdelarna med en specifik metod? 1.2 Metod Projektet har utförs i följande steg: En omfattande studie av tidigare arbeten inom området. Material som simulerar fenomenen på ett korrekt fysikaliskt sätt har studerats, men även metoder som renderar effekterna utan att ta hänsyn till fysiken har speciellt använts. Detta på grund av att ett av målen har varit att inkludera implementationen i ett datorspel som kräver hög prestanda. Implementation och analys av metoder som kan användas i realtid, det vill säga inkluderas i ett datorspel. Detta har mestadels gjorts i Microsoft DirectX grafik API, Microsoft HLSL (High Level Shading Language) samt NVIDIA CG. Grafikhårdvara har varit ett NVidia GeForce 7800 GT grafikkort. En noggrann dokumentation av ovanstående steg som i slutändan resulterar i en skriftlig rapport. 1.3 Översikt Kapitel 2 behandlar grundläggande teori om hur ljus sprids och absorberas mot partiklar i luften. Spridningsekvationen som beskriver detta fenomen definieras och förklaras. Kapitlet innehåller även tidigare arbeten inom området samt en kort introduktion till grafikkortets hårdvara och dess möjligheter. I kapitel 3 förklaras det arbete som utförts i samband med detta projekt. Två metoder som renderar de effekter som uppstår då ljus interagerar med partiklar i realtid 2

11 1.3. ÖVERSIKT presenteras i kapitlet. För varje metod diskuteras lämpligheten att implementera metoden i en grafikmotor samt de visuella och tekniska begränsningar som existerar. Resultat och slutsatser diskuteras i kapitel 4 där skärmdumpar från implementationerna återger det visuella resultatet av metoderna från kapitel 3. 3

12

13 Kapitel 2 Bakgrund Kapitlet behandlar nödvändig teori för att förstå det fenomen som uppstår då ljus sprids mot partiklar i luften. Grundläggande begrepp och ekvationer beskrivs i avsnitt 2.2 där även den viktiga spridningsekvationen definieras. Ekvationen beskriver intensitetsbidraget som uppkommer på grund av att ljuset sprids mot partiklar och fortsätter i riktning mot en betraktare. För läsare med liten eller ingen kunskap i området grafikhårdvara och renderingsmetoder ges i avsnitt 2.1 en kort beskrivning av grundläggande begrepp för att förstå fortsättningen av rapporten. Vidare ges en sammanfattning av tidigare forskningsresultat inom området. Speciellt diskuteras fördelar och nackdelar vid införandet av metoderna i en befintlig grafikmotor. 2.1 Grafik hårdvara Avsnittet ger en kort introduktion till modern grafikhårdvara för läsare med ingen eller liten kunskap inom området. Först följer en introduktion till hur grafikprocessorn i en dator hanterar tredimensionell geometri och hur den renderar pixlar på en skärm. Därefter följer en kort beskrivning av hur föremål i ett datorspel färgsätts genom att klistra en bild (textur) på föremålets yta. Vidare diskuteras också de stora möjligheterna som dagens grafikhårdvara ger för att rendera komplicerade effekter genom att använda ett så kallat High Level Shading Language Introduktion De flesta grafik API:er (OpenGL, DirectX) har en så kallad grafik-pipeline vars huvudsakliga uppgift är att ta en beskrivning av en tredimensionell representation 5

14 KAPITEL 2. BAKGRUND av en miljö och transformera den till en tvådimensionell bild som kan visas på en skärm. Figur 2.1. Standard grafik-pipeline. En applikation sänder hörnen för en primitiv till steget som transformerar hörnen så att de kan visas på en tvådimensionell skärm. Dessa hörn skickas i sin tur vidare till primitivkonstruktion och rastrerings steget som har till uppgift att skapa fragment baserat på informationen om primitiven. Fragmenten skickas därefter till steget som texturerar och färgsätter fragmentet och slutligen utförs en rad olika tester som avgör om ett fragment skall uppdatera en pixel på skärmen. Ett 3D-program skickar hörnen i en tredimensionell primitiv till grafikprocessorn (GPU). De hörn som tillsammans bildar en primitiv kallas med en gemensam benämning för vertex och en primitiv kan exempelvis vara en polygon, linje eller punkt. Ett hörn innehåller i sin tur olika attribut så som färg, texturkoordinater (Behandlas i avsnitt 2.1.3) och en normal. När en samling hörn skickas till GPUn utförs en rad olika steg för att i slutändan kunna visa en tvådimensionell bild på skärmen. Figur 2.1 illustrerar de olika stegen som hörnen går igenom i en grafik-pipeline. Transformation av hörn Målet för det första steget är att konvertera ett hörns position till en tvådimensionell skärmposition. Detta görs med en rad olika transformationer som beskrivs mer utförligt i avsnitt Andra uppgifter som görs i detta steg är ljussättning för att avgöra hörnets färg och texturkoordinatgenerering. Primitivkonstruktion och rastrering Hörnen från föregående steg samlas ihop och konverteras till en primitiv baserad på information som följer med en sekvensen av hörn. Den konstruerade primitiven kan även behövas klippas av beroende på om den kommer att synas på skärmen eller inte. Geometri och fragement som inte kommer synas i den slutgiltiga bilden är ingen idé att fortsätta behandla. Vidare kan även detta steg exkludera polygoner 6

15 2.1. GRAFIK HÅRDVARA baserat på hur de är orienterade. Exempelvis behöver inte en polygon som har sin baksida orienterad mot betraktaren renderas. Rastrering är den process som konverterar en geometrisk beskrivning av en primitiv till en fragmentrepresentation. Primitiven fylls med fragment som kan ses som en eventuellt pixel som slutligen kommer att uppdatera en bildpunkt på skärmen. Texturering och färgsättning Då en primitiv har rastrerats till en samling fragment färgsätts fragmenten beroende på textur, dimma och färg. Utöver detta kan ett nytt djup för fragmentet beräknas och eventuellt kan fragmentet kastas bort och därmed undvika fler operationer på fragmentet. Texturering och färgsättningssteget returnerar, beroende på om djuptestet uppnåddes, färgsatta fragment som skickas till det slutgiltiga pixeloperationssteget. Pixeloperationer Detta steg gör en rad olika tester på de inkommande fragmenten. Bland annat testas om ett fragment skyms av andra, olika positions- och genomskinlighetstester. Om något av dessa tester fallerar kan fragmentet kastas bort utan att uppdatera en bildpunkt på skärmen. Passerar fragmentet alla tester sker en uppdatering av färgvärdet för en bildpunkt på skärmen Transformationer och koordinatsystem Uppgiften för en grafik-pipeline, som tidigare sagts, är att ta tredimensionell geometri och sedan producera en tvådimensionell bild som kan visas på skärmen. Indata är hörn som bildar polygoner (vanligtvis trianglar) och utdata är en bild som en presumtiv kamera skulle se på den virtuella miljön. För att åstadkomma denna bild måste en rad olika transformationer göras på de inkommande hörnen. Följande avsnitt beskriver kort de viktigaste koordinatsystemen och transformationerna. Objektrymd Objektrymden är det koordinatsystem där 3D-modeller definieras. En 3D-artist som skapar modeller i ett modelleringsverktyg gör det i ett lokalt koordinatsystem som är specifikt för varje modell och som nödvändigtvis inte behöver vara samma för alla modeller. Normalt sett, dock inte alltid, specificeras en modells centrum som (0, 0, 0) och modellens övriga hörn definieras relativt denna position. Alla dessa hörnpositioner är definierade i objektrymden. 7

16 KAPITEL 2. BAKGRUND Världrymd För att placera ut en modell i den tredimensionella världen (Världsrymden) sker en transformation från objektrymden. Denna transformation kan innehålla en skalning, rotation och/eller en translation av modellen. Varje skalning, rotation och translation beskrivs med en 4 4-matris och hela transformationen från objektrymd till världsrymd görs genom att multiplicera dessa matriser. Denna slutgiltiga matrisen, som kallas världsmatris, används alltså för att ta en hörnposition i det lokala koordinatsystem för modellen till en koordinat i världsrymden. Kamerarymd För att transformera världen så att det ser ut som om den betraktas från en specifik punkt, det vill säga kameran, krävs en transformation som för varje position i världen tar den till ett koordinatsystem som är orienterat så att kameran betraktar punkten. Transformation består alltså av en translation som förflyttar kamerans position i världsrymden till origo för kamerarymden och en rotation som roterar kameran på ett lämpligt sätt. Skärmrymd Slutligen behövs en transformation som projicerar det tredimensionella koordinatsystemet för kamerarymden till en tvådimensionell bild som kan visas på en skärm. Detta steg avgör vilka positioner som verkligen syns i den slutgiltiga bilden vilket görs genom att definiera ett så kallat frustum som specificerar synfältet för kameran. Endast de positioner som ligger innanför detta frustum kommer att rastrerats och slutligen resultera i en renderad bild. Tangent-space Figur 2.2. Normalen (N) är vinkelrät mot ytan. Tangent (T) och Binormal (B) är båda vinkelräta mot normalen samt mot varandra. Denna rymd har inget med att transformera koordinater så att de kan visas på en tvådimensionell bild utan tangent-space används oftast till att simulera en ojämn 8

17 2.1. GRAFIK HÅRDVARA yta på ett föremål 1. Tangent-space definieras för varje hörn och består av tre stycken vektorer: normal, tangent och en binormal. Vektorer är alla vinkelräta mot varandra som kan ses i figur 2.2. Genom att använda de tre vektorerna kan en 4 4-matris som transformerar en koordinat i objektrymden till tangent-space konstrueras. Denna transformation kommer visa sig vara viktig för att simulera den suddiga silhuett som bildas för en ljusvolym, vilket presenteras senare i rapporten Texturering För att uppnå så realistiska virtuella miljöer som möjligt spelar färg- och ljussättning av föremål i en miljö stor roll. Homogena material som exempelvis plast kan simuleras på ett effektivt sätt genom att välja en ljussättningsmodell som stämmer överens med plast. För andra ytor som exempelvis sten och trä behövs andra sätt för att simulera materialet. För att rendera dessa material klistras en tvådimensionell bild (texturen) på det tredimensionella föremålet. Procedur kallas för textur-mappning eller texturering. Den tvådimensionella bilden som representerar föremålets yta laddas upp till texturminnet på grafikkortet och när en pixel skall rastreras gör hårdvaran en texturuppslagning i minnet för att bestämma färgen på pixeln. Figur 2.3. Tvådimensionell texturmappning. Texturkoordinaterna (s i, t i) för ett hörn i en triangel (Belägen i objektrymden) används av grafikhårdvaran för att göra en uppslagning i en tvådimensionell texturbild. 1 Bump-mapping används som en metod för att rendera en ojämn yta på ett föremål utan att beskriva ytan med geometri. Detta görs genom en så kallad bump-map textur som ändrar ytnormalen och på detta sätt ljussätter föremålet så att illusionen av en ojämn yta simuleras. 9

18 KAPITEL 2. BAKGRUND För att kunna göra uppslagningen har varje hörn i triangeln i figur 2.3 en uppsättning texturkoordinater (s i, t i ) som definierar hörnets position i texturrymden. Koordinaterna kan antingen anges explicit i exempelvis ett 3D-modelleringsverktyg eller implicit genom att använda hörnets position. Själva mappningen görs genom att multiplicera texturkoordinaten med en 4 4-matris. När en pixel skall renderas görs en interpolation mellan triangelns tre hörn och hårdvaran använder den interpolerade texturkoordinaten för att göra en uppslagning i texturminnet och resultatet bestämmer pixelns slutgiltiga färg. Eventuellt kan resultatet även kombineras med andra tekniker för att fastställa färgen på pixeln. Figur 2.4. Texturmappning av en cylinder. Vänster: Tegelstens-textur och koordinater i texturrymden. Varje koordinat mappas till respektive hörn i cylindern. Mitten: Cylindermodell i ett 3D-modelleringsverktyg. Höger: Samma cylinder med tegel-texturen påklistrad Programmerbarhet i grafikprocessorer Sedan introduktionen av DirectX 8.0 har programmerare getts möjlighet att programmera grafikprocessorn. Denna möjlighet har gett grafikprogrammerare större möjligheter att skapa mer avancerade effekter än som varit möjligt med tidigare grafik-api:er. Skillnaden från den tidigare beskrivna grafikhårdvaran är införandet av programmerbara processorer som har till uppgift att bearbeta hörn och pixlar. Tidigare transformerades hörnen av grafikhårdvaran utan att programmeraren kunna styra processen. I dagens grafikprocessorer kan programmeraren skapa ett litet program, vertex-shader, som ersätter hörntransformationssteget i figur 2.1 (Sid 6). Programmeraren har på detta sätt större kontroll på hur hörnen transformeras och färgsätts. Vidare kan ett program även skapas som exekverar för varje pixel. Indata till detta program är den information som skickats från vertex-shadern och utdata är färgsatta pixlar som uppdaterar en bildpunkt på skärmen. Dessa små pixel-program kallas för pixel-shaders och ersätter texturering -och färgsättningssteget i figur

19 2.1. GRAFIK HÅRDVARA I och med införandet av programmerbar hårdvara kan avancerade belysningmetoder implementeras. Per-pixel belysningsmodeller, Bump-mapping, Fresnel-effekter och renderingen av genomskinliga objekt är inte längre några svårigheter att rendera (Se referens [3] för en förklaring vad dessa effekter är). Som tidigare nämnts är en vertex-shaders huvudsakliga uppgift att ersätta hörntransformationssteget, det vill säga transformera ett hörns position i objektrymden till en position i skärmrymden. Förutom att transformera hörnets position kan färgoch ljussättning göras i en vertex-shader. För att exempelvis på ett enkelt och snabbt sätt rendera dimma kan ett hörns ursprungliga färg ändras beroende på dimmans färg och avståndet mellan hörnet och en presumtiv betraktare. Figur 2.5. Flödet mellan vertex-shader och pixel-shader för en programmerbar grafik-pipeline. Applikationen sänder hörn till en vertex-shader som även har tillgång till variabler som inte ändras ofta (uniforma variabler). Vertex-shadern transformerar hörnen och sänder rastrerade fragment till en pixel-shader som har till uppgift att göra färgberäkningar för varje pixel som skall uppdatera en bildpunkt på skärmen. Pixel-shadern har även tillgång till uniforma varibler. Ett hörns texturkoordinater kan även beräknas procedurellt eller ändras beroende på tid och hastighet. Speciellt är detta användbart vid renderingen av animerade texturer. Några av användningsområdena är animering av moln på ett himlavalv eller simuleringen av rörlig icke-homogen dimma. Se avsnitt för beskrivning av dessa metoder. Utdata från en vertex-shader är information om just det aktuella hörnet. Programmeraren har stor frihet att specificera vilken information som skall skickas vidare till pixel-shadern. I många fall kan det av effektivitetsskäl vara bra att beräkna en del effekter per hörn och sedan skicka vidare informationen till pixel-shadern istället för att göra det för varje pixel. Skälet till detta är att antalet pixlar i en bild i de flesta fall är mycket större än antalet hörn, vilket i slutändan ger en ökad hastighet vid renderingen. En pixel-shader opererar på de fragment som kommer ut från rastreringssteget. Ett pixel-program körs för varje pixel och den information som vertex-shadern returnerade blir indata för pixel-shadern. För att göra en tvådimensionell texturaccess i minnet på grafikkortet används i HLSL (Microsofts språk för att programmera grafikkortet) funktionen tex2d(s,t), där s är en så kallad Sampler och t är 11

20 KAPITEL 2. BAKGRUND texturkoordinaten för aktuell pixel. En sampler är bilden som representerar själva texturen och kan definieras på en mängd olika sätt. Se referenser [3, 12, 13] för mer information om hur dessa samplers specificeras. 2.2 Ljusvolymer I detta avsnitt diskuteras principerna och teorin för att rendera ljusvolymer. Speciellt kommer metoder för att simulera sken runt ljuskällor och ljusvolymer producerade av exempelvis spotlights att diskuteras Grundläggande teori Interaktionen mellan ljus och partiklar är ett av det mest centrala fenomenet i datorgrafik (Hur ljus reflekteras mot en yta på föremål är ett specialfall av hur ljus interagerar med partiklar). Ljus som färdas genom atmosfären utsätts för olika sorters påverkan (Figur 2.6). En partikel i luften kan antingen absorbera ljus eller sprida det i en ny riktning. Vid absorption försvagas ljuset intensitet vilket leder till att den intensitet som når betraktaren minskar. Fenomenet dimma och volymmetriska ljuseffekter är ett resultat av att ett stort antal ljusstrålar sprids fram och tillbaka flertalet gånger tills strålen tillslut når en betraktare. I denna rapport antas dock att spridning endast kan ske en gång, vilket ofta ger en tillräcklig approximation för tillämpningsområdet datorspel. Utöver spridning mot betraktaren och absorption kan även partiklar sprida ljuset i riktning bort från betraktaren och därmed minska den intensitet som upplevs. Figur 2.6. Illustration av hur ljusstrålar interagerar med partiklar. Strålarna färdas i riktningen som indikeras av pilarna. Figur (a) visar strålar som inte påverkas av partiklar i luften. Vid absorption av ljuset (b) försvagas den intensitet som upplevs och vid spridning bort för betraktaren (c) minskar också ljusets styrka. Figur (c) visar spridning av ljuset i riktning mot betraktaren, vilket leder till en ökad intensitet i linje med betraktarriktningen. Bild från [4]. En punktljuskälla sänder ut ljusstrålar i alla riktningar. I figur 2.7 ses två stycken interaktioner med partiklar. Absorption av intensiteten sker för det ljus som sänds ut i riktning mot betraktaren (Figur 2.7a). Den intensitet som når betraktaren försvagas och beror på dimmans densitet och avståndet mellan betraktaren och 12

21 2.2. LJUSVOLYMER ljuskällan. Figur 2.7b illustrerar varför skenet runt en gatlykta uppstår. Ljusstrålar sprids mot partiklarna i luften och når vårat öga från olika riktningar. Varje partikel som orsakar en spridning i riktning mot betraktaren kan ses som en oändligt liten ljuskälla. Intensiteten för det ljus som spridits mot en partikel utsätts också för försvagning precis som den intensitet som sändes ut direkt mot betraktaren. Figur 2.7. Illustrationen visar hur ljus sprids mot partiklar och når vårat öga från olika riktningar och ger upphov till sken runt punktljuskällor. I (a) utsätts ljuset endast för absorption. Betraktaren upplever en ökad ljusintensitet då strålar sprids (b) mot partiklar Spridningsekvationen Även om ljusstrålar endast antas spridas en gång, är problemet att simulera ljusets interaktion med partiklar ett komplext problem. För att beräkna den ljusintensitet som når betraktaren i figur 2.8 måste intensitetsbidragen för alla spridningpunkter betraktas. Eftersom alla punkter mellan betraktaren och föremålet måste betraktas bildas en linjeintegral. En linjeintegral är en integral där funktionen som skall integreras evalueras längs en linje. Komplexiteten ökar också avsevärt om fler ljuskällor skall betraktas och det krävs en linjeintegral per ljuskälla för att simulera spridningen. Om endast en ljuskälla antas, utsätts betraktaren i figur 2.9 för den direktöverförda intensiteten I d och intensiteten I a som uppkommer på grund av spridningen. Den totala intensiteten I uttrycks då [17]. I = I d + I a Där det direktöverförda ljuset I d försvagas då det färdas sträckan D sv. Försvagningen beror på absorption och varierar exponentiellt beroende på den sträcka som ljuset färdats [19]. Utöver absorption avtar också ljuset enligt lagen om ljusets avtagande [20]. Detta ger att den intensitet som når fram till betraktaren uttrycks: I d = I 0 Dsv 2 e βdsv 13

22 KAPITEL 2. BAKGRUND Figur 2.8. Illustrerar komplexiteten i problemet. Intensitetsbidraget för alla spridningspunkter längs linjen AB måste betraktas, vilket leder till en komplicerad integral. Finns det dessutom fler ljuskällor ökar komplexiteten ytterligare. Där I 0 är den ursprungliga intensiteten som ljuskällan sänder ut och β är en konstant som beror på dimmans densitet. Det ljus som tillkommer på grund av en kollision vid punkten P i figur 2.9 utsätts också av försvagning då ljuset färdas sträckan d + x och ges av (Se [15, 17]) β k(α) I0 e βd d 2 e βx Eftersom alla punkter längs linjen mellan det närmsta föremålet och betraktaren bidrar till den totala intensiteten bildas linjeintegralen: I a = Dvp 0 β k(α) I0 e βd d 2 e βx dx (2.1) Figur 2.9. Figur som visar hur ljus sprids en gång och färdas sedan i riktning mot en betraktare. α är den vinkel som uppstår vid en spridningshändelse vid punkten P och γ är vinkeln mellan ljuskällan och betraktarriktningen. D sv är avståndet mellan ljuskälla och betraktare. D vp är avståndet mellan närmsta föremålet i scenen och betraktaren. d är avståndet mellan en spridningspunkt och ljuskällan. x är avståndet mellan en spridningspunkt och betraktaren. Bild från [17] 14

23 2.2. LJUSVOLYMER som alltså beskriver det ljus som tillkommer på grund av spridning längs betraktarriktningen. Funktionen k(α) beror på partikeln som orsakar spridningen och själva spridningsvinkeln. För partiklar som är väldigt små används ofta så kallad Rayleigh spridning och för större partiklar används Mie spridning (För mer information se [5]). Ekvation 2.1 kommer fortsättningsvis benämnas som spridningsekvationen Metoder för att rendera spridningsekvationen En vanlig metod för att evaluera spridningsekvationen är att röra sig längs betraktarlinjen i små steg och addera intensitetsbidraget för varje steg. Dock är denna metod alldeles för långsam för realtidsgrafik. I detta avsnitt betraktas metoder som i realtid kan approximera och rendera effekterna av ljusets interaktion med partiklar i luften. Först behandlas metoder som renderar det sken som uppstår på grund av att en punktformad ljuskälla befinner sig i dimma. I avsnitt avhandlas metoder som bygger på geometri för att approximera en så kallad ljusvolym som uppstår då exempelvis en riktad ljuskälla är belägen i en dimmig miljö. Skenet runt punktformade ljuskällor För att på ett enkelt och effektivt sätt rendera det sken som uppstår runt en ljuskälla under en dimmig dag används i datorspel ofta en metod som benämns billboard [18]. På samma sätt som reklamskyltar utefter en motorväg är vända mot föraren fungerar billboard-tekniken genom att texturera ett plan som sedan orienteras så att den alltid är vänd mot betraktaren (Se figur 2.10). Denna metod används ofta i datorspel för att simulera skenet runt ljuskällor, renderingen av träd, explosioner och rök. Figur Billboard-plan orienterad mot en betraktare. Planet roteras runt planets axel beroende på vektorn V och planets normal. Texturen som mappas på planet föreställer skenet runt gatlyktan. Trots att tekniken är enkel att implementera, fångar metoden det sken som bildas runt ljuskällan på ett imponerande sätt. Det slutgiltiga resultatet beror på kvaliteten på texturen som används och en mer detaljerad textur ger ett mer trovärdigt resultat. Tyvärr lider tekniken av en del problem. Framförallt yttrar sig detta då 15

24 KAPITEL 2. BAKGRUND Figur Billboarden skär gatlyktan och geometrin för planet kan lätt uppfattas. andra föremål skär billboarden och betraktaren befinner sig nära föremålet. Planet som lätt kan ses i figur 2.11 skär geometrin för gatlyktan och resultatet är inte längre trovärdigt. Detta problem uppstår alltså då en billboard placeras i anslutning till annan geometri, som ofta är fallet då skenet runt en ljuskälla skall simuleras. Fördelen med denna metod är att den är väldigt snabb och beror inte på andra föremål i scenen. För att rendera billboarden behöver endast texturering och beräkningar för hur planet skall vara orienterat göras. En metod som inte lider av de artefakter som billboards dras med och ändå simulerar ett upplyst område runt en ljuskällan är en metod utvecklad av ATI Technologies Inc [7]. Precis som för billboards är denna metod inte baserad på en fysisk korrekt simulering av hur ljus sprids och absorberas mot partiklar. Metoden simulerar istället fenomenet genom att beräkna det minsta avståndet mellan ljuskällan och den linje som bildas mellan betraktaren och ett föremål. Figur Illustration av ATIs metod för att simulera skenet runt en ljuskälla. För att bestämma den volymmetriska effekten som en ljuskälla ger upphov till beräknas vektorn U som bildas mellan den punkt (på vektorn V ) som ligger närmast ljuskällan. Det volymmetriska ljuset baseras på vektorn U s längd (Se figur 2.12). Denna vektor kan lätt beräknas i en pixel-shader genom kända matematiska beräkningar och förhållanden. I praktiken är de involverade vektorerna redan kända eftersom ljussättning av föremål oftast görs per pixel och ljuskälla. När väl U har beräknats 16

25 2.2. LJUSVOLYMER används en känd modell av hur ljus avtar beroende på avståndet från ljuskällan för att bestämma den volymmetriska effekten. Fördelen jämfört med billboards är att denna metod inte ger upphov till de problem som uppstår då billboard-planet placeras i anslutning till annan geometri. Anledningen till detta är att ingen geometri är inblandat för att beräkna U. Eftersom denna metod är beroende av bakomliggande föremål för att beräkna vektorn U måste alla beräkningar göras för alla synliga pixlar vilket kan vara ett problem. En grafikmotor innehåller ofta ett flertal vertex- och pixel-shaders som har ansvaret att rendera olika effekter, exempelvis bump-mapping eller reflektion. För att inkludera ATIs metod måste alltså beräkningarna göras för alla pixel-shaders som används, vilket i praktiken kan reducera renderingshastigheten för hela motorn. Figur Exempel på ATIs metod för att rendera skenet runt en ljuskälla. Till vänster används DirectX modell för att beräkna hur ljus avtar beroende på avståndet från centrum och till höger används ATIs modell. Det visuella resultatet för skenet runt ljuskällan är trovärdigt, som figur 2.13 visar. Olika modeller för hur ljuset avtar beroende på sträckan som ljuset färdas ger olika visuella effekter. Exempelvis kan DirectX [10] modell användas som ger ett kraftigt upplyst centrum inuti ljuskällan. ATIs [7] modell ger ett mer dimmigt intryck, utan det kraftigt upplysta centrum. Vilken modell som används är en smaksak och kan lätt anpassas till egna visuella önskemål och krav. Geometribaserade ansatser för att rendera ljusvolymer Då en riktad ljuskälla placeras i en dimmig mörk miljö uppstår ofta en upplyst volym, en så kallad ljusvolym. Denna volym uppkommer på grund av att de riktade ljusstrålarna interagerar med partiklarna i luften. Många metoder [1][2][14] som 17

26 KAPITEL 2. BAKGRUND bygger på en volymbaserad ansatts har föreslagits för att simulera detta fenomen tillräckligt snabbt för att kunna användas i ett datorspel. Figur Spridningsekvationen evalueras med hjälp av samplingsplan som är orienterade så att de är parallella med betraktaren. Idén med dessa metoder är de approximerar spridningsekvationen genom att rendera samplingsplan orienterade så att de är parallella med betraktaren som visas i figur Intensiteten för det ljus som sprids i varje punkt på planet förberäknas och lagras i lookup-tabeller. Dessa tabeller används som texturer och mappas på samplingsplanen för att simulera den intensitet som uppstod på grund av spridningen. Fördelen med dessa metoder är att de drar nytta av hårdvarans accelererade möjligheter för texturering. Däremot beror det spridda ljuset på många faktorer, vilket ger att texturerna blir flerdimensionella och detta leder till att texturen tar upp en stor del av grafikkortets texturminne. Vidare kan artefakter uppstå i den renderade bilden på grund av samplingfel. Dessa artefakter minskas dock i och med införandet av delplan [2] som har till uppgift att sampla de delar av spridningsekvationen som kräver högre samplingsfrekvens. Problemet med att 3D-texturerna kräver en stor del av texturminnet löser Mitchell [14] genom att projicera en tvådimensionell ljustextur (light-map) på samplingsplanen. Denna ljustextur har ingenting med övriga scenen att göra, det vill säga ingen förberäkning av intensiteter för ljuskällan krävs, vilket betyder att texturen med fördel kan skapas av en grafiker. Vidare definieras ett ljusfrustum som har en position, riktning, uppvektor samt två klipplan som begränsar volymen. Ett exempel på detta frustum ses i figur 2.15 där samplingsplanen även har klippts vid kanterna på frustumet för att minska antalet pixlar som måste renderas. För att ytterligare minska antalet pixlar kan även de samplingsplan som befinner sig under världens grundplan klippas bort. Fördelen med att använda sig av ljustexturer för att uppskatta spridningen av ljuset är att olika former på ljusvolymen kan erhållas. Exempelvis kan en stjärnliknande form fås genom att använda sig av en ljustextur som är formad som en stjärna. Mitchell inkluderar även skuggor bakom föremål som eventuellt befinner sig inuti ljusfrustumet. När ljusvolymen skall renderas, projice- 18

27 2.2. LJUSVOLYMER ras en shadow-map 2 på samplingsplanen och ljuskällans djup kan sedan jämföras med shadow-map texturen för att ta reda på om en pixel befinner sig i skugga. Vidare simuleras icke homogen dimma inuti ljusvolymen genom att animera så kallade noise-texturer över ytan på samplingsplanen. Mer om animerade noise-texturer i avsnitt Mitchell s metod ger goda visuella resultat och är tillräckligt snabb för att köra i realtid. Den stora fördelen är möjligheten att skapa olika former och färger för ljusvolymen genom att använda sig av olika ljustexturer. Det är också enkelt att inkludera skuggor inuti frustumet genom kända skugg tekniker. Däremot lider metoden av andra problem. Exempelvis måste grafikkortet ha ett högt fillrate-värde, det vill säga klara av att rendera många pixlar varje sekund. Även skuggeffekterna kan kräva mycket av hårdvaran, speciellt om skuggorna måste vara dynamiska. Zhu et al. [24] föreslår en metod som också använder sig av polygongeometri. Skillnaden är att denna geometri inte består i samplingsplan utan av en faktisk modell som är tänkt att approximera ljusvolymen. Metoden fungerar genom att rendera djupet för bak- respektive framsida av denna geometri. Dessa värden lagras i texturer för att senare beräkna vart betraktarvektorn skär modellen för ljusvolymen. Nästa steg är att rendera hela scenen och i en pixel-shader använda de två texturerna för att ta reda på om spridningsekvationen verkligen behöver evalueras. Zhu et al. evaluerar denna ekvation genom att sampla integralen längs betraktarvektorn, med start och slut där vektorn skär ljusvolymen. 2 Shadow-mapping tekniken fungerar genom att rendera scenen från en ljuskällas synvinkel. Djupet för föremålen i scenen lagras i en textur som sparas i grafikkortets texturminne. Denna textur kallas för en shadow-map Figur Samplingsplan orienterade parallellt med betraktaren. Bortre och främre klipplanen begränsar ljusvolymen. Samplingsplanen är klippta vid kanterna på det frustum som definierar ljusvolymen. 19

28 KAPITEL 2. BAKGRUND 2.3 Dimmiga miljöer Detta avsnitt behandlar teori och metoder för att rendera allmänt dimmiga miljöer där specifika ljuskällor inte interagerar med dimmans partiklar. I datorgrafikens värld är det i många fall viktigt, speciellt för utomhusmiljöer att inkludera de effekter som uppstår på grund av dimma. 3D-miljöer utan dimma kan riskera att upplevas orealistiska i och med att färgerna i scenen blir alldeles för klara och kontrasten mellan föremål blir för skarpa. Föremål som finns i en miljö som innehåller dimma tappar kontrast och konturerna blir otydliga. Effekten blir att miljön uppfattas som dunkel och suddig. Ett exempel på detta fenomen kan ses i figur I den vänstra bilden ses exempelvis bergen i bakgrunden tydligt medans i den högra är bergen helt täckt av dimma. Notera också att färgerna på träden i förgrunden skiljer sig markant för de två bilderna. I avsnitt beskrivs en metod som gör antagandet att dimman har konstant densitet och finns närvarande i hela miljön. Det är alltså samma mängd dimma vart man än befinner sig i världen. Metoden implementeras av OpenGL [16] och DirectX [11] och fungerar i kort genom att blanda föremålens färg med dimmans färg beroende på hur långt bort föremålet befinner sig från betraktaren. I verkligheten består dimma av olika lager som påverkas av vind och turbulens. Detta leder till ett komplext fenomen som den enkla metoden som beskrivs i [16] inte tar hänsyn till. I avsnitt presenteras metoder för att simulera icke homogen dimma i realtid. Figur Vänster: En klar dag. Färgerna för bakgrund och objekt är skarpa. Höger: Under en dimmig dag reduceras sikten och färgerna mattas ut. Bilder från [21] OpenGL dimma OpenGLs metod [16] för att rendera konstant dimma är snabb och enkel att implementera. Längs en linje mellan en betraktare och ett föremål sprids eller absorberas 20

29 2.3. DIMMIGA MILJÖER ljusets intensitet och den mängd intensitet som annars skulle nå fram till betraktaren försvagas. Partiklarnas densitet antas vara konstant och intensiteten för det ljus som färdas genom dimman avtar antingen linjärt eller exponentiellt beroende på sträckan som ljuset färdats. Både absorption och spridning sker då en ljusstråle kolliderar med en partikel. Om endast absorption skulle inträffa skulle avlägsna objekt bli helt svarta. Men eftersom solen sänder ut ljusstrålar som sprids mot partiklar och fortsätter i riktning mot betraktaren ökar den försvagade intensiteten. Båda dessa effekter, absorption och spridningen bestämmer utseendet på dimman. Ljus som har färdats en lång sträcka genom dimma kommer alltså att ha ett stort bidrag av det sprida ljusets intensitet och bakgrunden kommer att bli mörkare. Figur Skärmdumpar på en scen renderad med OpenGL-metoden. Vänster: En scen renderad utan dimma. Höger: Samma scen renderad med dimma. Bilder från [3]. OpenGL implementerar dimma genom att för varje inkommande pixel blanda dimmans färg C dimma med pixelns färg C in baserat på en absorptionsfaktor (f): C ut = fc in + (1 f)c dimma (2.2) Där termen fc in är absorption av den inkommande pixelns färgintensitet och (1 f)c dimma är den färgintensitet som tillkommer på grund av ljus som har spridits i riktning mot betraktaren. Faktorn f beror på dimmans densitet samt avståndet till betraktaren och det är välkänt [15] att intensiteten varierar exponentiellt beroende på avståndet d från betraktaren: f = e d 0 σ(t)dt Om konstant densitet σ för dimman antas, förenklas ekvaktionen: f = e d σ 21

30 KAPITEL 2. BAKGRUND Vilket är den modell som OpenGL använder sig av för att implementera renderingen av dimma. Utöver denna typ av absorption stödjs också linjär och kvadratiskexponentiell försvagning (Se figur 2.18). Se även figur 2.17 för en datorgenererad scen renderad med OpenGLs metod. 100 Linjär e (d*σ)2 e d*σ 0 Figur Grafen visar procenten av den ursprungliga färgen C in för ett föremål som funktion av avståndet mellan föremålet och betraktaren. Vid inget avstånd ändras inte föremålets. Längre avstånd resulterar i att föremålet förlorar större delen av sin ursprungliga färg. Bild från [22] Icke homogen dimma I verkligheten består dimma av olika lager som påverkas av vind och turbulens. Detta leder till ett komplext fenomen som den enkla metoden beskriven i föregående avsnitt inte tar hänsyn till. Figur Vänster: Noise-textur som används för att rendera moln på ett plan. Texturen är sömlös och animeras i två riktningar över ytan på planet som representerar himmelen. Höger: Skärmdump från ATI s implementation av metoden [6]. 22

31 2.3. DIMMIGA MILJÖER För att simulera icke homogena material på ett billigt sätt används ofta så kallde noise-texturer. En sådan textur representerar oregelbundenheten i ett material och kan med fördel användas till att rendera moln och icke homogen dimma. ATI [6] använder exempelvis den tvådimensionella sömlösa texturen i figur 2.19 för att rendera olika molnlager. Idén är att representera molntäcket på himlen med ett plan och sedan animera textureringen för planet. Detta kan åstadkommas genom att texturkoordinaterna för planet modifieras beroende på tid och en förutbestämd hastighet. För varje hörn på planet genereras två stycken texturkoordinater genom att addera en animationsvariabel: NoiseTexCoord1 = TexCoord + Animation.x NoiseTexCoord2 = TexCoord + Animation.y Där NoiseTexCoord1 och NoiseTexCoord2 är de två genererade koordinaterna och TexCoord är den ursprungliga koordinaten. Animation är programmets förlupna tid multiplicerat med en förutbestämd hastighet i två riktingar. Genereringen av noisekoordinaterna kan med fördel göras i en vertex-shader och sedan skickas vidare till pixel-shadern som gör två stycken texturuppslagningar i molntexturen. De två värdena från uppslagningarna interpoleras linjärt för att slutligen blandas samman med färgen från himlens bakgrundsfärg. Denna metod ger en illusion av att två stycken molnlager färdas i x respektive y riktningen. Zdrojewska [23] har utvecklat en algoritm som simulerar icke homogen dimma i realtid. Algoritmen baseras på Perlin-noise och exekveras på grafikkortets hårdvara Figur Endimensionell noise-funktion. Ett slumpmässigt tal mellan 1 och 0 tilldelas för varje punkt på x-axeln. Eftersom dimma består av partiklar med olika densitet som påverkas av vinden upplevs fenomenet slumpmässigt och dimman tar ofta oregelbundna former vid olika tidpunkter. På grund av denna iakttagelse använder Zdrojewska slumpmässiga noise funktioner. En sådan funktion är i huvudsak en funktion som genererar slumpmässiga tal, där indata kan vara ett tal eller flerdimensionella koordinater och utdata är ett slumpmässigt värde baserat på indata. Skickas samma indata två 23

32 KAPITEL 2. BAKGRUND gånger till funktionen skall alltid samma värde returneras. I figur 2.20 ses ett exempel på en endimensionell noise-funktion där ett slumptal mellan 0 och 1 genererats för varje punkt på X-axeln. Genom att interpolera värdena i grafen kan en kontinuerlig funktion defineras som kan ta ett decimaltal som indata (Se figur 2.21) och returnera ett slumpvärde. Idén för att simulera icke homogen dimma är att skicka in en koordinat från den tredimensionella miljön och erhålla dimmans densitet i just denna koordinat Figur Interpolerad noise-funktion som kan ta decimaltal som indata. Amplituden är skillnaden mellan högsta och minsta värdet funktionen kan ta. Våglängden är avståndet mellan två punkter i figuren och frekvensen definieras som 1/våglängden. Eftersom de genererade noise-funktionerna har hög frekvens (Liten våglängd) ändras det genererade värdet för närliggande positioner snabbt vilket inte lämpar sig särskilt bra för dimma eftersom densiteten för partiklarna inte ändras lika snabbt. För att få en jämnare noise-funktion med lägre frekvens tas medelvärdet av den aktuella positionen och omkringliggande positioners värden. Den heldragna kurvan i figur 2.22 är en utjämnad variant av den mer högfrekventa kurvan och den nya funktionens frekvensen har ungefär halverats. De höga värden som uppkommer för vissa positioner har även jämnats ut Figur Den heldragna kurvan illustrerar en utjämnad noise-funktion som konstrueras genom att ta medelvärdet av aktuell position och de omkringliggande positionerna. 24

33 2.3. DIMMIGA MILJÖER Idén med att använda noise för att simulera dimma är att addera noise-funktioner med olika frekvenser och amplituder enligt Perlin s turbulensfunktion. turbulence(x) = N 1 i=0 noise i (x) 2 i (2.3) Där noise i (x) representerar dimmans densitet vid position x. Varje noise-funktion som adderas kallas för en oktav, vilket förklaras med att varje funktion som adderas har dubbel frekvens jämfört med den föregående. Antalet N oktaver som adderas varierar för olika ändamål, men för att rendera en bild på skärmen räcker det med fyra. Detta eftersom det förmodligen inte finns tillräckligt med pixlar för att avbilda de små detaljerna i en väldigt högfrekvent noise-funktion. Bilderna i figur 2.23 representerar de olika oktaverna som texturer i två dimensioner. Figur Tvådimensionella Perlin noise-texturer. Om den sista texturen, noise 3 (x), studeras ses lätt att mer högfrekventa noise-texturer inte behövs på grund av att en skärm ändå inte har tillräcklig hög upplösning för att klara av att visa den. Bilder från [23]. Den metod som Zdrojewska renderar icke homogen dimma enligt följande tre steg: 25

34 KAPITEL 2. BAKGRUND 1. Generera texturerna noise 0 (x), noise 1 (x), noise 2 (x) och noise 3 (x) i ett förberäkningssteg 2. Beräkna faktorn f för den icke homogena dimman 3. Blanda föremålens färg med dimmans färg enligt ekvation 2.2 (Sid 21) I första steg skapas de fyra noise-texturerna som användas för att skapa turbulance funktionen. Texturerna är i gråskala och representerar noise-funktioner som har olika frekvenser. Exempelvis har den första texturen (noise 0 (x)) låg frekvens, vilket kan ses genom att färgerna ändras långsamt. Ökas frekvensen ändras också färgen snabbare och varje textur har den dubbla frekvensen jämfört med den föregående. För att skapa Perlin s turbulensfunktion adderas de skapade texturerna enligt ekvation 2.3 vilket resulterar i texturen som kan ses i figur Figur Perlin s turbulenstextur som fås genom att addera de fyra noisetexturerna i figur 2.23 enligt ekvation 2.3. Från [23]. I det andra steget bestäms faktorn f genom att inkludera turbulensen i beräkningarna och ges då istället av (Jämför avsnitt 2.3.1) f = e (d σ turbulance(x)) I sista steget blandas föremålets ursprungliga färg med dimmans färg enligt ekvation 2.2, dock med det nya värdet för funktionen f. Metoden implementeras av Zdrojewska. Noise-texturerna skapas i ett förberäkningssteg och defineras i tre dimensioner. För att åstadkomma turbulens ändras den ursprungliga texturkoordinaten (ett hörns position) med en animationsvektor baserat på förlupen tid och hastighet: NoiseTexCoords0 = Coord + Animation.x;... NoiseTexCoords3 = Coord + Animation.w; 26

35 2.3. DIMMIGA MILJÖER Dessa koordinater skickas sedan vidare till en pixel-shader som beräknar Perlins turbulensfunktion enligt ekvation 2.3, där noise i (x) motsvaras av en texturuppslagning för respektive texturkoordinat och noise-oktav. float k0 = tex3d(noisetex0, NoiseTexCoords0);... float k3 = tex3d(noisetex3, NoiseTexCoords3); float Turbulence = (k0 + k1/2.0f + k2/4.0f + k3/8.0f); Där NoiseTex0 till NoiseTex3 motsvarar texturerna i figur Slutligen beräknas som bekant faktorn f för dimman och färgerna blandas enligt ekvation

36

37 Kapitel 3 Arbetet I detta kapitel diskuteras två metoder för att rendera de effekter som uppstår då ljus påverkas av partiklar i luften. Första metoden simulerar det sken som uppstår runt en isotropisk punktljuskälla under en dimmig dag. Ingen geometri är inblandad vilket resulterar i att inga artefakter uppstår då andra förmål i en miljö befinner sig i närheten av skenet som i fallet för billboards. Metoden har utvecklats av Sun et al. och presenteras i referens [17]. För att approximera effekterna som uppstår då ljusstrålar från en riktad ljuskälla interagerar med dimma definieras en konmodell bestående av polygoner. Modellen renderas med hjälp av shaders och effekterna åstadkommes i tre olika steg: Uppskattning av vertikalt- respektive horisontellt ljusavfall samt simulering av icke homogen dimma. Metoden presenteras i avsnitt 3.2 och är framtagen efter samtal med John Isidoro [8] från ATI Technologies Inc. För båda metoderna kommer fördelar och nackdelar beträffande en implementation i en grafikmotor att diskuteras. 3.1 Isotropisk punktljuskälla För att rendera skenet runt en punktljuskälla i dimma beskriver Sun et al. [17] en metod som approximerar fenomenet fysikaliskt korrekt och samtidigt har realtidsprestanda. Som bekant uppstår skenet på grund av att ljus sprids mot partiklar i luften och når betraktaren från olika riktningar. Tillskottet av ljusintensitet vid en kollision beskrivs av spridningsekvationen i avsnitt och består av en linjeintegral längs betraktarriktningen. Sun et al. reducerar denna komplicerade integral till en kombination av analytiska funktioner som beror på miljöns fysiska parametrar och två stycken texturuppslagningar vilket ger att spridningsekvationen inte behöver evalueras numeriskt. Kommer här beskriva kort hur reduceringen gjorts. För en mer utförlig härledning 29

38 KAPITEL 3. ARBETET Figur 3.1. α är den vinkel som uppstår vid en spridningshändelse vid punkten P och γ är vinkeln mellan ljuskällan och betraktarriktningen. D sv är avståndet mellan ljuskälla och betraktare. D vp är avståndet mellan närmsta föremålet i scenen och betraktaren. d är avståndet mellan en spridningspunkt och ljuskällan. x är avståndet mellan en spridningspunkt och betraktaren. Bild från [17] se referens [17]. Se även figur 3.1 för förklaring till de symboler som används i detta avsnitt. För att göra beräkningarna möjliga antas att ljuskällor är isotropiska, det vill säga samma intensitet sändes ut likformigt i alla riktningar. Vidare antas att dimmans densitet är konstant vilket gör det möjligt att reducera komplexiteten för spridningsekvationen och Sun et al. visar att den intensitet som tillkommer på grund av ljusets spridning kan förenklas till: π 4 I a = A arctan T vp Tsv cos γ Tsv sin γ 0 exp ( A γ 1 tan ξ)dξ (3.1) 2 Där T = βd är det optiska djupet för respektive avstånd. Det optiska djupet beror på dimmans spridningskoefficient β och det avstånd D som ljuset färdats. A 0 och A 1 är två funktioner som kan evalueras analytisk och beror på de fysiska egenskaperna för miljön: A 0 = β2 I 0 e T sv cos γ 2πT sv sin γ A 1 = T sv sin γ Fastän ekvation 3.1 ser ut att vara mer komplicerad än det ursprungliga uttrycket för I a är den egentligen i sin enklaste form. Uttrycken för A 0 och A 1 består av enkla analytiska beräkningar som snabbt kan evalueras av grafikhårdvaran eftersom de endast beror på vart betraktaren är belägen (D sv och γ) och vilken spridningskoefficient dimman har (β). Vidare betraktas funktionen A 1 i integranden som en konstant eftersom integralen endast skall lösas med avseende på ξ. För att kunna bryta ut integranden i uttrycket 3.1 definierar Sun et al. en funktion F (u, v) som beskriver de viktigaste egenskaperna för integranden. Det är denna 30

39 3.1. ISOTROPISK PUNKTLJUSKÄLLA Figur D-graf för funktionen F (u, v). Eftersom grafen inte har något konstigt beteende kan den lagras som en 2D-textur. Figur från [17]. definition som gör att det beräkningskrävande uttrycket för spridningen av ljus mot partiklar kan approximeras med två stycken texturuppslagningar. F (u, v) = v 0 exp ( u tan ξ)dξ Denna funktion har heller inget enkelt analytiskt uttryck som snabbt kan evalueras. Däremot är det en tvådimensionell funktion som inte har något konstigt beteende och därför kan lagras som en 2D-textur. Funktion är helt oberoende av de fysiska egenskaperna av problemet och behöver således endast beräknas en gång. Ekvationen 3.1 kan nu skrivas om till (Eftersom F (u, v) är primitiv funktion till exp ( u tan ξ) på intervallet [0, v]): ( I a = A 0 F (A 1, π arctant vp T sv cosγ ) F (A 1, γ ) T sv sinγ 2 ) (3.2) Där F (A 1, ) motsvarar en texturuppslagning i den förberäknade 2D-texturen. A 0, A 1 och övriga uttryck måste alltså beräknas för varje pixel i en pixel-shader Implementation Metoden har implementerats i DirectX och HLSL på ett NVidia GeForce 7800 GT gratfikkort. En pixel-shader har ansvaret att beräkna de fysiska parametrarna: D sv, D vp och γ som krävs för evaluera ekvation 3.2. Detta är enkla uttryck som grafikhårdvaran snabbt kan beräkna för varje pixel i scenen. Därefter beräknas A 0, A 1 och de två texturkoordinaterna som används till att göra uppslagningen i texturen. Slutligen bestäms intensiteten I a genom att använda ekvation 3.2. Den tvådimensionella texturen för funktionen F (u, v) förberäknas en gång och noggrannheten i metoden beror på vilken upplösning texturen har. Sun et al. visar att en 31

40 KAPITEL 3. ARBETET Figur 3.3. Funktionen F (u, v) som en tvådimensionell textur. Värdena för funktionen lagras med flyttalsprecision i den röda kanalen, därav den röda färgen i texturen textur för F (u, v) ger ett totalt fel på mindre än 2%, vilket är mer än tillräckligt för att erhålla ett gott visuellt resultat vid renderingen. Implementation skapar texturen i ett förberäkningssteg med hjälp av Sun et al. förberäknade 2D-tabell för funktionen F (u, v). 2D-tabellen lagras i den röda kanalen på en flyttals-textur. DirectX [9] ger möjligheten att specificera olika format som beskriver hur varje texel-värde i texturen skall lagras och i detta fall användes formatet D3DFMT_R16F för att skapa texturen i figur Begränsningar i metoden Ett problem med denna metod då det gäller att implementera den i ett datorspel är att beräkningarna för I a måste göras för alla pixlar som passerar till den pixelshader som har ansvar att rendera hela miljön. Metoden är beroende av de bakomliggande föremålen för att kunna bestämma hur mycket ljus som sprids i riktning mot betraktaren. Finns det dessutom fler ljuskällor ökar som bekant komplexiteten ytterligare. En grafikmotor i ett datorspel har ofta många shaders vars uppgifter varierar, exempelvis kan en shader rendera bump-mapping och en annan rendera reflektion för något material i miljön. För att implementera Suns metod är man då tvungen att inkludera beräkningarna för I a i alla shaders. Även fast metoden i sig är snabb kan detta resultera i resurskrävande beräkningar som tar för mycket kraft från de övriga effekterna. 3.2 Volym från en riktad ljuskälla För att kunna inkludera effekter i datorspel som uppstår på grund av riktade ljuskällor som ger upphov till en ljusvolym liknande den i figur 3.4 krävs en effektiv algoritm som inte tar för mycket processorkraft från den övriga renderingen. Istället för att simulera en beräkningskrävande modell av hur ljus sprids och absorberas approximeras effekten genom att definiera en geometrisk konmodell bestående 32

41 3.2. VOLYM FRÅN EN RIKTAD LJUSKÄLLA Figur 3.4. Exempel på upplysta ljusvolymer. Observera suddigheten vid ljusvolymernas silhuetter. I de två vänstra bilderna kan även olika skikt av dimma (och rök) ses. I bilden längst till höger ses också att ljuset avtar i rikting ut från ljuskällan. av polygoner och sedan rendera den i tre olika steg. Första steget uppskattar hur ljusintensiteten avtar från toppen till botten av konenen. Det andra steget renderar den suddiga kant som uppkommer för riktade ljuskällor och slutligen simuleras de olika skikt som uppstår då dimma färdas genom luften. Stegen renderas med hjälp av vertex och pixel-shaders och har implementerats med hjälp av HLSL och DirectX Implementation Metoden approximerar ljusets spridning och approximation på två sätt. Det vertikala ljuset som utsändes från ljuskällan beräknas genom att definiera y-texturkoordinaten på konen att gå från [0... 1] med värdet 0 högst upp på konen och 1 längst ner. Eftersom texturkoordinaterna interpoleras då de skickas mellan vertex-shadern och pixel-shadern kan detta värde användas för att uppskatta hur ljuset avtar beroende på avståndet från toppen av konen, där själva ljuskällan antas vara belägen. En bra approximation som ger en gott visuellt resultat för hur mycket ljus som når en specifik punkt på konen är att använda det interpolerade värdet för y-komponenten i kvadrat. Så det vertikala ljusbidraget uttrycks: I v = T 2 y Där T y är y-värdet för texturkoordinaten som alltså löper mellan 0 och 1 med start vid konens topp och I v representerar ljuset som når en viss punkt på konen. Vid konens topp evalueras exempelvis I v till 0, vilket betyder att inget ljus har absorberats eller spridits. Alternativt kan det vertikala ljuset också beskrivas med hjälp av en endimensionell textur. Tanken är att göra en uppslagning i denna textur med y-texturkoordinaten 33

42 KAPITEL 3. ARBETET Figur 3.5. Endimensionell textur för att uppskatta hur ljuset avtar vertikalt längs ljuskonen. Svart färg representeras av att allt ljus har spridits eller absorberats och vit färg ger således att inget ljus har avtagit. och på detta sätt uppskatta hur ljuset avtar med avståndet från toppen av konen. Själva texturen är endast en gradient och kan med fördel läggas i en kanal i texturen. Fördelen med detta alternativ är att artister och modellerare som skapar all geometri i ett datorspel inte behöver tänka på att sätta tetxurkoordinater på det speciella sätt som är beskrivet ovan utan behöver endast göra en cylinder-mapping av konen och sedan använda den endimensionella gradient-texturen för att uppskatta hur ljuset avtar vertikalt. Figur 3.6. Illustration av de problem som uppstår då enbart normal och betraktarvektorn jämförs. Vänster: Betraktaren befinner sig direkt framför konen och ger ett godkänt visuellt resultat. Höger: betraktaren är belägen snett under konen och ytan börjar bli osynlig. Silhuetten för en upplyst volym tenderar i de flesta fall att bli suddiga. Detta beror på att intensiteten inte är konstant över hela den upplysta volymen och avståndet som ljuset färdas genom dimman. Ljus som färdas genom dimma har större sannolikhet att interagera med partiklar om sträckan är större. För att simulera denna suddighet vid kanterna på konen används en teknik som är en variant på en känd metod [3] som finner de pixlar som ligger på konens silhuett. Dessa pixlar hittas genom att jämföra vinkeln mellan normalen (N) vid en punkt på ytan och den vektor som bildas mellan betraktaren och punkten (V ). Skalärprodukten N V ger ett mått på hur mycket av ytan som betraktaren kan se. En punkt är synlig om N V är positiv och ej synlig om den är negativ. För punkter på eller nära silhuetten ger skalärprodukten ett värde nära 0 och representerar övergången från ej synlig till synlig ljusvolym. Metoden ger ett bra resultat om betraktaren befinner sig direkt 34

43 3.2. VOLYM FRÅN EN RIKTAD LJUSKÄLLA framför konen. Dock uppstår problem om betraktaren är belägen snett under konen eftersom ytan då börjar bli osynlig vilket inte simulerar det verkliga fenomenet på ett korrekt sätt. Figur 3.7. Tangent-space för några hörn på ljuskonen. Den röda vektorn är punktens normal som pekar vinkelrät ut från ytan på konen. Grön vektor är binormal för punkten och den blåa vektorn är tangent. Tangenten bildar ringar runt konen. Alla vektorer är vinkelräta mot varandra. För att lösa ovanstående problem används en teknik som transformerar betraktarvektorn till ett koordinatsystem som definieras av en punkts normal, tangent och binormal (Se figur 3.7). Detta koordinatsystem kallas som bekant för tangent-space och i fallet för ljuskonen definieras en punkts normal att peka vinkelrätt ut från ytan medans tangenten bildar ringar runt ytan på konen. Binormalen är den vektor som pekar rakt ner längs ytan på konen och är vinkelrätt mot både normalen och tangenten. Den transformerad betrakarvektorn projiceras sedan ned på planet som definieras av ytpunktens normal och tangent. Slutligen används z-värdet på den projicerade betraktarvektorn för att approximera hur ljuset avtar mot kanterna på konen. Detta gör att de pixlar som befinner sig nära eller på silhuetten har ett z- värdet som ät litet eller 0, medan pixlar som befinner sig direkt framför betraktaren har större z-värde (Se figur 3.8). Figur 3.8. (a): Pixel som befinner sig på konens silhuett har ett Normal-Tangentplan som inte syns och har således z-värde 0. (b): Pixel som befinner sig direkt framför betraktaren får ett större z-värde. Det beräknade z-värdet kan antingen kvadreras eller exponentieras för att bestämma hur genomskinlig varje pixel skall vara. Tangent-space för varje hörn har skapats 35

44 KAPITEL 3. ARBETET då ljuskonen exporterades från ett 3D-modelleringsprogram och för att få texturkoordinaterna rätt har konen en cylinder-mappning (Se figur 2.4 på sidan 10). Dock har y-komponenten för texturkoordinaterna ändrats, så att det går från 0 vid toppen av konen till 1 vid botten. För att ytterligare öka realismen animeras en textur som är tänkt att representera dimma i olika skikt över ytan på konen. Detta ger illusionen av att icke homogen dimma passerar genom den upplysta volymen. Med fördel kan texturens olika färgkanaler (RGB) användas för att undvika den rullning som ibland kan inträffa då en textur animeras över en böjd yta. Exempelvis kan den röda kanalen i texturen användas för att animeras ett lager i x-led. Ett annat lager kan sedan använda den blåa kanalen för att animera lagret i y-led. Vidare är det också möjligt att animera de olika lagren olika fort vilket ökar realismen eftersom betraktaren då har svårare att uppfatta de upprepningarna som uppstår. Slutligen kombineras de tre stegen genom att multiplicera värdena och använda detta för att bestämma hur genomskinlig konen skall vara för en specifik pixel. Det slutgiltiga resultatet tillsammans med illustrationer för respektive steg kan ses i figur Begränsningar i metoden Metoden lider av en både visuella och tekniska begränsningar. Den största tekniska begränsningen är att metoden endast fungerar med en cylindrisk kon. Har den riktade ljuskällan exempelvis en annan form, exempelvis ett lysrör fungerar inte metoden eftersom approximationen för hur ljuset avtar vid kanterna på konen blir felaktig. Figur 3.9. Problem uppstår då ett föremål skär ljuskonen. Konens geometri kan lätt ses på grund av den skarpa kanten. Andra nackdelar som metoden lider av är att själva konen måste vara relativt detaljerad för att undvika att geometrin inte ska se kantig ut. I figur 3.10 delades konen 100 gånger vertikalt. För att minimera texturdistorsion vid interpolation av 36

45 3.2. VOLYM FRÅN EN RIKTAD LJUSKÄLLA texturkoordinaterna över ytan på konen kan det också vara en fördel om konen även delas horisontellt. Det räcker med 3 4 horisontella indelningar för att minimera distorsionen. Detaljrikedomen för konen kan självklart variera beroende på avståndet till betraktaren. Vidare tas inte hänsyn till om objekt skär ljusvolymen. Eftersom metoden använder alpha-kanalen för att bestämma hur genomskinlig en specifik pixel skall vara ger detta att geometrin för volymen lätt kan ses då föremål skär den. Kanten mellan den del av föremålet som inte befinner sig inuti volymen och den som gör det blir skarp, men förmodligen är detta inte ett stort problem i datorspel eftersom konerna oftast är tänkta att placeras en bit ovanför marken där föremål sällan befinner sig. 37

46 KAPITEL 3. ARBETET Figur Illustration av de olika stegen för att rendera ljuskonen. (a) Resultatet efter att det vertikala ljuset har beräknats. (b) Resultatet för beräkningarna vid konens silhuett. (c) Animering av textur över ytan på konen. Texturen animeras i olika riktningar och hastigheter för att simulera olika skikt av dimma. (d) Det slutgiltiga resultatet då ovanstående steg kombinerats. 38

47 Kapitel 4 Resultat och slutsatser Metoden som simulerar skenet runt en punktljuskälla har en del egenskaper som talar emot den då det kommer till att inkludera den i ett datorspel. Som tidigare nämnts behöver beräkningarna evalueras för varje synlig pixel i scenen. I detta avseende är Billboard-metoden att föredra, eftersom en egen shader kan specificeras för att endast rendera skenet. Tyvärr dras denna metod också med problem. Som bekant bildas artefakter då planet som utgör själv billboarden är placerad nära ett föremål, i detta fall geometrin för exempelvis en lyktstolpe. Planets polygoner kan lätt uppfattas och resultatet är inte trovärdigt. I figur 2.11 från avsnittet som behandlar billboards (Avsnitt 2.2.3) kan ett exempel på detta problem ses. Eftersom Sun s [17] metod körs för varje pixel uppstår inte dessa problem och ljuskällor kan med fördel placeras i anslutning till andra föremål. Exempelvis kan en ljuskälla placeras nära eller i anslutning till en vägg utan problem. Se figur 4.1 för skillnaden mellan metoderna för en ljuskälla som placerats intill en vägg. Figur 4.1. Illustrerar skillnaden mellan Sun s metod (a) för att approximera skenet och en enkel billboard-effekt (b) då en ljuskälla placeras intill en vägg. Den vanligaste metoden för att simulera skenet är helt klart billboard-metoden. 39

48 KAPITEL 4. RESULTAT OCH SLUTSATSER Figur 4.2. Storleken på skenet runt gatlyktan bestäms även av avståndet till betraktaren, precis som spridningsekvationen beskriver. Detta på grund av att metoden är prestandamässigt snabbare än andra metoder. Att inkludera billboards i en grafikmotor är som bekant väldigt enkelt. Endast en shader som texturerar och roterar planet krävs. Vidare behöver inte miljöns övriga föremål betraktas vilket ofta är attraktivt då det kommer till att välja metod. Anledningen till att dagens datorspel överhängande använder billboards är att andra delar av spelet kräver mycket kraft från hårdvaran och skenet runt ljuskällor sätts i andra hand, vilket är förståeligt eftersom exempelvis AI och andra delar är betydligt viktigare. Om resultatet, med tanke på det artefakter som uppstår då planet skär ett föremål, är acceptabelt är billboard-metoden klart att föredra. För mer realistiska renderingar och simuleringar, anser jag, att antingen Suns eller ATIs (Se avsnitt 2.2.3) metod för att rendera sken runt ljuskällor är att fördra. Det visuella resultatet är klart högre för dessa metoder i och med att de föremål som befinner sig bakom ljuskällan måste betraktas. Figur 4.3. Dimmans spridningskoefficient β bestämmer hur stort skenet blir runt ljuskällan. Från vänster till höger varierar β med värdena 0.01, 0.04 och I figur 4.2 illustreras skillnaden mellan ljuskällor på olika avstånd. Precis som sprid- 40

49 ningsekvationen beskriver avtar ljusets intensitet olika mycket beroende på avståndet mellan betraktaren och ljuskällan. Detta leder till att en ljuskälla som är belägen långt borta från en betraktare inte ger lika stort sken som en ljuskälla som befinner sig nära. Även dimmans spridningskoefficient β bestämmer hur stort skenet blir: större värden på β ger större sken runt ljuskällan (Se figur 4.3). Detta ger en god möjlighet att variera hur ljuskällor uppför sig beroende på hur tät dimman är vid en specifik tidpunkt på dygnet. Figur 4.4. Några exempel på hur ljuskonen kan användas i en miljö. Bilder hämtade från implementationen i Avalanche Studios grafikmotor. Eftersom varken vertex eller pixel-shadern innehåller komplicerade beräkningar är metoden för att rendera ljusvolymen effektiv. Den enda faktor som drar ned renderingshastigheten är det faktum att modellen kräver en stor detaljrikedom för att inte få ett platt utseende. Det visuella resultatet ger ett realistiskt och trovärdigt intryck då inga andra föremål passerar igenom själva volymen. Detta ger som tidigare diskuterats een skarp kant mellan volymen och föremålet vilket resulterar i att konens geometri lätt kan uppfattas (Se figur 3.9). Även fast beräkningarna för hur ljuset avtar vid kanterna på ljusvolymen inte baseras på en korrekt fysikaliskt modell, ger metoden ett realistiskt resultat för detta fenomen. Animeringen av noise-texturer över ytan på ljuskonen ger en trovärdig illusion av att dimma passerar genom volymen. 41

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering Spelutveckling 3d-grafik och modellering Grunder för 3d-grafik Blender Animering Grunderna för 3d-grafik Positionering, transformationer Projektion, kameran Objekt i en 3d-värld Ljusmodeller för 3d-grafik

Läs mer

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap PROCEDUELL TERRÄNG Proceduella metoder för bilder (TNM084) Jimmy Liikala (jimli570@student.liu.se) Institutionen för teknik och naturvetenskap Sammanfattning Rapporten beskriver hur en proceduell terräng

Läs mer

Grafiska pipelinens funktion

Grafiska pipelinens funktion LUNDS TEKNISKA HÖGSKOLA CAMPUS HELSINGBORG Grafiska pipelinens funktion Ludvig von Sydow EDT62, HT17 Datorarkitekturer med Operativsystem Sammanfattning Denna rapport syftar till att beskriva hur en graphics

Läs mer

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Procedurell grottgenerator och eld i GLSL. Marcus Widegren Procedurell grottgenerator och eld i GLSL Marcus Widegren 14 januari 2012 Innehåll 2 Sammanfattning Jag har gjort en enkel procedurell grottgenerator i GLSL och C++. För belysning används en fackla, som

Läs mer

Procedurell Terräng med LOD i OpenGL 4

Procedurell Terräng med LOD i OpenGL 4 Procedurell Terräng med LOD i OpenGL 4 TNM084: Proceduella metoder för bilder ITN, Linköpings universitet Lucas Correia, lucco863@student.liu.se Bakgrund Terräng är ett tydligt exempel där procedurella

Läs mer

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort? Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se

Läs mer

Procedurell 3D-eld på grafikkortet

Procedurell 3D-eld på grafikkortet Procedurell 3D-eld på grafikkortet TNM084 Procedurella metoder för bilder Anders Hedblom, andhe893@student.liu.se 2012-04-04 1. Bakgrund 1.1. Procedurella metoder Procedurella metoder har ett stort användningsområde

Läs mer

Procedurell renderingsmotor i Javascript och HTML5

Procedurell renderingsmotor i Javascript och HTML5 Procedurell renderingsmotor i Javascript och HTML5 TNM084 Procedurella Metoder för bilder Gustav Strömberg - gusst250@student.liu.se http://gustavstromberg.se/sandbox/html5/shademe/texture_stop_final.html

Läs mer

Grafiska pipelinen. Edvin Fischer

Grafiska pipelinen. Edvin Fischer Grafiska pipelinen Edvin Fischer Sammanfattning Rapporten behandlar den grafiska pipelinen och dess steg, vilka stegen är och hur de funkar. Inledning Rapporten har till syfte att beskriva hur den grafiska

Läs mer

Parabeln och vad man kan ha den till

Parabeln och vad man kan ha den till Parabeln och vad man kan ha den till Anders Källén MatematikCentrum LTH anderskallen@gmail.com Sammanfattning I det här dokumentet diskuterar vi vad parabeln är för geometrisk konstruktion och varför den

Läs mer

Rastrering och displayalgoritmer. Gustav Taxén

Rastrering och displayalgoritmer. Gustav Taxén Rastrering och displayalgoritmer Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Klippning Man vill undvika att rastrera de primitiver som hamnar utanför fönstret. Man

Läs mer

Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte

Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika typer av fjädrar med olika parametrar.

Läs mer

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid TNM022 Proceduella Bilder Rendering av proceduell päls i realtid Jonas Nilsson jonni957@student.liu.se Sammanfattning Jag har undersökt och experimenterat med möjligheterna att rendera päls i realtid med

Läs mer

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering Shaders Renderingssystem Applikation Geometri Rastrering Martin Fitger d00-mfi@d.kth.se VT 2008, DH2323 / DH2640 / NA8740 Renderingssystem Renderingssystem Applikation Per-vertex operationer Geometri Rastrering

Läs mer

Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR)

Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR) Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR) Grupp: MT2 och NO2MT Datum: Fredagen den 23 april 2004 Tid: 14.00-18.00 Hjälpmedel: inga Ansvarig lärare: Stefan

Läs mer

Parabeln och vad man kan ha den till

Parabeln och vad man kan ha den till Parabeln och vad man kan ha den till Anders Källén MatematikCentrum LTH anderskallen@gmail.com Sammanfattning I den här artikeln diskuterar vi vad parabeln är för geometrisk konstruktion och varför den

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet (fylls i av ansvarig) Datum för tentamen Sal Tid Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter i tentamen Antal sidor på

Läs mer

Bézierkurvor och parametriska objektrepresentationer

Bézierkurvor och parametriska objektrepresentationer Sidan 1 av 11 Inledning Detta är en kort sammanfattning av teorimaterialet som år 2004 ingår i examinationen i kursen TNM077 3D-grafik och animering som ges vid Linköpings tekniska universitet på Campus

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Laboration 1. Linjär Algebra och Avbildningar Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion I denna övning skall

Läs mer

Koordinatsystem och Navigation

Koordinatsystem och Navigation 2D vs 3D VS Skillnaden mellan 2D och 3D må verka ganska självklar men ibland kan det uppkomma missförstånd kring detta. Vi refererar oftast på 3D som datorgenererad grafik (CG=Computer Graphics) vilket

Läs mer

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel Tentamen TNM061, 3D-grafik och animering för MT2 Tisdag 3/6 2014 kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43 Inga hjälpmedel Tentamen innehåller 8 uppgifter, vilka tillsammans kan ge maximalt 50 poäng.

Läs mer

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR) Omtentamen TNM077 3D-datorgrafik och animering (samt även TNM008 3D-datorgrafik och VR) 2005-06-10 kl 8-12 Inga hjälpmedel Denna tentamen innehåller 7 uppgifter som tillsammans kan ge maximalt 40 poäng.

Läs mer

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen Procedurella Grottor TNM084 Alexander Steen alest849@student.liu.se 13-01-12 Sammanfattning Denna rapport beskriver en metod för att skapa procedurella grottor. Grottorna består utav sammanlänkade rum

Läs mer

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel Tentamen TNM061, 3D-grafik och animering för MT2 Onsdag 20/8 2014 kl 14-18 SP71 Inga hjälpmedel Tentamen innehåller 7 uppgifter, vilka tillsammans kan ge maximalt 50 poäng. För betyg G (registreras som

Läs mer

Shaders. Gustav Taxén

Shaders. Gustav Taxén Shaders Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Shading l 2 P l 1 n v Givet en punkt P på en yta, en normal n, riktningsvektorer l i mot ljuskällor och en kamerariktning

Läs mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab TAIU07 Matematiska beräkningar med Matlab Laboration 3. Linjär algebra Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion 2 En Komet Kometer rör sig enligt ellipsformade

Läs mer

Vi har väl alla stått på en matta på golvet och sedan hastigt försökt förflytta

Vi har väl alla stått på en matta på golvet och sedan hastigt försökt förflytta Niclas Larson Myra på villovägar Att modellera praktiska sammanhang i termer av matematik och att kunna använda olika representationer och se samband mellan dessa är grundläggande förmågor som behövs vid

Läs mer

Transformationer i 3D. Gustav Taxén

Transformationer i 3D. Gustav Taxén Transformationer i 3D Gustav Taén gustavt@csc.kth.se 2D64 Grafik och Interaktionsprogrammering VT 27 Bakgrund Ett smidigt sätt att arbeta med 3D-grafik är att tänka sig att man har en virtuell kamera som

Läs mer

Tentamen TNM061 3D-grafik och animering för MT2 och DAV1

Tentamen TNM061 3D-grafik och animering för MT2 och DAV1 Tentamen TNM061 3D-grafik och animering för MT2 och DAV1 Måndag 29/5 2017 kl 8-12 Inga hjälpmedel Tentamen innehåller 6 uppgifter, vilka tillsammans kan ge maximalt 53 poäng. För betyg G (registreras som

Läs mer

Teknik för avancerade datorspel!

Teknik för avancerade datorspel! 1(84) Information Coding / Computer Graphics, ISY, LiTH TSBK 03 Teknik för avancerade datorspel Ingemar Ragnemalm, ISY Fysik Datorgrafik Spelmekanismer AI Animation 1(84) Föreläsning 5 GPU computing GPU

Läs mer

Teknik för avancerade datorspel!

Teknik för avancerade datorspel! 1(83) Information Coding / Computer Graphics, ISY, LiTH TSBK 03 Teknik för avancerade datorspel Ingemar Ragnemalm, ISY Fysik Datorgrafik Spelmekanismer AI Animation 1(83) Föreläsning 5 GPU computing GPU

Läs mer

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 2014. Block 5, översikt

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 2014. Block 5, översikt MATEMATIK GU H4 LLMA6 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 24 I block 5 ingår följande avsnitt i Stewart: Kapitel 2, utom avsnitt 2.4 och 2.6; kapitel 4. Block 5, översikt Första delen av block 5

Läs mer

Vågfysik. Geometrisk optik. Knight Kap 23. Ljus. Newton (~1660): ljus är partiklar ( corpuscles ) ljus (skugga) vs. vattenvågor (diffraktion)

Vågfysik. Geometrisk optik. Knight Kap 23. Ljus. Newton (~1660): ljus är partiklar ( corpuscles ) ljus (skugga) vs. vattenvågor (diffraktion) Vågfysik Geometrisk optik Knight Kap 23 Historiskt Ljus Newton (~1660): ljus är partiklar ( corpuscles ) ljus (skugga) vs. vattenvågor (diffraktion) Hooke, Huyghens (~1660): ljus är ett slags vågor Young

Läs mer

Rumsuppfattning är förmågan att behandla sinnesintryck av former

Rumsuppfattning är förmågan att behandla sinnesintryck av former Güner Ahmet & Thomas Lingefjärd Tredimensionellt tänkande Tredimensionella matematiska representationer är inte särskilt vanliga i skolans matematikkurser, med undantag för kurs 3 5 i gymnasiet. Varför

Läs mer

Final i Wallenbergs Fysikpris

Final i Wallenbergs Fysikpris Final i Wallenbergs Fysikpris 26-27 mars 2010. Teoriprov Lösningsförslag 1. a) Vattens värmekapacitivitet: Isens värmekapacitivitet: Smältvärmet: Kylmaskinen drivs med spänningen och strömmen. Kylmaskinens

Läs mer

Datorgrafik Ray tracing. Mattias Ekström, Västerås,

Datorgrafik Ray tracing. Mattias Ekström, Västerås, Datorgrafik Ray tracing Mattias Ekström, Västerås, 2010-03-05 1 SAMMANFATTNING Ray tracing är en teknik för att skapa bilder digitalt. Den används komersiellt främst inom film- och spelindustrin. Metoden

Läs mer

Texturerade 3D-modeller

Texturerade 3D-modeller Texturerade 3D-modeller från flygbilder och gatubilder Helén Rost Caroline Ivarsson (examensarbete 2014) Bakgrund 3D-modeller används idag allt oftare för att Visualisera Planera Utvärdera Kommunicera

Läs mer

Robotarm och algebra

Robotarm och algebra Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-12-07 Robotarm och algebra I denna laboration skall du lära dig lite mer om möjlighetera att rita ut mer avancerade

Läs mer

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se Datorgrafik i spel 1 Sammanfattning Dator grafik kan delas in i fyra olika områden: information, design, simuleringar och

Läs mer

Grafik raytracing. Mattias Axblom.

Grafik raytracing. Mattias Axblom. Grafik raytracing Mattias Axblom mam11003@student.mdh.se 1 SAMMANFATTNING Raytracing, strålföljning eller strålspårning är en metod för att rendera realistiska bilder, film och i framtiden spel. Grundidén

Läs mer

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling Spelutveckling - Scenegrafer Scenegrafer Optimeringar Culling Scenegraf vad och varför? En hierkisk representation av en 3d-värld Directed acyclic Graph (DAG) Består av noder med med barn/föräldrar Gör

Läs mer

Geometriska transformationer

Geometriska transformationer CTH/GU LABORATION 5 TMV6/MMGD - 7/8 Matematiska vetenskaper Inledning Geometriska transformationer Vi skall se på några geometriska transformationer; rotation, skalning, translation, spegling och projektion.

Läs mer

TBSK 03 Teknik för Advancerade Datorspel

TBSK 03 Teknik för Advancerade Datorspel TBSK 03 Teknik för Advancerade Datorspel Översikt 3D och Stereoskopi Introduktion Bildskärmsteknik Depth Cues Limiteringar Design-riktlinjer Texturkompression Introduktion Algoritmer & Standarder (DXT,

Läs mer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer LUNDS UNIVERSITET Parallell exekvering av Float32 och INT32 operationer Samuel Molin Kursansvarig: Erik Larsson Datum 2018-12-05 Referat Grafikkort utför många liknande instruktioner parallellt då typiska

Läs mer

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R 1 Matematiska Institutionen KTH Lösningar till några övningar på geometri och vektorer inför lappskrivning nummer 2 på kursen Linjär algebra II, SF1604, vt11. 1. En triangel har hörn i punkterna (1, 2,

Läs mer

Realtids-strålföljning med geometriska primitiver på programmerbara grafikprocessorer (HS-IDA-EA )

Realtids-strålföljning med geometriska primitiver på programmerbara grafikprocessorer (HS-IDA-EA ) Realtids-strålföljning med geometriska primitiver på programmerbara grafikprocessorer (HS-IDA-EA-03-114) Peter Mattsson (a00petma@student.his.se) Institutionen för datavetenskap Högskolan i Skövde, Box

Läs mer

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA 5 LINJÄR ALGEBRA 5 Linjär algebra En kul gren av matematiken som inte fått speciellt mycket utrymme i gymnasiet men som har många tillämpningsområden inom t.ex. fysik, logistik, ekonomi, samhällsplanering

Läs mer

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard OpenGL Avalanche Studios Sveriges ledande oberoende spelutvecklare Fokus på egenutvecklade IPn Finns på Söder i Stockholm ~6 anställda Just Cause för PS2, PC, XBox, och XBox 36 släpptes 26 Gustav Taxén

Läs mer

Gel esimulering 22 mars 2008

Gel esimulering 22 mars 2008 Gelésimulering 22 mars 2008 2 Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika

Läs mer

OPTIK läran om ljuset

OPTIK läran om ljuset OPTIK läran om ljuset Vad är ljus Ljuset är en form av energi Ljus är elektromagnetisk strålning som färdas med en hastighet av 300 000 km/s. Ljuset kan ta sig igenom vakuum som är ett utrymme som inte

Läs mer

Poincarés modell för den hyperboliska geometrin

Poincarés modell för den hyperboliska geometrin Poincarés modell för den hyperboliska geometrin Niklas Palmberg, matrikelnr 23604 Uppsats för kandidatexamen i naturvetenskaper Matematiska institutionen Åbo Akademi 12.2.2001 Innehåll 1 Presentation av

Läs mer

Skinning and Animation

Skinning and Animation Skinning and Animation Skelett Keyframe animation BSpline Quaternioner Kinematics Animation Blending Skinning Skinning på GPU:n Skelett Hierarkiskt Kan närmast liknas vid en trädstruktur Ben och leder

Läs mer

Om ellipsen och hyperbelns optiska egenskaper

Om ellipsen och hyperbelns optiska egenskaper Om ellipsen och hyperbelns optiska egenskaper Anders Källén MatematikCentrum LTH anderskallen@gmail.com Sammanfattning Ellipser och hyperbler är, liksom parabeln, s.k. kägelsnitt, dvs kurvor som uppkommer

Läs mer

FYSIKUM STOCKHOLMS UNIVERSITET Tentamensskrivning i Vågrörelselära och optik, 10,5 högskolepoäng, FK4009 Tisdagen den 17 juni 2008 kl 9-15

FYSIKUM STOCKHOLMS UNIVERSITET Tentamensskrivning i Vågrörelselära och optik, 10,5 högskolepoäng, FK4009 Tisdagen den 17 juni 2008 kl 9-15 FYSIKUM STOCKHOLMS UNIVERSITET Tentamensskrivning i Vågrörelselära och optik, 1,5 högskolepoäng, FK49 Tisdagen den 17 juni 28 kl 9-15 Hjälpmedel: Handbok (Physics handbook eller motsvarande) och räknare

Läs mer

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort? Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Videominne Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se

Läs mer

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning Karlstads GeoGebrainstitut Institutionen för matematik och datavetenskap Karlstads universitet Mats Brunström Maria Fahlgren GeoGebra ett digitalt verktyg för framtidens matematikundervisning Invigning

Läs mer

Bemästra verktyget TriBall

Bemästra verktyget TriBall Bemästra verktyget TriBall I IRONCAD finns ett patenterat verktyg för 3D-positionering av objekt, kallat TriBall. Hyllad av en del som "Det mest användbara verktyget i CAD-historien". TriBall är otroligt

Läs mer

EXPERIMENTELLT PROBLEM 2 DUBBELBRYTNING HOS GLIMMER

EXPERIMENTELLT PROBLEM 2 DUBBELBRYTNING HOS GLIMMER EXPERIMENTELLT PROBLEM 2 DUBBELBRYTNING HOS GLIMMER I detta experiment ska du mäta graden av dubbelbrytning hos glimmer (en kristall som ofta används i polariserande optiska komponenter). UTRUSTNING Förutom

Läs mer

Realtidsskuggalgoritmer för virtuella 3D-världar på modern grafikhårdvara M A R C U S B E A U S A N G

Realtidsskuggalgoritmer för virtuella 3D-världar på modern grafikhårdvara M A R C U S B E A U S A N G Realtidsskuggalgoritmer för virtuella 3D-världar på modern grafikhårdvara M A R C U S B E A U S A N G Examensarbete Stockholm, Sverige 2006 Realtidsskuggalgoritmer för virtuella 3D-världar på modern grafikhårdvara

Läs mer

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation DGI/SUDOA - 060329 Rendering equation Belysningsmodeller (lokala och globala) Kort om texturer Den historiska utvecklingen 1. Enkla modeller som utvärderades genom att göra enkla bedömningar 2. Mera sofistikerade

Läs mer

Bemästra verktyget TriBall

Bemästra verktyget TriBall Bemästra verktyget TriBall I IRONCAD finns ett patenterat verktyg för 3D-positionering av objekt, kallat TriBall. Hyllad av en del som "Det mest användbara verktyget i CAD-historien" TriBall är otroligt

Läs mer

Designing a Shading System. David Larsson

Designing a Shading System. David Larsson Designing a Shading System David Larsson Överblick Genomgång av rendering och shading Designval Implementationsdetaljer Rendering Omvandla en konceptuell 3d-värld till en bild Geometri Kamera Något saknas?

Läs mer

Modul 1: Komplexa tal och Polynomekvationer

Modul 1: Komplexa tal och Polynomekvationer Modul : Komplexa tal och Polynomekvationer. Skriv på formen a + bi, där a och b är reella, a. (2 + i)( 2i) 2. b. + 2i + 3i 3 4i + 2i 2. Lös ekvationerna a. (2 i)z = 3 + i. b. (2 + i) z = + 3i c. ( 2 +

Läs mer

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning? Repetition, Matematik 2, linjär algebra 10 Lös ekvationssystemet 5 x + 2 y + 2 z = 7 a x y + 3 z = 8 3 x y 3 z = 2 b 11 Ange för alla reella a lösningsmängden till ekvationssystemet 2 x + 3 y z = 3 x 2

Läs mer

Projekt i TNM084, Procedurella bilder

Projekt i TNM084, Procedurella bilder Projekt i TNM084, Procedurella bilder Inledning Kursen TNM084, Procedurella Bilder innehåller ett examinerande projekt. Målet med projektet är att utöka förståelsen för hur man kan producera syntetiska

Läs mer

Repetition + lite av varje. Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Repetition + lite av varje. Ulf Assarsson Department of Computer Engineering Chalmers University of Technology Repetition + lite av varje Ulf Assarsson Department of Computer Engineering Chalmers University of Technology Tävlingen Tävling: 22:a maj 15:00-17:00 i sal EA Anmäl ert lag om ni vill vara med. Skicka

Läs mer

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara Föreläsning 1 Jag hettar Thomas Kragh och detta är kursen: Flervariabelanalys 1MA016/1MA183. E-post: thomas.kragh@math.uu.se Kursplan finns i studentportalens hemsida för denna kurs. Där är två spår: Spår

Läs mer

After Effects Lathund

After Effects Lathund After Effects After Effects Lathund After Effects En komposition är det samma som ett filmklipp i After Effects. En komposition kan vara hela filmen/ animationen eller så använder man sig av flera kompositioner

Läs mer

LABORATION 1 AVBILDNING OCH FÖRSTORING

LABORATION 1 AVBILDNING OCH FÖRSTORING LABORATION 1 AVBILDNING OCH FÖRSTORING Personnummer Namn Laborationen godkänd Datum Labhandledare 1 (6) LABORATION 1: AVBILDNING OCH FÖRSTORING Att läsa före lab: Vad är en bild och hur uppstår den? Se

Läs mer

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt.

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt. Om förstoringsglaset Du kan göra mycket med bara ett förstoringsglas! I många sammanhang i det dagliga livet förekommer linser. Den vanligast förekommande typen är den konvexa linsen, den kallas också

Läs mer

7 Olika faltningkärnor. Omsampling. 2D Sampling.

7 Olika faltningkärnor. Omsampling. 2D Sampling. 7 Olika faltningkärnor. Omsampling. D Sampling. Aktuella ekvationer: Se formelsamlingen. 7.. Faltningskärnors effekt på bilder. Bilden f(, y) ska faltas med olika faltningskärnor, A H, se nedan. f(,y)

Läs mer

Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T

Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T Repetition, Matematik 2 för lärare Ï -2x + y + 2z = 3 1. Ange för alla reella a lösningsmängden till ekvationssystemet Ì ax + 2y + z = 1. Ó x + 3y - z = 4 2. Vad är villkoret på talet a för att ekvationssystemet

Läs mer

Polarisation. Abbas Jafari Q2-A. Personnummer: april Laborationsrapport

Polarisation. Abbas Jafari Q2-A. Personnummer: april Laborationsrapport Polarisation Laborationsrapport Abbas Jafari Q2-A Personnummer: 950102-9392 22 april 2017 1 Innehåll 1 Introduktion 2 2 Teori 2 2.1 Malus lag............................. 3 2.2 Brewstervinklen..........................

Läs mer

Moment 4.2.1, 4.2.2, 4.2.3, Viktiga exempel 4.1, 4.3, 4.4, 4.5, 4.6, 4.13, 4.14 Övningsuppgifter 4.1 a-h, 4.2, 4.3, 4.4, 4.5, 4.

Moment 4.2.1, 4.2.2, 4.2.3, Viktiga exempel 4.1, 4.3, 4.4, 4.5, 4.6, 4.13, 4.14 Övningsuppgifter 4.1 a-h, 4.2, 4.3, 4.4, 4.5, 4. Moment 4.2.1, 4.2.2, 4.2., 4.2.4 Viktiga exempel 4.1, 4., 4.4, 4.5, 4.6, 4.1, 4.14 Övningsuppgifter 4.1 a-h, 4.2, 4., 4.4, 4.5, 4.7 Många av de objekt man arbetar med i matematiken och naturvetenskapen

Läs mer

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL Introduktion till OpenGL Battlezone Atari corp., 1980. Gustav Taxén CID gustavt@nada.kth.se Varför behövs grafikbibliotek? Grafikhårdvara Skillnader i funktionalitet och möjligheter. Skillnader i styrning.

Läs mer

Speciell relativitetsteori inlämningsuppgift 2

Speciell relativitetsteori inlämningsuppgift 2 Speciell relativitetsteori inlämningsuppgift 2 Christian von Schultz 2006 11 29 1 Tre satser Vi definierar en rumslik vektor A som en vektor som har A 2 < 0; en tidslik vektor har A 2 > 0 och en ljuslik

Läs mer

Laboration - Shaders

Laboration - Shaders DH2640/2D2323/DOA, VT 2009 2009-03-06 Laboration - Shaders Martin Fitger, d00-mfi@d.kth.se Version 1.4 Syfte Att erbjuda studenterna möjlighet att få lära sig om olika shaderkoncept och renderingsalgoritmer

Läs mer

Information Coding / Computer Graphics, ISY, LiTH. Bump mapping!

Information Coding / Computer Graphics, ISY, LiTH. Bump mapping! 42(81) Information Coding / Computer Graphics, ISY, LiTH Bump mapping Principerna ingick i grundkursen. Mer detalj, implementation Koordinatsystem Normal mapping Utvidgning till mer avancerade metoder

Läs mer

Den tekniska utvecklingen av hårdvara och mjukvara för realtidsgrafik

Den tekniska utvecklingen av hårdvara och mjukvara för realtidsgrafik Den tekniska utvecklingen av hårdvara och mjukvara för realtidsgrafik Anders Andersson aaa99005@student.mdh.se CD5420 - Vetenskap inom dataområdet, 2002-10-15 1 Sammanfattning Rapporten har en fokusering

Läs mer

Uppgifter. Uppgifter. Uppgift 2. Uppgift 1

Uppgifter. Uppgifter. Uppgift 2. Uppgift 1 Uppgift 1 Uppgift 2 Det första målet är att beräkna vinkeldiametern på ringen, det vill säga ringens apparenta diameter sedd från jorden i bågsekunder. Detta är vinkel a. De relativa positionerna för stjärnorna

Läs mer

Studieanvisning i Optik, Fysik A enligt boken Quanta A

Studieanvisning i Optik, Fysik A enligt boken Quanta A Detta är en något omarbetad version av Studiehandledningen som användes i tryckta kursen på SSVN. Sidhänvisningar hänför sig till Quanta A 2000, ISBN 91-27-60500-0 Där det har varit möjligt har motsvarande

Läs mer

Undersökande arbetssätt i matematik 1 och 2

Undersökande arbetssätt i matematik 1 och 2 Matematik Gymnasieskola Modul: Matematikundervisning med digitala verktyg Del 6: Undersökande arbetssätt med matematisk programvara Undersökande arbetssätt i matematik 1 och 2 I texten Undersökande arbetssätt

Läs mer

Här är ett väldigt bra tidpunkt att spara scenen. Jag har valt att bygga ett litet pyramidtorn.

Här är ett väldigt bra tidpunkt att spara scenen. Jag har valt att bygga ett litet pyramidtorn. Man kan i 3dsmax 2011 som standard välja mellan två olika renderare. Dels den inbyggda och något föråldrade scanline-renderaren samt "mental ray" som är lite mer avancerad och har mer möjligheter men också

Läs mer

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap 729G43 Artificiell intelligens (2016) Maskininlärning 2 Marco Kuhlmann Institutionen för datavetenskap Förra gången: Gradientsökning tangentens lutning i punkt θ steglängdsfaktor Översikt Introduktion

Läs mer

Tentamen TNM077, 3D datorgrafik och animering

Tentamen TNM077, 3D datorgrafik och animering Tentamen TNM077, 3D datorgrafik och animering Grupp: MT2 och NO2MT Datum: Lördagen den 13 mars 2004 Tid: 1400-1800 Hjälpmedel: inga Ansvarig lärare: Stefan Gustavson, ITN, 011-363191 Anvisningar Denna

Läs mer

Institutionen för Fysik 2013-10-17. Polarisation

Institutionen för Fysik 2013-10-17. Polarisation Polarisation Syfte Syftet med denna laboration är att lära sig om ljusets polarisation. Du kommer att se exempel på opolariserat, linjär- och cirkulärpolariserat ljus. Exempel på komponenter som kan ändra

Läs mer

Att beräkna:: Avstånd

Att beräkna:: Avstånd Att beräkna:: Avstånd Mikael Forsberg :: 27 november 205 Innehåll Punkter, linjer och plan, en sammanställning 2. Punkter i två och tre dimensioner....................... 2.2 Räta linjer i två och tre

Läs mer

Fysik (TFYA14) Fö 5 1. Fö 5

Fysik (TFYA14) Fö 5 1. Fö 5 Fysik (TFYA14) Fö 5 1 Fö 5 Kap. 35 Interferens Interferens betyder samverkan och i detta fall samverkan mellan elektromagnetiska vågor. Samverkan bygger (precis som för mekaniska vågor) på superpositionsprincipen

Läs mer

Mer om analytisk geometri

Mer om analytisk geometri 1 Onsdag v 5 Mer om analytisk geometri Determinanter: Då man har en -matris kan man till den associera ett tal determinanten av som också skrivs Determinanter kommer att repeteras och studeras närmare

Läs mer

Översikt. Bildsyntesens huvudmålsättning. Ljusmodeller. Simulerat ljusspektra till datorskärm? Ljusspektra. En introduktion till bildsyntes

Översikt. Bildsyntesens huvudmålsättning. Ljusmodeller. Simulerat ljusspektra till datorskärm? Ljusspektra. En introduktion till bildsyntes Översikt En introduktion till bildsyntes Gustav Taxén Centrum för användarorienterad IT-design gustavt@nada.kth.se Reflektionsmodell Bildsyntes Kameramodell, Tone mapping, Rastrering Bildelement / RGB-värden,

Läs mer

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK. Moment 2: Klonspel Instruktioner för deltagare Idag ska du få lära dig om: Kloner - kopior av samma figur (sprajt) Variabler - ett värde, exempelvis antal poäng Slumptal - slå en tärning för att välja

Läs mer

λ = T 2 g/(2π) 250/6 40 m

λ = T 2 g/(2π) 250/6 40 m Problem. Utbredning av vattenvågor är komplicerad. Vågorna är inte transversella, utan vattnet rör sig i cirklar eller ellipser. Våghastigheten beror bland annat på hur djupt vattnet är. I grunt vatten

Läs mer

1 Den Speciella Relativitetsteorin

1 Den Speciella Relativitetsteorin 1 Den Speciella Relativitetsteorin Den speciella relativitetsteorin är en fysikalisk teori om lades fram av Albert Einstein år 1905. Denna teori beskriver framför allt hur utfallen (dvs resultaten) från

Läs mer

Vektorgeometri för gymnasister

Vektorgeometri för gymnasister Vektorgeometri för gymnasister Per-Anders Svensson http://w3.msi.vxu.se/users/pa/vektorgeometri/gymnasiet.html Institutionen för datavetenskap, fysik och matematik Linnéuniversitetet Vektorer i planet

Läs mer

Ljusets polarisation

Ljusets polarisation Ljusets polarisation Viktor Jonsson och Alexander Forsman 1 Sammanfattning Denna labb går ut på att lära sig om, och använda, ljusets polarisation. Efter utförd labb ska studenten kunna sätta upp en enkel

Läs mer

VISUELLA FÖRHÅLLANDEN

VISUELLA FÖRHÅLLANDEN VISUELLA FÖRHÅLLANDEN Hur man uppfattar ljuset i ett rum kan beskrivas med sju begrepp som kännetecknar de delar av synintrycken som man kan iaktta och beskriva ljusnivå, ljusfördelning, skuggor, bländning,

Läs mer

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A SF64 Algebra och geometri Lösningsförslag till tentamen 533 DEL A Planet H ges av ekvationen 3x y + 5z + a) Bestäm en linje N som är vinkelrät mot H ( p) b) Bestäm en linje L som inte skär planet H ( p)

Läs mer

3. Ljus. 3.1 Det elektromagnetiska spektret

3. Ljus. 3.1 Det elektromagnetiska spektret 3. Ljus 3.1 Det elektromagnetiska spektret Synligt ljus är elektromagnetisk vågrörelse. Det följer samma regler som vi tidigare gått igenom för mekanisk vågrörelse; reflexion, brytning, totalreflexion

Läs mer

Vektorgeometri för gymnasister

Vektorgeometri för gymnasister Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Räta linjens och planets ekvationer I Innehåll

Läs mer

Strömsholmen. Mårten Svensson, marsv602@student.liu.se Peter Zhu, petzu912@student.liu.se Andreas Wetteborn, andwe959@student.liu.

Strömsholmen. Mårten Svensson, marsv602@student.liu.se Peter Zhu, petzu912@student.liu.se Andreas Wetteborn, andwe959@student.liu. Strömsholmen Mårten Svensson, marsv602@student.liu.se Peter Zhu, petzu912@student.liu.se Andreas Wetteborn, andwe959@student.liu.se Sammanfattning Som en del i upprustningen av områdena kring Motala ström

Läs mer