Grafik raytracing. Mattias Axblom.

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

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

Realism och hypermediering

Grafiska pipelinen. Edvin Fischer

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

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

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

Bézierkurvor och parametriska objektrepresentationer

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

Kort introduktion till POV-Ray, del 3

BACHELOR THESIS. Efficient Optimizations Inside the Digital Advertise Production Pipeline. Michal Marcinkowski Mehmet Özdemir

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

Rendera med mental ray

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

Realism och hypermediering

Bildsyntesens mål. Realism. Realism. Realism och hypermediering. Bildsyntes. att. från fotografier.

Bildsyntesens mål. från fotografier. llor reflekteras av ytor. t.ex. simulerad kamerafilm). datorskärm. rm).

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

En jämförande studie mellan Mental Ray och V-Ray

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

Kort introduktion till POV-Ray, del 1

LANDING ZONE IV (v1.0, uppgift 4 av 4) för 3D Animering B 1112

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

VRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg Askim

Grafik. Tidig datorgrafik. Plottern (1950-talet) Datorgrafik idag. Bildelement. En introduktion till bildsyntes. Gustav Taxén

Introduktion till 3dsMax TNM061/TNGD25 Lab 3: Ljussättning och rendering

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

Procedurell renderingsmotor i Javascript och HTML5

EXAMENSARBETE. Tekniker för fotorealistisk rendering. Christoffer Lindvall. Teknologie kandidatexamen Datorgrafik

Fotorealism, animering, SW resurser

Vad skall vi gå igenom under denna period?

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

Färglära. Ljus är en blandning av färger som tillsammans upplevs som vitt. Färg är reflektion av ljus. I ett mörkt rum inga färger.

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

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

Optimering av sampling quality-parametrar för Mental Ray

VRay för SketchUp Camilla Ravenna / André Ravenna Alto Punto 2014 Alto Punto Askims Stationsväg Askim

Introduktion till 3dsMax TNM061/TNGD25 Lab 3: Ljussättning och rendering

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

Din idé Vår verklighet VIRTUELLT

RoomDesigner Manual... 1

EXAMENSARBETE. Tekniker för optimering av modellering och texturering av spelmodeller. Anders Lorentzen. Teknologie kandidatexamen Datorgrafik

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

Grafiska pipelinens funktion

Koordinatsystem och Navigation

Introduktion till 3dsMax TNM061/TNGD25 Lab 3: Ljussättning och rendering

Kamerans sensor. I kameran sitter bildsensorn som består av en rektangulär platta med miljontals små ljuskänsliga halvledare av CCD eller CMOS typ.

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

Strömsholmen. Mårten Svensson, Peter Zhu, Andreas Wetteborn,

The Awakening Short Film

Optik 2018 Laborationsinstruktioner Våglära och optik FAFF30+40

Borttagning av skymda ytor Painter s Algorithm och Z-buffering. MICHAEL HJORTHOLT och ANDREAS PAULSSON

Laboration - Shaders

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

Introduktion till 3dsMax TNM061/TNGD25 Lab 3: Ljussättning och rendering

Visualisering med Rhino/Vray/Photoshop av modell som skapats i Revit. AADA15 Revit Workshop 2017 LTH Ludvig Hofsten

HAND TRACKING MED DJUPKAMERA

Föreläsning 2 (kap , 2.6 i Optics)

Procedurell 3D-eld på grafikkortet

OPTIK läran om ljuset

Kort introduktion till POV-Ray, del 5

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

LJ-Teknik Bildskärpa

Designing a Shading System. David Larsson

Vågrörelselära och optik

Filformat / bildformat

Fotorealistisk 3D Datorgrafik

C-UPPSATS. Revitalizing classic art using real-time game technology

Att skapa och hantera bilder från Pro/E

Så skapas färgbilder i datorn

Optiska ytor Vad händer med ljusstrålarna när de träffar en gränsyta mellan två olika material?

Föreläsning 3: Radiometri och fotometri

Rastrering och displayalgoritmer. Gustav Taxén

Produktionsflöde för rendering av bilder i katalogproduktion

Frågor till filmen Vi lär oss om: Ljus

Att göra spel med Game Maker. Rum. Grundläggande delar. Gamemaker, dagens föreläsning. Programmeringsmodell

Nödrop från Expedition C3: skicka fler tekniker!

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

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

Mälardalens högskola

Ljuskällor. För att vi ska kunna se något måste det finnas en ljuskälla

Kristian Pettersson Feb 2016

Bildskärmar och synergonomi

SÄTT DIG NER, 1. KOLLA PLANERINGEN 2. TITTA I DITT SKRIVHÄFTE.

