Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling



Relevanta dokument
Rastrering och displayalgoritmer. Gustav Taxén

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

ATT UPPTÄCKA DOLDA OBJEKT I SPEL

Träd. Rot. Förgrening. Löv

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Universe Engine Rapport

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Grafiska pipelinen. Edvin Fischer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Tentamen, Algoritmer och datastrukturer

Föreläsning Datastrukturer (DAT037)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Procedurell renderingsmotor i Javascript och HTML5

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Koordinatsystem och Navigation

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Trädstrukturer och grafer

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

Teknik för avancerade datorspel!

Träd Hierarkiska strukturer

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

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

Procedurell Terräng med LOD i OpenGL 4

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Föreläsning 4 Datastrukturer (DAT037)

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

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Föreläsning 9 Innehåll

Föreläsning Datastrukturer (DAT036)

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

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

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

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Configura 9.0 Release notes 18 april 2016

Föreläsning Datastrukturer (DAT036)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer (DAT036)

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Bemästra verktyget TriBall

Bemästra verktyget TriBall

Teknik för avancerade datorspel!

Innehållsförteckning

Föreläsning 9 Datastrukturer (DAT037)

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Föreläsning 3 Datastrukturer (DAT037)

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

UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Föreläsning 9 Innehåll

Söka och undersöka - rum

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

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

Föreläsning 7 Datastrukturer (DAT037)

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

Datastrukturer. föreläsning 10. Maps 1

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

3D-TEKNIKENS GRUNDER JOHAN JÖNSSON

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

TBSK 03 Teknik för Advancerade Datorspel

Visual thinking for Design

Facit Tentamen TDDC (7)

Algoritmer och datastrukturer 2012, fo rela sning 8

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Fokus. Mirjam HY, Hovåsskolan F- 9, Hovås

Kort introduktion till POV-Ray, del 1

Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013

Laboration 1: Figurer i hierarki

Datastrukturer. Föreläsning 5. Maps 1

Gå till nästa bygge. Ibland vill man hoppa till nästa bild i presentationen utan att behöva gå igenom alla byggen på diabilden igen.

Föreläsning Datastrukturer (DAT036)

Föreläsning 3 Datastrukturer (DAT037)

Inledning. Kapitel Bakgrund. 1.2 Syfte

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

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Programmeringsolympiaden 2010 Kvalificering

After Effects Lathund

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Nätkurs Design & konstruktion av användargränssnitt 1MD113 Sid 1 (5) Lektion 11 Användare, uppgifter och krav del

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

Tentamen Datastrukturer, DAT037 (DAT036)

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Programkonstruktion och. Datastrukturer

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Skinning. Ännu fler koordinatsystem att hålla reda på. SUPPLEMENT 2 till "So How Can We Make Them Scream?" 1. Olika metoder för kroppsanimation

Tränarguide del 2. Mattelek.

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Transkript:

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 det möjligt att hantera element i en 3dvärld som objekt på en högre nivå Återanvända, gruppera och generalisera Bygg komplexa objekt genom att sätta ihop enklare Lättare att få en översikt över sitt data Jämfört med tex ren OpenGL Underlättar ett flertal optimeringar Culling, via bounds, är det främsta exemplet

Scenegraf viktiga termer Rotnoden Den unika roten för hela scenen (A) Scenegrafsträd Det träd som utgörs av hela scenegrafen med sitt ursprung i rotnoden (alla noderna i figuren) Sub-tree/del-träd Ett delträd med roten i valfri nod (de skuggade noderna med roten i E) Sibling/syskon-nod Noder som har samma förälder, tex (F,G,H,I) och (D,E,J) Ancestor/förfäder En nod som ligger ovanför en annan i samma del-träd (C är förfäder till H)

Scenegraf viktiga termer Parent/förälder En nod som ligger direkt ovanför i samma del-träd (C är förälder till J) En nod kan ha flera förlädrar pga delning av data (exempel senare) Child/barn En nod direkt under en annan (E är barn till C) Traversal order/traverseringsordning Den ordning i vilken alla noder besöks när trädet traverseras bokstavsordningen i figuren Descendant/ ättling En nod längre ner i ett del-träd (E är ättling till A) Leaf node/lövnod En nod utan några barn, slutet på en kedja från rot till löv, (B,D,F,G,H,I,J) Predecessor/föregångare En nod som besöks före en annan, tex C före D

Lövnoder och traversering Traverseras vanligen med djupet först Transformationer och states samlas ihop från de noder som passeras på vägen Lövnoder innehåller vanligen geometrier Själva målet att definiera vad som skall ritas Ibland lampor och kameror, mer komplicerat När en lövnod nås vet man var och hur den skall ritas ut States kan vara tex material och textur

