Rastrering och displayalgoritmer. Gustav Taxén

Relevanta dokument
Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

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

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

Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund Uppgift 1 Föreläsning 1 Föreläsning 2 föreläsning 3 föreläsning 4

Grafiska pipelinen. Edvin Fischer

Bézierkurvor och parametriska objektrepresentationer

ATT UPPTÄCKA DOLDA OBJEKT I SPEL

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

Algoritmer för gallring av dolda ytor Johannes Staffans Institutionen för informationsbehandling Åbo Akademi, FIN Åbo, Finland e-post:

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

Kurvor och ytor. Gustav Taxén

Transformationer i 3D. Gustav Taxén

Area och volym Punktposition Konvexa höljet. Geometri. Douglas Wikström KTH Stockholm

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

OpenGL AGI HT05. Gustav Taxén

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

Föreläsning 11: Beräkningsgeometri

Procedurell Terräng med LOD i OpenGL 4

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

Modellering. Gustav Taxén

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

Koordinatsystem och Navigation

2D-grafik. Gustav Taxén

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

Algoritmer, datastrukturer och komplexitet

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

Grafik raytracing. Mattias Axblom.

Algoritmer, datastrukturer och komplexitet

Kort introduktion till POV-Ray, del 1

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

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

TBSK 03 Teknik för Advancerade Datorspel

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

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

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

Kort introduktion till POV-Ray, del 5

Några geometriska konstruktioner i R 3

Klippning i 2D: Cohen-Sutherland. Implementation aspects for display of computer graphics

Grafiska pipelinens funktion

Konvexa höljet Laboration 6 GruDat, DD1344

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

Shaders. Gustav Taxén

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Procedurell 3D-eld på grafikkortet

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

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

Platonska kroppar med Matlab

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

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

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

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

Datorspelsgrafik. Gustav Taxén

Extramaterial till Matematik Y

På en dataskärm går det inte att rita

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

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

Bemästra verktyget TriBall

SF2715 Tillämpad kombinatorik, 6hp

OpenGL, Maya och specialeffekter

Inledning. Kapitel Bakgrund. 1.2 Syfte

Bemästra verktyget TriBall

Innehåll. Kamerabaserad interaktion Del 3 3D och AR. Världen genom datorn. Vad är AR? AR vs. VR. Potential

OpenGL-översikt. OpenGL. Lokala koordinatsystem. Transformationer. Hierarkiska modeller. Animation. Transformation Byte av koordinatsystem

Tommy Färnqvist, IDA, Linköpings universitet

Autostereoskopiska skärmar i moderna spel

Magnus Nielsen, IDA, Linköpings universitet

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

Optimering av sampling quality-parametrar för Mental Ray

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

Kravspecifikation Fredrik Berntsson Version 1.3

För att komma igång. Ta skissen från designlabben eller motsvarande och lägg in den i front/side/top fönstret/fönstrena.

OpenGL-översikt. OpenGL. Viktigt att komma ihåg: OpenGL-kommandon. OpenGL är en tillståndsmaskin. Transformationer. Geometrispecifikation

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

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

Grafiska system. Färgblandning. Samspel mellan ytor. Ögats. fysionomi. Ljusenergi. Signalbehandling och aliasing

Kv. Ogräset. Martin Stenmarck,

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

Erbjuder studenterna en möjlighet att lära sig grunderna i polygonmodellering, samt erfarenhet av att använda ett modernt 3D-modelleringsverktyg.

Att bevara historiska bilder. Digitalisera, beskriva, söka, visa, långtidslagra

After Effects Lathund

Procedurell renderingsmotor i Javascript och HTML5

Realism och hypermediering

Innehållsförteckning

Innehållsförteckning

OPTIK läran om ljuset

Hemtentamen 2D1640 Grafik- och interaktionsprogrammering. Jonas Frid

OpenGL, Maya och specialeffekter

Processuell generering av oändliga spelvärldar

Kurvlängd och geometri på en sfärisk yta