After Effects Lathund

Optimerad rendering av fluid meshes

Universe Engine Rapport

Ljusets polarisation

3. Ljus. 3.1 Det elektromagnetiska spektret

effektivitet, komfort och enkelhet

MSPEL Föreläsning 5. 3D programmering. Den tredje dimensionen. Den tredje dimensionen

Att måla med ljus - 3. Slutare och Bländare - 4. Balansen mellan bländare och slutartid - 6. Lär känna din kamera - 7. Objektiv - 9.

Effektiva renderingstekniker av subsurface scattering med mental ray

Datorgrafik, kandidat 2018

Kurs: Datorstödd konstruktion fortsättningskurs, V15-3, TM051B. Provmoment: Tentamen 2,5 högskolepoäng. Personnummer:.. (Ifylles av student)

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

Tentamen i Fotonik , kl

Detaljbeskrivning av Player

Utvecklar sin förmåga att urskilja teknik i vardagen och utforska hur enkel teknik fungerar - Naturvetenskap och teknik, Förskola

Mätning av fokallängd hos okänd lins

Transkript:

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 för raytracing algoritmen är tagen från verkligheten där ljusstrålar går från en ljus källa och reflekteras till betraktaren, men istället för att beräkna alla ljusstrålar så utgår raytracing från ljusstrålarna som träffar betraktaren. Raytracing skickar helt enkelt ljusstrålarna(rays) från åskådaren(kameran) mot objektet som kameran tittar på. När en stråle träffar ett objekt så skickas fler strålar ut, strålarna skickas ut för att beräkna ljus mängden för punkten på objektet, objektets reflektion och objektets refraktion om det är transparent. Användningsområden för raytracing inkluderar film och bilder men det användes också förut i spel i form av raycasting som är en enklare form av raytracing vilket producerar platta bilder utan skuggor. Även om raytracing inte används i några spelmotorer nu så kan det göras i framtiden när datorer har blivit tillräckligt snabba. Fördelen med att använda raytracing framför andra renderingsmetoder är att den producerar realistiska bilder, den stora nackdelen med raytracing än så länge är att det tar lång tid att rendera bilder, men med snabbare datorer och mer effektiva algoritmer kan det förändras i framtiden. 2

INNEHÅLLSFÖRTECKNING SAMMANFATTNING... 2 INLEDNING... 4 RAYTRACING... 4 Grunderna... 4 Raycasting... 4 Raytracing... 5 Användningsområden... 7 Spel... 7 Film... 9 Bilder... 9 METOD... 9 SLUTSATSER... 9 REFERENSER... 10 3

INLEDNING Idén med raytracing är att efterlikna vad som händer i verkligheten när fotoner från en ljuskälla träffar ett objekt och fångas upp av en kamera(figur 1), men att beräkna vad som skulle hända med alla fotoner från en ljuskälla där endast en ytterst liten del av fotonerna från ljuskällan träffar kameran skulle vara slöseri med beräkningskraft. Figur 1: Fotoner träffar ett objekt Istället för att beräkna vad som skulle hända med fotonerna som utstrålas från ljuskällan som sen kanske träffar kameran så går man baklänges och utgår från fotonerna som man vet träffar kameran. Det enklaste sättet att göra detta är att använda raycasting. RAYTRACING Grunderna Raycasting Raycasting är den enklaste formen av raytracing, den första raycasting algoritmen beskrevs 1968 av Arthur Appel [Appel68] men själva termen raycasting användes först av Scott Roth när han skulle beskriva en metod för att rendera constructive solid geometry(csg) [Roth82]. CSG är ett sätt att skapa komplexa 3D modeller av enkla former som sfärer och kuber. Ray casting går helt enkelt ut på att en stråle(ray) skjuts ut från kameran för varje pixel man vill rendera på skärmen. När en stråle träffar ett objekt så hämtas färgen för det område på objektet som träffades och returneras till pixeln strålen tillhör(figur 2). Figur 2: Ray casting av ett objekt 4

