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

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

OpenGL-översikt. Mer OpenGL. Består-av-hierarki. Hierarkiska modeller. Från hierarki till kod, steg 1. Lokala koordinatsystem

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

OpenGL. grafikbibliotek? Nackdelar med OpenGL. Fördelar med OpenGL. En introduktion till OpenGL. OpenGL. rdvara. Grafikhårdvara.

En introduktion till OpenGL. Gustav Taxén

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

OpenGL AGI HT05. Gustav Taxén

Shaders. Gustav Taxén

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

RTG-formatet Gustav Taxén,

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

OpenGL, Maya och specialeffekter

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

OpenGL, Maya och specialeffekter

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

Texturering - förstoring 2(2)

Rastrering och displayalgoritmer. Gustav Taxén

OpenGL, Maya och specialeffekter

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

Grafiska pipelinen. Edvin Fischer

2D-grafik. Gustav Taxén

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

Transformationer i 3D. Gustav Taxén

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

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

Laboration - Shaders

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

Kurvor och ytor. 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

Introduktion till OpenGL

Procedurell renderingsmotor i Javascript och HTML5

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

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Information Coding / Computer Graphics, ISY, LiTH. Compute shaders!! Framtiden för GPU computing eller sen efterapning av Direct Compute?

Procedurell 3D-eld på grafikkortet

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

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

Realism och hypermediering

Teknik för avancerade datorspel!

Undersökande arbetssätt i matematik 1 och 2

Teknik för avancerade datorspel!

SgLib Simple Graphics Library

Grafik raytracing. Mattias Axblom.

Transformationer, Angel

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

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

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

SNABBGUIDE för Windows Media Encoder (media kodaren) - Sänd live med din webbkamera

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

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

Skinning and Animation

Realism och hypermediering

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

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

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

Information Coding / Computer Graphics, ISY, LiTH

Program Rubrik Beskrivning Åtgärd Datum Version

Bézierkurvor och parametriska objektrepresentationer

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

TANA17 Matematiska beräkningar med Matlab

Enkla datatyper minne

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Lektion 7, del 1, kapitel 15 Filter och Transformationer

Att få inskannad text uppläst med talsyntes

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

Designing a Shading System. David Larsson

Mälardalens högskola Västerås, Maj 2006 Institutionen för Datavetenskap och Elektronik, IDE Student: Alexander Andersson E-post:

Geometry shaders! och Tesselation shaders!

3.0. Tips och Trix Sida 1 av 18

Procedurell Terräng med LOD i OpenGL 4

Övning från förra gången: readword

After Effects Lathund

Systemprogrammering i C på en mobil plattform. Kurskompendium

Vrida detalj samt flytta nollpunkt 1

2 FRÅN VÄRLD TILL SKÄRM

Optisk bänk En Virtuell Applet Laboration

Institutionen för matematik, KTH Mats Boij. Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 20 december, 2000

Bemästra verktyget TriBall

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

OH-BILDER DATORGRAFIK HT 2005

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

Koordinatsystem och Navigation

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.

Grafiska pipelinens funktion

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Geometry shaders! och Tesselation shaders!

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

1 som går genom punkten (1, 3) och är parallell med vektorn.

Programmering av grafisk display

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

Extramaterial till Matematik Y

Grundprogrammen. combine

Metoder för att öka realismen vid animerade 3Dförlopp. Master of Science Thesis MARTIN REBAS

Programmering av grafisk display

Laboration 4: Digitala bilder

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

Simulering och rendering av gräs och vind i realtid

Grafik i DrRacket AV TOMMY KARLSSON

Transkript:

OpenGL OpenGL-översikt Geometri Operationer på hörn DOOM 3 id Software, 2004 (?). Gustav Taxén CID gustavt@nada.kth.se Bilddata Operationer på bildelement Rastrering Texturminne Operationer på fragment Framebuffert (bildbuffert + hjälpbuffertar) Transformationer Lokala koordinatsystem Transformation Transformation Projektion Transformation Byte av koordinatsystem glloadidentity(); gltranslatef(0,0,-3); glrotatef(50,0,,0); gltranslatef(0,0,3); glbegin(gl_triangles); glvertex3f(,0,0); glvertex3f(0,,0); glvertex3f(0,0,); glend(); Animation Hierarkiska modeller Viewporttransformation Uppdateringsmekanism Registrera en idle-callback med glutidlefunc(); Sist i din callback, generera omritningshändelse med glutpostredisplay(); pivotpunkt Parametrar Rendering/ utritning Transformationer baserade på parametrarna OpenGL

Består-av-hierarki Lokala koordinatsystem Skelett Subnodens origo positioneras m.a.p. förälderns koordinatsystem. Arm Överarm Underarm Från hierarki till kod, steg Överarm Skelett Arm Underarm void drawskeleton(void) { drawarm(); void drawarm(void) { drawupperarm(); drawlowerarm(); void drawupperarm(void) { void drawlowerarm(void) { Från hierarki till kod, steg 2 void drawskeleton(void) { glpushmatrix(); positionera armens origo; drawarm(); glpopmatrix(); void drawarm(void) { glpushmatrix(); positionera överarmens origo; drawupperarm(); glpopmatrix(); glpushmatrix(); positionera underarmens origo; drawlowerarm(); glpopmatrix(); Transformation av delträd Demo Ändra rotation här! void drawskeleton(void) { glpushmatrix (); positionera armens origo; drawarm (); glpopmatrix (); 2

Labbtips! Ljussättning: Phongs reflektionsmodell Ambient Matt param 0 = f 0 (t) param = f (t) Kända Speglande Phongmodellen i OpenGL Color = Ambient + + [ MatDiffuse LightDiffuse i (N L i ) + i + MatSpecular LightSpecular i (E H) Shininess ] Ekvationen evalueras tre ggr: R, G, B. Phongmodellen i OpenGL Ljuskälla Ambient RGBA Diffuse RGBA Ambient RGBA Hörnets material Diffuse RGBA Specular RGBA, shininess + Hörn RGBA E H R N L i H= (E + L i ) / E + L i är en approximation av reflektionsvektorn R. Specular RGBA Hörnets normal Ögats position (= världsorigo) Ljussättning av hörn Färg beräknas i varje hörn och interpoleras sedan linjärt över polygonen (Goraud shading). Bra att komma ihåg om ljussättning Då ljussättning är aktivt har aktuell färg ingen effekt. OpenGL stöder minst 8 aktiva ljuskällor. En ljuskälla avger en viss mängd av varje ljustyp. Då ljuskällans position specificras multipliceras den med aktuell modelviewmatris. 3

Demo Back face culling glenable(gl_cull_face); http://www.xmission.com/~nate/opengl.html Back face culling Normalen? 90 o > 90 o Fram/baksida beräknas genom tecknet i a = 0.5 x i y i - x i y i, Kamera 0 i (n - ), i (i + ) mod n, (x i, y i ) fönsterkoordinater för hörn nr i, n = antal hörn i polygonen Denna beräkning visar om hörnen ligger i medsols eller motsols ordning. Konventionen är att motsols är riktat mot kameran. Rastrering Bilddataspecifikation Operationer på hörn: RGBA, z w, texturkoord. Operationer på bildelement Fragment Texturminne Två typer av bilddata: Bitmap - bit per pixel. Bild - max 32 bitar per pixel. Finns ingen filformatstolk, data hämtas från C-array. (http://openil.sourceforge.net/) Bitmaps går direkt till rastreringen. Bilder går direkt till rastreringen eller lagras som texturdata (internt eller på grafikkortet). 4

Var ritas bilddata? Rita bild Aktuell rasterposition: glrasterpos2f(x, y); glrasterpos3f(x, y, z); glrasterpos4f(x, y, z, w); Då rasterpositionen anges transformeras den på samma sätt som övriga hörn. Jfr. position för ljuskällor! height gldrawpixels(width, height, format, type, const void *pixels); format R G B R G B R G B A R G B A R R R R (x w, y w, z w ) för aktuell rasterposition utgör origo för bilden/bitmapen. origo width type GL_UNSIGNED_BYTE GL_FLOAT Texturer Texturer Texturkoordinat t s Demo MIP-maps Teknik för att undvika aliasing-problem vid texturförminskning. 5

MIP-maps Filtrera ett antal texturer i förväg och lagra dem effektivt. Texturobjekt Filtreringsalternativ. Clamp/wrap-around för texturkoord. Texturobjekt Vid texturering väljs automatiskt den textur som passar bäst m.a.p. avstånd från kameran (om MIP-mapping är aktiverat). Texturappliceringsparametrar Texturkoordinater Rastrering Texturobjekt Innehåller: Texturdata (texels). Information filter och texturkoordinatapplicering: gltexparameter Information om huruvida kopia av texturdata har laddats ned till grafikhårdvaran. Endast ett texturobjekt är aktivt! Förstoring och förminskning Textur FÖRSTORING Pixelpunkter på skärmen FÖRMINSKNING Pixelpunkter Textur på skärmen Alternativ: GL_NEAREST, GL_LINEAR, m.m. (Labbtips: GL_NEAREST_MIPMAP_LINEAR är default, men vi använder inte MIP-maps) Clamp/wrap around Texturdataspecifikation (s, t) = (.25, -2.75) t m GL_REPEAT GL_CLAMP origo n ram s (width, height) = (2 n + 2b, 2 m + 2b) där m, n är heltal 0, b = om texturen har ram, 0 annars. 6

Texturdataspecifikation glteximage2d(gl_texture_2d, level, internalformat, width, height, border, format, type, const GLvoid *texels); level = MIP-mapnivå (= 0 på den här kursen) internalformat = internt lagringsformat (normalt = type) format, type som i gldrawpixels Observera att lagringslägen och transferoperationer även gäller texturer! Texturapplicering gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, mode); där mode är GL_DECAL = Ersätt RGB med texturdata, spara A. GL_REPLACE = Ersätt RGBA med texturdata. GL_MODULATE = Kombinera texturdata med ljussättning/färg. OBS! LAGRAS INTE I TEXTUROBJEKT! Texturkoordinater Texturkoordinater gltexcoord2f(s, t); gltexcoord3f(s, t, r); gltexcoord4f(s, t, r, q); Anges före glvertex (precis som för normaler). s' t' r' q' = T s t r q t glmatrixmode(gl_texture); Texturkartan indexeras sedan med (s'/q', t'/q'). r'/q' ignoreras normalt, men används vid 3D-texturering. s PPM-biblioteket #include <GL/glut.h> #include <ppm.h> GLuint tex; int main(int argc, char *argv) { float *texels; int w, h; w = ppmwidth( img.ppm ); h = ppmheight( img.ppm ); texels = ppmread( img.ppm, NULL); PPM-biblioteket glutcreatewindow( Win ); glgentextures(&tex, ); glteximage2d(, w, h,, texels); Programmet xv kan läsa/skriva PPM-bilder (gör module add graphics). På Windows: PaintShop Pro. 7

Bufferttester Djupbuffert och djuptest Fragment = (R, G, B, A, djup, texturkoordinat) Färgbuffert Färgbuffert Djuptest Djupbuffert Fönster Fragment Mer information om OpenGL Woo, Neider, Davis: The OpenGL Programming Guide, Addison Wesley Developer Press. Upplagan för OpenGL. finns som PDF på http://www.opengl.org/documentation/ red_book_.0/ Segal, Akeley: The OpenGL Graphics System: A Specification. Finns på http://www.opengl.org Plus en mängd andra böcker Inspiration! Problem? Gå till http://www.opengl.org/ Simulering Spel Visualisering www.amisun.com www.xplane.com www.doom3.com Konstnärliga uttryck www.avs.com www.pirx.com www.shatters.net www.shape-dc.org www.viewpoint.com xenia.media.mit.edu/~badger 8