Rendera med mental ray

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

Explorativ övning Vektorer

Homogena koordinater och datorgrafik

Information Coding / Computer Graphics, ISY, LiTH

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

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

Användarguide för bildredigering i det webbaserade gratisprogrammet: Hur du klipper in ett objekt i en annan bild

Fotorealistisk 3D Datorgrafik

Transkript:

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 vill också undvika att rastrera delar av primitiver som hamnar utanför fönstret.

Klippning i 2D: Linje mot fönsterf Målet är att så tidigt som möjligt avgöra om en linje ligger helt innanför eller helt utanför fönstret.

Klippning i 2D: Cohen-Sutherland Det vore bra om vi slapp beräkna korsningspunkterna mellan linje och fönsterram där det inte behövs!

Klippning i 2D: Cohen-Sutherland 1001 1000 1010 0001 0101 0000 0010 0100 0110 Dela planet i 9 delar. Tilldela en särskild bytekod till varje del. Kontrollera sedan vilka bytekoder linjens slutpunkter har.

Klippning i 2D: Cohen-Sutherland 1001 1000 1010 0001 0000 0010 Båda har kod 0000: Linjen ligger i fönstret. 0101 0100 0110

Klippning i 2D: Cohen-Sutherland 1001 1000 1010 0001 0000 0010 En har kod 0000, den andra inte. Linjen måste klippas mot fönstret. 0101 0100 0110

Klippning i 2D: Cohen-Sutherland 1001 1000 1010 0001 0000 0010 0101 AND 0100 0000 Linjen syns inte i fönstret. 0101 0100 0110

Klippning i 2D: Cohen-Sutherland 1001 1000 1010 0001 0000 0010 0001 AND 0100 = 0000 Linjen kanske behöver klippas mot fönstret. 0101 0100 0110

Klippning i 2D: Sutherland-Hodgeman Klipp mot fönstrets kanter var och en för sig i steg.

Klippning i 2D: Sutherland-Hodgeman Linjesegment Klipp mot översida Klipp mot vänster sida Klipp mot höger sida Vi kan m.a.o. ha 4 klippningar pågående samtidigt. Klipp mot undersida Klippt linjesegment

Klippning i 2D Fler algoritmer i boken!

Konkava polygoner = problem! Konvex: för två punkter i polygonen gäller att linjen mellan dem ligger helt inuti polygonen. Konkav: alla andra polygoner.

Uppdelening i konvexa polygoner (tesselation)

Klippning i 3D Man vill att klippning ska ske mot en kub, eftersom man då trivialt kan utöka föregående klippalgoritmer till 3D. Det är därför OpenGLs perspektivmatris ser ut som den gör! x x z z

Rastrering Diskretisering av en matematisk linje eller polygon.

Rastrering av linjer: Digital Differential Analyzer (DDA) (x 1, y 1 ) (x 0, y 0 ) Låt linjens lutning vara m = (y 1 y 0 ) / (x 1 x 0 ) och antag att 0 < m <1. Sätt x = x 0 och y = y 0. För varje x = x + 1, låt y = y + m. Avrunda och rita ut pixel. Övriga m löses analogt.

Rastrering av linjer: Bresenham Liknar DDA men utan flyttalsoperationer. Går ut på att, givet att vi står i en pixel, ta reda på om vi ska flytta ett steg till höger eller ett steg upp + ett till höger. Analogt för andra lutningar. http://en.wikipedia.org/wiki/bresenham's_line_algorithm

Rastrering av polygoner Trianglar är alltid konvexa! - Enklare att rastrera! Så dela först alla polygoner i trianglar. Rastrera sedan varje triangel för sig. Det vore smidigt om vi kunde fylla triangeln rad för rad. Vi kan då också enkelt interpolera värden över triangeln.

Rastrering av polygoner Använd DDA eller Bresenham för att hitta de x-värden som triangeln korsar för varje rad. Lagra samtidigt interpolerade värden längs med kanterna. Sortera m.a.p. x-värden.