En bild som endast använder raycasting för att renderas kommer inte att ha några skuggor om inte någon typ av shading eller shadow mapping algoritm används. Shading och shadow mapping är vanliga algoritmer för att skapa skuggor för 3D objekt. För att få en bild med skuggor utan att använda shading eller shadow mapping måste en full raytracing algoritm användas. Raytracing Raytracing är en mer utvecklad form av raycasting där flera strålar skjuts när en stråle från kameran träffar ett objekt, beroende på vilken typ av yta som objektet har kan fler eller färre strålar skjutas från punkten där strålen från kameran träffade. Normalt skjuts det tre typer av strålar ut från punkten reflektionsstrålar, refraktionsstråle(ljusbrytning) och skuggstrålar. För att beräkna reflektionsstrålar tas helt enkelt vinkeln mellan den inkommande strålen och normalen för ytan (vinkel a i figur 3) och sen skjuts reflektionsstrålen från andra sidan av normalen med samma vinkel. Desto mattare yta objektet har desto fler strålar skjuts ut med desto större max vinkel från den sanna reflektions stråle i ett slumpvis mönster för att få den rätta effekten. Om objektet är transparent så skjuts en refraktionsstråle ut in i objektet, vinkeln som strålen skjuts ut i beräknas med Snells lag enligt n! sin α = n! sin β(se figur 3). Figur 3: Refraktion och reflektion i en yta Refraktion och reflektions strålarna funkar på samma sätt som strålarna som skjuts från kameran dvs. när de träffar ett objekt så upprepas hela proceduren igen och det är den här rekursionen som är den största anledningen till att raytracing är så beräkningskrävande. Det går naturligtvis att begränsa rekursions djupet och kolla hur mycket varje rekursion påverkar den slutgiltiga bilden och på så sätt få en kortare renderings tid. Skuggstrålarna är de enda strålarna som inte körs rekursivt eftersom deras enda uppgift är att avgöra om en viss ljuskälla når punkten de kommer ifrån, grund algoritmen för de är enkel, skjut en skuggstråle mot varje ljuskälla och kolla om det finns något objekt i vägen om det finns ett objekt i vägen lägg inte till ljuset från ljuskällan till pixeln. Det blir däremot lite mer komplicerat när transparenta objekt börjar användas med refraktioner eftersom en 5

punkt kan få en högre eller lägre mängd ljus från ljuskällan beroende på hur ljuset passerar igenom objektet. Algoritmen för raytracing med rekursion på det här sättet kommer från Turner Whitted som 1980 skrev om den för att förbättra ljussättningen i raytracing bilder, inspirationen kom från Phong och Blinn skuggning med användandet av specular, ambient och diffuse variabler[whitted80]. Ljusvariablerna specular, ambient och diffuse används för att få en bra nog ljussättning, vilket betyder att det inte blir fysiskt korrekt men det ser tillräckligt bra ut för att lura ögat. Speculat variablen används för att få en highligh av området på objektet som är närmast ljuskällan. Ambient är en grundfärgen för hela objektet och kan ses i skuggan och diffuse är färgen som syns mellan specular och ambient där ljuset träffar objektet. En av skillnaderna på vad han använde då och vad som normalt används för att beskriva raytracing är att han hade projicerings planet bakom fokuspunkten som normalt beskrivs som kameran (se figur 4) vilket inte egentligen har någon effekt på bilden förutom att den blir inverterad i x och y led mot vad som normalt används där fokuspunkten är bakom projicerings planet(se figur 5). Figur 4: Raytracing av ett objekt och en ljuskälla genom fokuspunkt Figur 5: Raytracing av ett objekt och en ljuskälla 6

Ljus och skuggor Att bara använda raytracing kan ibland inte räcka för att få den mest realistiska bilden, ett problem som raytracing är att det kan vara svårt att få till realistiska skuggor med global belysning på ett effektivt sätt. Det går naturligt vis att skjuta flera strålar men det kan ibland vara bättre att kombinera raytracing med andra renderingsmetoder för att få ett bättre eller snabbare resultat. Exempel på metoder som kan förbättra resultatet är radiosity och photon mapping[shirley03]. Photon mapping fungerar ungefär som raytracing men istället för att bara skjuta strålar från kameran så skjuts strålar från både kameran och ljuskällan, där strålarna som skjuts från kameran i det här fallet använder raytracing. Photon mapping kan kräva mer processorkraft för att rendera en realistisk miljö beroende på vad den kombineras med. När det gäller kombination med raytracing används photon mapping för det indirekta ljuset och raytracern renderar resten vilket ger en mycket mer realistisk bild än bara raytracing(figur 6). Figur 6: Raytracing kombinerat med photon mapping Användningsområden Ok så nu vet du grunderna till hur en raytracer fungerar men vad används de till? Spel Idag finns inga kommersiella spelmotorer som använder raytracers för att rendera grafiken i spel, det är helt enkelt för krävande även för dagens grafikkort, men det betyder inte de inte används i spelmotorer för att hjälpa till i vissa situationer där raytracers helt enkelt är bättre än mer konventionella metoder. Killzone (4) Shadow Fall är ett av de få spelen där raytracing används, i spelet används en raytracer med låg upplösning tillsammans med cube- mapping för att få lite bättre ljus reflektioner. Cube- mapping är en vanlig metod för att rendera reflektioner i spel, det görs genom att placera en kamera vid området som ska ha den reflekterande ytan sen placeras en kub över kameran och sen renderas alla sidor av kuben från kamerans vy. Efter det kan reflektionen överföras från kuben till objektet som behövde reflektionen. Nackdelen är att man inte får några sekundära reflektioner med cube- mapping därför kan raytracing kombineras för bättre reflektioner. 7