Återanvändning av data Exempel på delad geometri Motsvarande möjligt för tex material och texturer parent1 root 1. Group *root = new Group 2. Group *parent1 = new Group 3. root->addchild(parent1) transform 4. Geometry *geom = new Cylinder(1,1) 5. Transform *transform = new Transform 6. parent1->addchild(transform) 7. transform->addchild(geom) 8. parent1->addchild(geom) geom

Exempel Lösa geometrier/delar Grupperade med föräldrar Slutlig scen Scengrafen

Mer om states States i en scengraf kan användas för att ange vilka lampor som skall ha effekt Tex förr att begränsa till ett rum ange att ett delträd skall ritas som wireframe eller med flat/smooth shading ange att vissa objekt aldrig skall cullas applicera en shader på en del av scengrafen

Mer optimeringar Culling Med hjälp av bounding volumes Kanske den största vinsten med scengrafer Sortera och organisera En annan huvudpoäng med scengrafer Några viktiga specialare Level of Detail Billboards Skybox

Culling Försök avgöra vad som skall ritas Utan culling ritar man allt, oavsett om det egentligen syns från kamerans position Backface culling Rita inte ut polygoner baksidan av polygoner Frustum culling Portal culling specialfall Bounding volumes är viktigt! Occlusion culling Contribution culling / small feature culling

Bounding volumes Omslutande volym En enklare volym som omsluter ett objekt... eller valfritt del-träd av en scengraf Finns ett flertal olika metoder Två faktorer att väga mot varandra Hur väl sluter volymen om objektet? Hur enkel/snabb är den att räkna med? Syftet är trots allt att optimera! Tre vanliga varianter...

Bounding volumes Bounding sphere omslutande sfär/klot Det enklaste och minst exakta Väldigt enkel att transformera Bounding box omslutande box Finns i två vanliga varianter Axis aligned bounding box (AABB) Oriented bounding box (OBB) AABB är enklast en väldigt vanlig variant Vanligt att det går att kombinera dessa

Frustum culling View frustum kamerans synfält Ta reda på vilka objekt som ligger i detta Vill inte göra detta för varje punkt! Använd bounding volumes Om en omslutande volym ligger utanför behöver vi inte undersöka dess innehåll vidare En scengraf med hiearkier av bounding volumes gör detta smidigt

Portal culling En vidareutveckling av frustum culling Lämplig för inomhusmiljöer med dörrar Varje dörr utgör en frustum för vad man kan se i rummet på andra sidan Testa ett rum i taget och gå vidare med dörrar som är inom synhåll så långt

Occlusion culling Motsatsen till portal culling Vad blockeras av ett hus? Det kan vara mycket som inte behöver ritas! Svårt att optimera i en dynamisk miljö Fortfarande ovanligt

Sortera och organisera Sortering kräver uppdelning av traversering och rendrering Passar väl ihop med culling CullVisitor + RenderList istället för RenderVisitor State-sorting Att byta state när man rendrerar kostar, rita objekt med samma state efter varandra Depth-sorting Behövs för transparenta objekt Ofta har man en kombination av flera render-listor med olika sorteringar

Sortera och organisera Organisation kan underlätta optimering Spatial uppdelning för frustum culling Det tydligaste exemplet Organisera scengrafen så att så stora delar som möjligt kan cullas samtidigt Tre vanliga metoder BSP-trees, binary space partitioning Octrees Bounding volumes hiearkier

Spatial uppdelning BSP, binary space pratitioning Delar upp 3d-rymden hiearkiskt längs med plan Planen beror på var objekten finns Octree, oct-tree Delar upp 3d-rymden i åtta mindre del-boxar Djupet beror av objekten... men inte uppdelningen i övrigt

Level of Detail Varierande detaljnivåer Justera komplexiteten på ett objekt beroende på... avståndet det klart vanligaste... storleken på skärmen bättre men svårare... prestandan hur mycket datorn klarar av Vanligt som en statisk inställning men det finns även implementationer som justerar detta dynamiskt

Billboards Ersätt 3d-objekt med 2d-bilder Klassiskt en bild som vrider sig mot kameran Träd hör till den vanligaste användningen Kan även bestå av flera bilder i olika vinklar Kors-träd Impostors En avancerad dynamisk variant Ett riktigt 3d-objekt rendreras till en bild och ersätts av en billboard som uppdateras vid behov

Skybox Ett enkelt sätt att få en snygg omgivning Man ritar en stor box omkring kameran Se till att den alltid följer med kameran Bilder på himmel och horizont läggs på insidan Rita alltid ut den först, bakom allt annat

Slut?