Rastrering av polygoner För varje rad som påverkas, fyll och interpolera samtidigt värden från vänster till höger.

Rastrering av polygoner Linjär interpolation Perspective-correct Linjär interpolation gör att texturer och ljussättning ser fel ut. Lösningen är att använda nda "rational linear interpolation". Om texturkoordinaterna är 4-dimensionella homogena koordinater kan korrigeringsfaktorn lagras på ett sådant sätt att det sedan räcker med linjär interpolation.

Rastrering av polygoner Komplikation... Om två polygoner delar en kant ska bara den ena fylla i pixelpunkterna! Annars funkar inte t.ex. färgblandning.

Multi-Sample Anti-Aliasing Aliasing (MSAA) Samplingsmönster Beräkna först pixelvärdena för samplingspunkterna......använd sedan 5 värden vid filtreringen! Kräver mer minne i bildbufferten (x2 i det här fallet). Det finns andra varianter av antialiasing också. Ofta är samplingsmönstren olika för texturer och geometri. Normalt tar man fler samplingar av texturer än geometri.

Borttagning av skymda ytor Före... Efter!

Bildrymd vs. objektrymd Bildrymd: Ta bort skymda ytor i rastreringssteget. Objektrymd: Klipp polygonerna så att bara det som kommer att synas rastreras.

Detail culling Rita inte saker som är långt bort! Kombineras ofta med någon form av dimma-effekt. Ultima IX Ascension, Origin Systems Morrowind, Bethesda Softworks

Z-buffring Interpolera och lagra djupvärden för rastrerade trianglar. När en pixel rastreras, kontrollera om dess djupvärde är större än det värde som redan finns i bufferten. I så fall syns inte pixeln.

Z-buffring Fördelar: Effektiv. Funkar oberoende av komplexiteten i det som ritas. Enkel att implementera i hårdvara. Nackdelar: Aliasing! 8 bitar 256 distinkta djupvärden rden. Krävs extra minne på grafikkortet.

Back-face culling Rita inte om vinkeln mellan kamerariktningen och polygonens normal är större än 90. Funkar då modellerna inte är genomskinliga. Tar inte bort alla gömda ytor (förstås).

Painter s algorithm Sortera polygonerna bakifrån och fram. Rastrera dem en och en.

Problem med painter s algorithm Om två polygoner korsar varandra måste vi dela en av dem!

Binary Space Partitioning Trees (BSP-tr träd) b a c Löser sorteringsproblemet för statiska, plana, konvexa polygoner (som dock kan ha hur många hörn som helst).

a b a c 1) Välj V en polygon.

b 1 a b 2 b 1 b 2, c a c 2) Dela rummet i två delar och partitionera.

b 1 a b 2 b 1 b 2, c a c 3) För F r varje delmängd, gör g r om rekursivt.

b 1 a b 2 b 1 c a b 2 c 3) För F r varje delmängd, gör g r om rekursivt.

b 1 a b 2 b 1 c a b 2 c Klart!

Painter s algorithm och BSP-tr träd Kameraposition b 1 3 a 2 1 b 1 c b 2 a b 2 c Kameran är framför a, så vi ska först rita ut allt bakom a, sedan a och sist allt framför a.

Painter s algorithm och BSP-tr träd Kameraposition b 1 b 2 b 1 3 a 2 3 1 c 2 1 a b 2 c Kameran är framför c, så vi ska först rita ut allt bakom c, sedan c och sist allt framför c.

Painter s algorithm och BSP-tr träd Kameraposition b 1 b 2 b 1 3 a 2 3 1 c 2 1 a b 2 c Slutordning: c, b 2, a, b 1.

Val av partitionsplan c a b b b 1 c a a b 2 c Val av partitionsplan kan ha stor betydelse för slutresultatet. Tumregel: Välj det partitionsplan som skapar minst antal polygondelningar.