Det finns dock en motor som inte används i något spel men som använder raytracing som renderings metod nämligen Brigade 3.0 (figur 7), anledning till att Brigade inte används i något spel är som förväntat att det inte finns någonting som kan driva ett spel med motorn i spelbara FPS. Figur 7: Brigade 3.0 spelmotordemo Ray casting brukade däremot vara en populär renderingsmetod för spelmotorer, det hela började med John Carmacks Wolfenstein 3D engine för Wolfenstein 3D (figur 8). Figur 8: Wolfenstein 3D Trots vad titeln skulle kunna antyda är Wolfenstein 3D inte ett riktigt 3D spel raycasting användes istället för att rendera väggar i pseudo 3D och resten är helt enkelt 2D sprites som skalas för att ge intrycket att de är i en 3D värld. Wolfenstein 3D engine användes också i mång andra spel fram tills Carmack utvecklade Id Tech 1. En annan spelmotor som också använde raycasting som renderings metod var Voxel Space utveckalt av Novalogic, motorn använde voxel raster grafik (ett sätt att representera pixlar med en 3D datastruktur) för att rendera stora öppna landskap från height maps(2d lista 8

där värden representerar höjd) igenom att rendera varje element till en kolumn av pixlar för att sedan rita dem med rätt färg från en texture map [LaMothe95], motorns första användning var i Comanche Maximum Overkill (figur 9). Voxel Space kom senare också att användas i Delta Force serien och Armored Fist. Film Figur 9: Comanche Maximum Overkill och Delta Force 2 Raytracing är väldigt vanligt inom film och det mest populära verktyget som används för att rendera filmer är RenderMan som är utvecklat av Pixar. RenderMan har används ända sedan 1984 i Star Trek: The Wrath of Kahn och fram till idag. Verktyget har används i för många filmer för att räkna upp här. Bilder Att rendera stillbilder är det absolut vanligaste användningsområdet för raytracing och det finns för många verktyg för att rendera en bild med raytracing för att räkna upp här. METOD Rapporten är baserat på en blandning av litteratursökning, experiment och min egen kunskap om ämnet. Experiment kommer från min egen raytracer som du kan se en bild från på titelsidan, resultaten från experimenten kommer indirekt in i rapporten i form djupare kunskap om hur en raytracer är uppbyggd och fungerar men det är inte direkt någonting jag skriver om. Litteratursökning och generellt intresse inom området kommer därför mer in i bilden och det är det jag har skrivit rapporten utifrån. SLUTSATSER Raytracing främsta användningsområde är film och stillbilder men om några år kan datorer vara tillräckligt snabba för att rendera miljöer med raytracing i realtid. Tills dess kommer raytracing främst att användas där rendering i realtid inte spelar så stor roll. När realism är mer viktig än renderings tid kan raytracing kombineras med andra renderings algoritmer för att producera mer realistiska bilder. Vilket är raytracings starkaste sida eftersom de 9

flesta andra renderingsmetoder inte producerar lika realistiska bilder. Den stora nackdelen än så länge är dock att raytracing är långsamt och det krävs stora datorkluster för att rendera miljöer med raytracing relativt snabbt. Men det är på väg att förändras med raytracers som Brigade och Octane som är kapabla att rendera miljöer i realtid med datorkluster. Och om några år kan det vara möjligt att rendera miljöer i realtid på vanliga persondatorer allteftersom datorprestanda fortsätter att öka och raytracing algoritmer fortsätter att optimeras. REFERENSER [Appel68] Arthur Apple, Some techniques for shading machine renderings of solids, AFIPS Conference Proceedings: 1968 Spring Joint Computer Conference, pages.37-45, 1968 [LaMothe95] Andre LaMothe, Black Art of 3D Game Programming, ISBN- 10: 1571690042, 1995 [Roth82] Scott D Roth, Ray Casting for Modeling Solids, Computer Graphics and Image Processing, Vol. 18, Issue 2, pages 109-144, 1982 [Shirley03] Peter Shirley, Realistic ray tracing, 2nd edition, ISBN- 10: 1568814615, 2003 [Whitted80] Turner Whitted, An improved illumination model for shaded display, Communications of the ACM, Vol. 23, Issue 6, pages 343-349, 1980 10