Overdraw Med painter s s algorithm kommer polygoner långt bak att ritas över av polygoner längre fram. Betyder att ljussättning ttning, texturering, m.m. appliceras i onödan för de flesta polygoner! Detta problem kallas för overdraw overdraw. Så varför används nds BSP-tr träd om man lika gärna kunde använda nda z-buffring för att undvika overdraw?

Kombination av BSP-tr träd d och Z-buffring b 1 a b 2 b 1 c a b 2 c Osynligt delträd Eftersom kamerans frustum inte korsar a:s plan, kan vi strunta i allt som ligger framför a! Använd sedan z-buffring för att undvika overdraw.

Potentially Visible Sets / Portaler Närliggande variant: Dela världen v i celler (kanske m.h.a.. BSP-tr träd). För r varje cell C, ta reda påp vilka andra celler som kan synas från n C. Lagra i en lista. Vid körning, k ta reda påp vilken cell kameran är r i. Rita den cellen. Rita alla celler i PVS:en. http://graphics.lcs.mit.edu/~seth/pubs/pubs.html

Exempel http://www.cs.virginia.edu/%7eluebke/publications/portals.html

Portaler Portaler kan specificeras automatiskt med hjälp av algoritmer eller placeras ut för hand i en 3D-editor.

Portaler Quake II, Id Software

Ray casting Skicka en riktad linje (ray) från fokalpunkten genom varje pixel och ta reda på om/var den korsar alla föremål. Välj den korsning som ligger närmast kameran. Sätt pixelfärgen till färgen på motsvarande föremål.

Ray tracing Reflektion Skuggor (direkt ljus) Ray tracing är en s.k. global belysningsmodell. Blanda inte ihop ray casting (visibilitymetod) och ray tracing (bildsyntesmetod som använder ray casting)!

Bounding volumes Kameran kan se b.v: behandla modellen. Kameran kan delvis se b.v: behandla modellen. Kameran kan inte se b.v: bortse från modellen. Användbart för modeller med begränsad utsträckning i rummet och för saker som flyttas omkring.

Hierarkiska bounding volumes Hierarkier kan också skapas dynamiskt under körning för föremål som flyttas omkring.

Exempel påp olika sorters bounding volumes Sfär Axis-aligned box Oriented box Oriented planes

Quadtrees / Octrees B 0 B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 Variant av BSP-träd som kan vara enklare att hantera. Smidiga för stora, statiska modeller med stor detaljrikedom. Kombineras med Z-buffring på ungefär samma sätt som i BSP-fallet.

Octrees http://www.gametutorials.com/tutorials/opengl/octree.htm

Octrees

Occlusion culling Frustum Öga

Occlusion culling Frustum Occluder Öga http://www.gamasutra.com/features/19991109/moller_haines_01.htm

Occlusion culling Just Cause - Avalanche Studios Ibland kan en hög detaljrikedom i scenen faktiskt vara till hjälp!

Level-of of-detail Just Cause - Avalanche Studios Även om man måste rita många objekt kan man ofta spara resurser genom att använda grövre detaljnivåer långt bort från kameran.

Level-of of-detail

Impostors Ett specialfall av level-of-detail. Rendera ett komplext objekt till en textur och använd den istället. Om objektet är långt från kameran är parallax-effekten liten, så en impostor kan återanvändas för fler frames även om kameran flyttas. Kallas också billboards.

Impostors Billboard Clouds, Xavier D ecoret m.fl. Placerar man texturerna smart kan man approximera föremål på ett sådant sätt att man kan rotera dem också!

Impostors Original Billboard cloud

Impostors Billboard Clouds, Xavier D ecoret m.fl.

Impostors Microsoft Flight Simulator 2004 Moln är ett exempel på objekt som ofta kan ersättas av impostors.

Impostors Microsoft Flight Simulator 2004 I flygsimulatorfallet lönar det sig att arbeta med impostors i två steg: dels som ersättning för 3D-moln, dels för att approximera moln långt från kameran.