Modellezés. OpenGL állapotmodell
|
|
- Bálint Fábián
- 8 évvel ezelőtt
- Látták:
Átírás
1 Modellezés 1 / 84
2 Modellezés Alakzatok OpenGL állapotmodell Amikor egy állapot értéke be van állítva, az addig nem változik meg, amíg egy másik függvény meg nem változtatja azt Két lehetséges értékű állapotok glenable() gldisable() Különböző értékek Lekérdezés pl. glgetfloatv(glenum pname, GLfloat *params) 2 / 84
3 Egy objektum modellezése 3 / 84
4 Modellezés Egy objektum modellezése Az objektumot felépítő primitívek vertexeit külön-külön is megadhatjuk Több ezer primitívből álló alakzatnál már problémás Bonyolult alakzatokat és azok attribútumait egy jól meghatározott struktúrájú adatszerkezetben tároljuk Egyetlen függvényhívás segítségével jelenítjük meg Szabályok Poligonoknak síkbeli alakzatoknak kell lenniük Poligon élei nem metszhetik egymást Poligonnak konvexnek kell lennie 4 / 84
5 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 5 / 84
6 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 6 / 84
7 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 7 / 84
8 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 8 / 84
9 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 9 / 84
10 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 10 / 84
11 Modellezés Csonkakúp palást előállítása //... // Négyszögsáv kezdete glbegin(gl_quad_strip); // Egy kör mentén számítjuk ki a henger // palástjának a vertex pontjait for(angle = 0.0f; angle <= (2.0f*GL_PI); angle -= 2*(GL_PI/n)) { // A következő vertex x és y pozíciójának // a kiszámítása R = 1 esetén x = cos(angle); y = sin(angle); //... // A négyszögsáv alsó és felső pontjainak // a megadása if (h1 < h2) { lvertex3f(r1*x, R1*y, h1); glvertex3f(r2*x, R2*y, h2); } else { glvertex3f(r2*x, R2*y, h2); glvertex3f(r1*x, R1*y, h1); } } glend(); 11 / 84
12 Modellezés Rejtett felületek eltávolítása Nézőponttól vett távolság eltárolása z érték összehasonlítása azzal a z értékkel, amit már korábban eltároltunk z értékek tárolását egy szín pufferrel megegyező méretű pufferrel Bizonyos esetekben szükséges a mélységpuffer írásának ideiglenes felfüggesztése gldepthmask(gl_false) A mélység teszt ugyanúgy végrehajtódik a korábbi értékekkel 12 / 84
13 Modellezés Rejtett felületek eltávolítása Alapesetben a mélységellenőrzés a kisebb relációt használ a nem látható objektumhoz tartozó pixelek eltávolítására Lehetőség van az összehasonlító reláció megadására gldepthfunc(glenum func) GL_NEVER Mindig hamis GL_LESS Igaz, ha a bejövő mélység érték kisebb, mint az eltárolt érték GL_EQUAL Igaz, ha a bejövő mélység érték megegyezik az eltárolt értékkel GL_LEQUAL Igaz, ha a bejövő mélység érték kisebb vagy egyenlő, mint az eltárolt érték GL_GREATER Igaz, ha a bejövő mélység érték nagyobb, mint az eltárolt érték GL_NOTEQUAL Igaz, ha a bejövő mélység érték nem egyenlő az eltárolt értékkel GL_GEQUAL Igaz, ha a bejövő mélység érték nagyobb vagy egyenlő, mint az eltárolt érték GL_ALWAYS Mindig igaz 13 / 84
14 Modellezés Rejtett felületek eltávolítása A GL_EQUAL és GL_NOTEQUAL relációk esetén meg kell változtatni az alap [ ] mélység értékek tartományát gldepthrange(glclampd nearval, GLclampd farval) Első paramétere a közeli vágósík Második paramétere a távoli vágósík A vágás és a homogén koordináták negyedik w elemével való osztás után, a mélység értékek a [ 1.0, 1.0] tartományba képződnek le A gldepthrange adja meg a lineáris leképezését ezeknek a normalizált mélység koordinátáknak az ablak mélységértékeire nézve 14 / 84
15 Modellezés Felosztás és élek Drótvázas megjelenítéskor a belső alakzat éleit nem kell megjeleníteni Az él flag-et hamisra kell állítani gledgeflag TRUE FALSE 15 / 84
16 Modellezés Felosztás és élek g l B e g i n (GL_TRIANGLES) ; f o r ( i =0, a n g l e =0.0; i <n ; i ++, a n g l e += D_Angle ) { g l E d g e F l a g (FALSE) ; g l V e r t e x 2 f ( x+r a d i u s cos ( a n g l e ), y+r a d i u s s i n ( a n g l e ) ) ; g l E d g e F l a g (TRUE) ; g l V e r t e x 2 f ( x+r a d i u s cos ( a n g l e+delta_angle ), y+r a d i u s s i n ( a n g l e+delta_angle ) ) ; g l V e r t e x 2 f ( x +2.8 r a d i u s cos ( a n g l e+half_dangle ), y +2.8 r a d i u s s i n ( a n g l e+half_dangle ) ) ; } glend ( ) ; 16 / 84
17 Cg példa 2D-s csavarás Példa s t r u c t C3E4_Output { f l o a t 4 p o s i t i o n : POSITION ; f l o a t 4 c o l o r : COLOR; } ; C3E4_Output C3E4v_twist ( f l o a t 2 p o s i t i o n : POSITION, f l o a t 4 c o l o r : COLOR, u n i f o r m f l o a t t w i s t i n g ) { C3E4_Output OUT; f l o a t a n g l e = t w i s t i n g l e n g t h ( p o s i t i o n ) ; f l o a t c o s L e n g t h, s i n L e n g t h ; s i n c o s ( a n g l e, s i n L e n g t h, c o s L e n g t h ) ; OUT. p o s i t i o n [ 0 ] = c o s L e n g t h p o s i t i o n [ 0 ] + s i n L e n g t h p o s i t i o n [ 1 ] ; OUT. p o s i t i o n [ 1 ] = s i n L e n g t h p o s i t i o n [ 0 ] + c o s L e n g t h p o s i t i o n [ 1 ] ; OUT. p o s i t i o n [ 2 ] = 0 ; OUT. p o s i t i o n [ 3 ] = 1 ; OUT. c o l o r = c o l o r ; r e t u r n OUT; } 17 / 84
18 Cg példa A tesszalálás fontossága a vertex programoknál Vertex elforgatása a középpont körül A forgatási szög növelésével több vertex-re van szükség Általában, amikor egy vertex porgram nem lineáris számítást hajt végre, akkor megfelelő tesszalálásra van szükség az elfogadható eredmény eléréséhez Alacsony Közepes Nagy 18 / 84
19 Modellezés Más primitívek Összetett alakzatok létrehozása OpenGL támogatással OpenGL GLU segédfüggvénykönyvtár Gömbök, hengerek, kúpok és sík korongok, illetve korongok lyukkal Szabad-formájú felületekhez Rendhagyó konkáv alakzatok, kisebb jobban kezelhető konvex alakzatokra való felbontása GLUT-os objektumok Drótvázas/Kitöltött Kocka, gömb, henger, stb. 19 / 84
20 Kvadratikus objektumok 20 / 84
21 Modellezés Kvadratikus objektumok Másodfokú algebrai egyenletekkel leírható felületek Pl. gömb, ellipszis, kúp, henger GLU segédfüggvény-könyvtár Objektum orientált modell Nagy paraméter lista elkerülése Paraméterek beállítása függvényekkel A felületekhez további attribútumokat/tulajdonságokat rendelhetünk Normálvektorok Textúra-koordináták / 84
22 Modellezés Kvadratikus objektumok Egy üres kvadratikus objektum létrehozása, használata és törlése GLUquadricObj *pobj; //... // Kvadratikus objektum létrehozása és inicializálása pobj = glunewquadric(); // Renderelési paraméterek beállítása //... // Kvadratikus felület rajzolása //... // Kvadratikus objektum felszabadítása gludeletequadric(pobj); 22 / 84
23 Modellezés Kvadratikus objektumok Egy üres kvadratikus objektum létrehozása, használata és törlése GLUquadricObj *pobj; //... // Kvadratikus objektum létrehozása és inicializálása pobj = glunewquadric(); // Renderelési paraméterek beállítása //... // Kvadratikus felület rajzolása //... // Kvadratikus objektum felszabadítása gludeletequadric(pobj); 23 / 84
24 Modellezés Kvadratikus objektumok Egy üres kvadratikus objektum létrehozása, használata és törlése GLUquadricObj *pobj; //... // Kvadratikus objektum létrehozása és inicializálása pobj = glunewquadric(); // Renderelési paraméterek beállítása //... // Kvadratikus felület rajzolása //... // Kvadratikus objektum felszabadítása gludeletequadric(pobj); 24 / 84
25 Modellezés Kvadratikus objektumok - Rajzolási állapotok beállítása Rajzolási stílus gluquadricdrawstyle(gluquadricobj *obj, GLenum drawstyle) GLU_FILL Solid objektumként jelenik meg GLU_LINE Drótvázas alakzatként jelenik meg GLU_POINT Vertex pontok halmazaként jelenik meg GLU_SILHOUETTE Hasonló a drótvázas megjelenéshez, de a poligonok szomszédos élei nem jelennek meg 25 / 84
26 Modellezés Kvadratikus objektumok - Rajzolási állapotok beállítása Normál egységvektorok automatikus generálása gluquadricnormals(gluquadricobj *pbj, GLenum normals) GL_NONE Normálvektorok nélkül GL_SMOOTH Sima normálvektorok Minden vertexhez külön-külön van meghatározva a normálvektor GL_FLAT sík normálvektorok Síkonként, adott háromszögre van kiszámítva a normálvektor 26 / 84
27 Modellezés Kvadratikus objektumok - Rajzolási állapotok beállítása Normálvektorok iránya gluquadricorientation(gluquadricobj *obj, GLenum orientation) GLU_OUTSIDE Kívülre mutat Pl. megvilágított gömb GLU_INSIDE Belülre mutat Pl. boltíves mennyezet 27 / 84
28 Modellezés Kvadratikus objektumok - Rajzolási állapotok beállítása Textúra-koordináták kiszámolása gluquadrictexture(gluquadricobj *obj, GLenum texturecoords) GL_TRUE Igen A textúra-koordináták egyenletesen helyezkednek el a felületen GL_FALSE Nem Nem generálódnak textúra-koordináták 28 / 84
29 Modellezés Kvadratikus objektumok rajzolása Gömb glusphere(gluquadricobj *obj, GLdouble radius, GLint slices, GLint stacks) radius A gömb sugara slices A gyűrűkön belül lévő háromszögek/négyszögek száma Hosszúsági körök száma stacks Gyűrűk száma Szélességi körök száma 29 / 84
30 Modellezés Kvadratikus objektumok rajzolása Henger glucylinder(gluquadricobj *obj, GLdouble baseradius, GLdouble topradius, GLdouble height, GLint slices, GLint stacks) baseradius Az origóhoz közelebbi oldalhoz tartozó sugár topradius A másik oldalhoz tartozó sugár height A henger magassága slices Szeletek száma stacks Gyűrűk száma Amennyiben a baseradius vagy a topradius nullával egyenlő, akkor egy kúpot kapunk eredményül 30 / 84
31 Modellezés Kvadratikus objektumok rajzolása Korong gludisk(gluquadricobj *obj, GLdouble innerradius, GLdouble outerradius, GLint slices, GLint loops) innerradius Belső sugár Amennyiben nullával egyenlő, akkor egy tömör korongot kapunk Amennyiben nem nulla, akkor egy lyukas korong az eredmény (csavar alátét) outerradius Külső sugár slices Szeletek száma loops Gyűrűk szűma 31 / 84
32 Bézier görbék és felületek 32 / 84
33 Modellezés Bézier görbék és felületek Parametrikus egyenletek x, y és z egy másik változó függvényeként van megadva A változó egy előre definiált intervallum értékeit veheti fel Egy részecske időbeli mozgása x = f (t), y = g(t), z = h(t), ahol f (t), g(t) és h(t) egyedi függvények. OpenGL-be görbe esetén u-val, felület esetén u-val és v-vel jelöljük a parametrikus görbe/felület paramétereit 33 / 84
34 Modellezés Bézier görbék és felületek - Kontrollpontok A görbe definiálásakor kontroll pontokkal befolyásolhatjuk annak az alakját Az első és utolsó pont része a görbének A többi kontrollpont mágnesként viselkedik Maguk felé húzzák a görbét A görbe rangját a kontrollpontok száma határozza meg A görbe foka eggyel kisebb, mint annak a rangja 34 / 84
35 Modellezés Bézier görbék és felületek - Kontrollpontok A kontrollpontok matematikai jelentése a görbék parametrikus polinom egyenletekre vonatkoznak Rang Együtthatók száma Fok A legnagyobb kitevője a paraméternek A leggyakoribbak a kubikos (harmadfokú) görbék Elméletileg tetszőleges rangú görbét megadhatunk magasabb rangú görbék ellenőrizhetetlenül oszcillálni kezdenek A kontrollpontok kis változtatására nagy mértékben megváltoznak 35 / 84
36 Modellezés Bézier görbék és felületek - Folytonosság Görbék közös vég- és kezdőpontjaikban leírja, hogy mennyire sima az átmenet közöttük Semmilyen Nincs közös pontja a két görbének C0 Pozícióbeli Egy közös pontban találkoznak C1 Érintőleges A két végpontban a két görbe érintője azonos C2 Görbületi A görbületi sugarak is megegyeznek a töréspontban Az átmenet még simább 36 / 84
37 Modellezés Bézier görbék és felületek - 2D-s görbék void glmap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); target A kiértékelővel előállított adat típusa Pl. GL_MAP1_VERTEX_3, GL_MAP1_NORMAL, GL_MAP1_TEXTURE_COORD_1,... u1, u2 Az u lineáris leképezését adja meg stride Két kontrollpont közötti float-ok vagy double-ok száma a points adatstruktúrában order A kontrollpontok száma (pozitív) points A kontrollpontokat tartalmazó tömbre mutató pointer 37 / 84
38 Modellezés Bézier görbék és felületek - 2D-s görbék //A k o n t r o l l p o n t o k száma GLint nnumpoints = 5 ; G L f l o a t c t r l P o i n t s [ 5 ] [ 3 ] = // Végpont {{ 3.0 f, 3.0 f, 0. 0 f }, // K o n t r o l l p o n t { 5. 0 f, 3. 0 f, 0. 0 f }, // K o n t r o l l p o n t { 0. 0 f, 6. 0 f, 0. 0 f }, // K o n t o r l l p o n t { 0.5 f, 6. 0 f, 0. 0 f }, // Végpont { 0. 0 f, 8.0 f, 0. 0 f } } ; glmap1f ( // Az e l ő á l l í t o t t // adat t í p u s a GL_MAP1_VERTEX_3, // u a l s ó k o r l á t j a 0. 0 f, // u f e l s ő k o r l á t j a f, // A pontok k ö z ö t t i // t á v o l s á g az adatokban 3, // K o n t r o l l p o n t o k száma nnumpoints, // K o n t r o l l p o n t o k a t // t a r t a l m a z ó tömb mutatója &c t r l P o i n t s [ 0 ] [ 0 ] ) ; 38 / 84
39 Modellezés Bézier görbék és felületek - 2D-s görbék glenable(gl_map1_vertex_3); A kiértékelő engedélyezése void glevalcoord1f(glfloat u) u A paraméter értékének a megadása // A pontok ö s s z e k ö t é s e // t ö r e d e z e t t v o n a l l a l g l B e g i n (GL_LINE_STRIP) ; f o r ( i = 0 ; i <= ; i ++) { // A görbe k i é r t é k e l é s e // az a d o t t pontban g l E v a l C o o r d 1 f ( ( G L f l o a t ) ) ; } glend ( ) ; i 39 / 84
40 Modellezés Bézier görbék és felületek - 2D-s görbék - Egy görbe kiértékelése Egyszerűbb megvalósítás void glmapgrid1d( GLint un, GLfloat u1, GLfloat u2) un A rács felosztása u1, u2 Megadja a rácspontok leképezését. void glevalmesh1(glenum mode, GLint i1, GLint i2) mode GL_POINT vagy GL_LINE i1, i2 Az első és utolsó érték a tartományon // L e k é p e z i a 100 pont r á c s á t a i n t e r v a l l u m r a glmapgrid1d ( 1 0 0, 0. 0, ) ; // K i é r t é k e l i a r á c s o t é s v o n a l a k k a l m e g j e l e n í t i a z t glevalmesh1 (GL_LINE, 0, ) ; 40 / 84
41 Modellezés Bézier görbék és felületek - 3D-s felület void glmap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) target A kiértékelővel előállított adat típusa u1, u2 Az u lineáris leképzését adja meg ustride Két u értelmezési tartományban lévő kontrollpont közötti float-ok vagy double-ok száma a points adatstruktúrában uorder A kontroll pontokat tartalmazó tömb dimenziója u tengely mentén v1, v2 Az v lineáris leképzését adja meg vstride Két v értelmezési tartományban lévő kontrollpont közötti float-ok vagy double-ok száma a points adatstruktúrában vorder A kontroll pontokat tartalmazó tömb dimenziója v tengely mentén points Kontrollpontokat tartalmazó tömbre mutató pointer 41 / 84
42 Modellezés Bézier görbék és felületek - 3D-s felület Egyszerűbb megvalósítás void glmapgrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ); un A rács felosztása u irányban u1, u2 Megadja a rácspontok leképezését vn A rács felosztása v irányban v1, v2 Megadja a rácspontok leképezését void glevalmesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) mode GL_POINT vagy GL_LINE i1, i2 Az első és utolsó érték az u tartományon j1, j2 Az első és utolsó érték az v tartományon 42 / 84
43 Modellezés Bézier görbék és felületek - 3D-s felület // K i é r t é k e l ő e n g e d é l y e z é s e g l E n a b l e (GL_MAP2_VERTEX_3) ; // Magasabb s z i n t ű f ü g g v é n y a r á c s l e k é p e z é s é r e // A r á c s 10 p o n t j á n a k a l e k é p e z é s e a 0 10 t a r t o m á n y r a g l M a p G r i d 2 f ( 1 0, 0. 0 f, f, 10, 0. 0 f, f ) ; // A r á c s k i é r t é k e l é s e v o n a l a k k a l glevalmesh2 (GL_LINE, 0, 10, 0, 10) ; 43 / 84
44 GLUT-os objektumok 44 / 84
45 Modellezés GLUT-os objektumok A GLUT függvénykönyvtár 3D-s geometriai objektumok létrehozására alkalmas függvények Normálvektorokat létrehoz Nem generál textúra-koordinátákat (kivéve teáskanna) Pl. gömb és kúp esetén a GLUT-os megvalósítás az előbb ismertetett kvadratikus objektumokat megvalósító függvényeket használja Az adott GLUT-os objektumok paraméterlistája nagyon hasonló a kvadratikus objektumokat megvalósító függvényekhez 45 / 84
46 Modellezés GLUT-os objektumok Tömör alakzat Drótvázas alakzat 3D-s objektum glutsolidsphere glutwiresphere Gömb glutsolidcube glutwirecube Kocka glutsolidcone glutwirecone Kúp glutsolidtorus glutwiretorus Tórusz glutsoliddodecahedron glutwiredodecahedron Dodekaéder glutsolidoctahedron glutwireoctahedron Oktaéder glutsolidtetrahedron glutwiretetrahedron Tetraéder glutsolidicosahedron glutwireicosahedron Ikozaéder glutsolidteapot glutwireteapot Teáskanna 46 / 84
47 Modellezés Összefoglalás Egy objektum felépítése Kvadratikus objektumok Bézier görbék és felületek GLUT-os objektumok 47 / 84
48 Megvilágítás-árnyalás, átlátszóság és köd 48 / 84
49 Árnyalás 49 / 84
50 Megvilágítás-árnyalás Fotorealisztikus előállítása egy háromdimenziós világnak Valósághű geometriai megjelenés Valósághű külső megjelenés Anyagi tulajdonságok felületekhez való hozzárendelése Különböző fajta fényforrások alkalmazása Textúrák hozzáadása Köd Átlátszóság használata 50 / 84
51 Megvilágítás-Árnyalás Fényforrások Fényforrástípusok Irányított fények A fényforrás az megvilágított objektumtól végtelen távoli pontban helyezkedik el Pontfények, reflektorfények Pozícionális fények, mind a kettő rendelkezik egy pozícióval a térben Mind a három fényforrás esetén megadhatunk intenzitásra vonatkozó paramétereket és szín (RGB) értékeket 51 / 84
52 Fényforrások Fényforrásokra vonatkozó paraméterek Jelölés Leírás s amb Ambiens intenzitás szín s diff Diffúz intenzitás szín s spec Spekuláris intenzitás szín Négy elemű fényforrás pozíció s pos További reflektorfényre vonatkozó paraméterek s dir Irányvektor s cut Levágási szög Kúpon belüli elnyelődés kontrollálása s exp Pozícionális fényforrások távolság alapú intenzitás vezérlésére s c, s l és s q Csillapítás vezérlése 52 / 84
53 Anyagi tulajdonságok Egy felület színét az anyaghoz tartozó paraméterekkel, a fényforrások paramétereivel (melyek megvilágítják a felületet) és egy megvilágítási modellel határozhatjuk meg Jelölés m amb m diff m spec m shi m emi Leírás Ambiens anyag szín Diffúz anyag szín Spekuláris anyag szín Fényesség paraméter Emisszív anyag szín 53 / 84
54 Megvilágítás és árnyalás Megvilágítás Megadjuk az anyag és fényforrások paramétereivel meghatározott látható szín értékeit Árnyalás Az a folyamat, amely végrehajtja a megvilágítási számításokat és meghatározza azokból a pixelek színeit Flat, sík Goraud Phong 54 / 84
55 Árnyalás Flat A szín egy háromszögre van kiszámítva és a háromszög ezzel a színnel van kitöltve Goraud A megvilágítás a háromszög mindegyik vertexe esetén meg van határozva és ezeket a színeket interpolálva a háromszög felületén kapjuk a végső eredményt Phong A vertexekben tárolt árnyalási normálvektorokat interpolálva határozzuk meg a pixelenkénti normálvektorokat a háromszögben. Ezeket a normálvektorokat használva számítjuk ki a megvilágítás hatását az adott pixelben 55 / 84
56 Árnyalás A flat árnyalást könnyű megvalósítani Nem ad olyan sima eredményt görbe felület esetén Meg lehet különböztetni a modellt felépítő primitíveket illetve felületeket A Gouraud árnyalás függ az objektum részletességétől 56 / 84
57 Árnyalás Phong árnyalás Kevésbé függ az objektum kidolgozottságától Felületi normálvektorok interpolálása Pixelenkénti megvilágítás kiszámítása Kiszámítása bonyolultabb és költségesebb Korábban ezt a fajta módszert kevésbé használták Gouraud árnyalással hasonló eredményt lehet elérni A felület pixelnél kisebb háromszögekre való felosztása Nagyon lassú lehet Nem programozható grafikus hardveren is megvalósítható 57 / 84
58 Megvilágítási modell A diffúz komponens Megfelel a fizikai valóságnak valamint a fény és felület kölcsönhatásának Lambert törvényen alapul Az ideális diffúz (teljesen matt és nem csillogó) felületeknél a visszavert fény mértéke az n felületi normál és az l fényvektor közötti φ szög koszinuszától függ 58 / 84
59 Megvilágítási modell Lambert törvény A l n p A/cos i diff = n l = cos φ, i diff a szem irányában visszavert fény mértékét megadó fizikai mennyiség φ > π/2 esetén nullával egyenlő. A felület a fénnyel ellentétes irányba néz 59 / 84
60 Megvilágítási modell Diffúz komponens A megvilágítási egyenlet diffúz komponense független a kamera pozíciójától és irányától A megvilágított felület bármely irányból ugyanúgy néz ki fényforrás s diff és az anyag m diff diffúz színét használva i diff = max((n l), 0)m diff s diff Az i diff a szín diffúz tagja Az operátor a komponensenkénti szorzás max((n l), 0) 0, ha n és l közötti szög értéke nagyobb, mint π/2 60 / 84
61 Megvilágítási modell A spekuláris komponens A spekuláris komponens a felület csillogásáért felelős Világos foltként jelenik meg a felületen A felület görbeségét hangsúlyozza ki Segít a fényforrások irányának és helyének a meghatározásában Phong megvilágítási egyenlet: i spec = (r v) m shi = (cos ρ) m shi v a p felületi pontból a nézőpont felé mutató vektor az r az l fény vektor n normálvektorral meghatározott visszaverődése A spekuláris összetevő annál erősebb, minél jobban egybeesik az r visszaverődési vektor és a v nézőpont vektor 61 / 84
62 Megvilágítási modell A spekuláris komponens Az l fény vektor az n normálvektorra nézve az r vektor irányában verődik vissza Az r vektort a következőképpen lehet meghatározni: r = 2(n l)n l Amennyiben n l < 0 A felület nem látható a fényforrásból nézve 62 / 84
63 Megvilágítási modell A spekuláris komponens Blinn egyenlete i spec = (n h) m shi = (cos φ) m shi h az l és v között lévő normalizált vektor h = l + v l + v 63 / 84
64 Megvilágítási modell A spekuláris komponens A h annak a síknak a normálisa a p pontban, amely a fényforrásból tökéletesen veri vissza a fényt a nézőpontba Az n h tag akkor maximális, ha az n normális p pontban egybeesik a h vektorral Az n h tényező abban az esetben csökken, amikor az n és h között a szög növekszik Nem kell kiszámítani az r visszaverődési vektort A kétfajta spekuláris megvilágítás közötti közelítés (r v) m shi (n h) 4m shi 64 / 84
65 Megvilágítási modell A spekuláris komponens OpenGL és a Direct3D megvalósítás i spec = max((n h), 0) m shi m spec s spec m shi a felület csillogásának a mértékét írja le Értékének növelésével azt a hatást érjük el, hogy a világos terület nagysága beszűkül Schlick adott egy alternatív megközelítést Phong egyenletére t = cos ρ, t i spec = m shi tm shi + t m spec s spec 65 / 84
66 Megvilágítási modell Az ambiens komponens A megvilágítási modellünkben a fények közvetlenül ragyognak a felületeken A valóságban a fény a fényforrásból kiindulva egy másik felületről visszaverődve is elérheti a tárgyat A másik felületről érkező fény nem számítható be sem a spekuláris sem pedig a diffúz komponensbe Indirekt megvilágítás szimulálása A megvilágítási modellbe belevesszük az ambiens tagot Csak valamilyen kombinációja az anyagi és fény konstansoknak 66 / 84
67 Megvilágítási modell Az ambiens komponens i amb = m amb s amb Egy tárgy valamilyen minimális mennyiségű színnel fog rendelkezni Még akkor is, ha nem közvetlen módon lesz megvilágítva Azok a felületek, melyek nem a fény felé néznek nem fognak teljesen feketén megjelenni 67 / 84
68 Megvilágítási modell Az ambiens komponens OpenGL Támogatja a fényforrásonkénti ambiens értéket Amikor a fényt kikapcsoljuk, akkor az ambiens összetevő automatikusan el lesz távolítva Csak ambiens tagot használva nem kapunk megfelelő eredményt Eltűnik a három-dimenziós hatás Mindegyik objektum meg legyen világítva legalább egy kicsi direkt megvilágítással Fényeket helyezünk el a színtéren Fejlámpa (headlight) használta, amely egy a nézőponthoz kapcsolt pontfény A spekuláris komponensét kikapcsoljuk, hogy kevésbé zavarjon 68 / 84
69 Megvilágítási modell A megvilágítási egyenlet Lokális megvilágítási modell A megvilágítás csak a fényforrásokból származó fénytől függ Más felületről nem érkezik fény A megvilágítást az ambiens, diffúz és spekuláris komponensek határozzák meg i tot = i amb + i diff + i spec 69 / 84
70 Cg vertex program - alap megvilágítás Paraméterek v o i d C5E1v_basicLight ( f l o a t 4 p o s i t i o n : POSITION, f l o a t 3 normal : NORMAL, out f l o a t 4 o P o s i t i o n : POSITION, out f l o a t 4 c o l o r : COLOR, u n i f o r m f l o a t 4 x 4 modelviewproj, u n i f o r m f l o a t 3 globalambient, u n i f o r m f l o a t 3 l i g h t C o l o r, u n i f o r m f l o a t 3 l i g h t P o s i t i o n, u n i f o r m f l o a t 3 e y e P o s i t i o n, u n i f o r m f l o a t 3 Ka, u n i f o r m f l o a t 3 Kd, u n i f o r m f l o a t 3 Ks, u n i f o r m f l o a t s h i n i n e s s ) 70 / 84
71 Cg vertex program - alap megvilágítás Előkészítés o P o s i t i o n = mul ( modelviewproj, p o s i t i o n ) ; f l o a t 3 P = p o s i t i o n. xyz ; f l o a t 3 N = normal ; 71 / 84
72 Cg vertex program - alap megvilágítás Ambiens és diffúz tag kiszámítása // Ambiens tag f l o a t 3 ambient = Ka g l o b a l A m b i e n t ; // D i f f ú z tag f l o a t 3 L = n o r m a l i z e ( l i g h t P o s i t i o n P) ; f l o a t d i f f u s e L i g h t = max( dot (N, L ), 0) ; f l o a t 3 d i f f u s e = Kd l i g h t C o l o r d i f f u s e L i g h t ; 72 / 84
73 Cg vertex program - alap megvilágítás Spekuláris tag kiszámítása f l o a t 3 V = n o r m a l i z e ( e y e P o s i t i o n P) ; f l o a t 3 H = n o r m a l i z e ( L + V) ; f l o a t s p e c u l a r L i g h t = pow (max( dot (N, H), 0), s h i n i n e s s ) ; i f ( d i f f u s e L i g h t <= 0) s p e c u l a r L i g h t = 0 ; f l o a t 3 s p e c u l a r = Ks l i g h t C o l o r s p e c u l a r L i g h t ; 73 / 84
74 Cg vertex program - alap megvilágítás Komponensek összegzése c o l o r. xyz = ambient + d i f f u s e + s p e c u l a r ; c o l o r.w = 1 ; 74 / 84
75 Cg fragmens program - alap megvilágítás Vertex program void C5E2v_fragmentLighting(float4 position : POSITION, float3 normal : NORMAL, loat4 oposition : POSITION, out float3 objectpos : TEXCOORD0, out float3 onormal : TEXCOORD1, uniform float4x4 modelviewproj) oposition = mul(modelviewproj, position); objectpos = position.xyz; onormal = normal; 75 / 84
76 Cg fragmens program - alap megvilágítás Vertex program void C5E2v_fragmentLighting(float4 position : POSITION, float3 normal : NORMAL, loat4 oposition : POSITION, out float3 objectpos : TEXCOORD0, out float3 onormal : TEXCOORD1, uniform float4x4 modelviewproj) oposition = mul(modelviewproj, position); objectpos = position.xyz; onormal = normal; 76 / 84
77 Cg fragmens program - alap megvilágítás Vertex program void C5E2v_fragmentLighting(float4 position : POSITION, float3 normal : NORMAL, loat4 oposition : POSITION, out float3 objectpos : TEXCOORD0, out float3 onormal : TEXCOORD1, uniform float4x4 modelviewproj) oposition = mul(modelviewproj, position); objectpos = position.xyz; onormal = normal; 77 / 84
78 Cg fragmens program - alap megvilágítás Paraméterek void C5E3f_basicLight(float4 position : TEXCOORD0, float3 normal : TEXCOORD1, out float4 color : COLOR, uniform float3 globalambient, uniform float3 lightcolor, uniform float3 lightposition, uniform float3 eyeposition, uniform float3 Ka, uniform float3 Kd, uniform float3 Ks, uniform float shininess) 78 / 84
79 Cg fragmens program - alap megvilágítás Paraméterek void C5E3f_basicLight(float4 position : TEXCOORD0, float3 normal : TEXCOORD1, out float4 color : COLOR, uniform float3 globalambient, uniform float3 lightcolor, uniform float3 lightposition, uniform float3 eyeposition, uniform float3 Ka, uniform float3 Kd, uniform float3 Ks, uniform float shininess) 79 / 84
80 Cg fragmens program - alap megvilágítás Paraméterek void C5E3f_basicLight(float4 position : TEXCOORD0, float3 normal : TEXCOORD1, out float4 color : COLOR, uniform float3 globalambient, uniform float3 lightcolor, uniform float3 lightposition, uniform float3 eyeposition, uniform float3 Ka, uniform float3 Kd, uniform float3 Ks, uniform float shininess) 80 / 84
81 Cg fragmens program - alap megvilágítás Függvénytörzs f l o a t 3 P = p o s i t i o n. xyz ; f l o a t 3 N = n o r m a l i z e ( normal ) ; // Ambiens tag f l o a t 3 ambient = Ka g l o b a l A m b i e n t ; // D i f f ú z tag f l o a t 3 L = n o r m a l i z e ( l i g h t P o s i t i o n P) ; f l o a t d i f f u s e L i g h t = max ( dot ( L, N), 0) ; f l o a t 3 d i f f u s e = Kd l i g h t C o l o r d i f f u s e L i g h t ; // S p e k u l á r i s tag f l o a t 3 V = n o r m a l i z e ( e y e P o s i t i o n P) ; f l o a t 3 H = n o r m a l i z e ( L + V) ; f l o a t s p e c u l a r L i g h t = pow ( max ( dot (H, N), 0), s h i n i n e s s ) ; i f ( d i f f u s e L i g h t <= 0) s p e c u l a r L i g h t = 0 ; f l o a t 3 s p e c u l a r = Ks l i g h t C o l o r s p e c u l a r L i g h t ; c o l o r. xyz = ambient + d i f f u s e + s p e c u l a r ; c o l o r. w = 1 ; 81 / 84
82 Megvilágítási modell A megvilágítási egyenlet A valóságban a fény intenzitása fordítottan arányos a fényforrástól mért távolság négyzetével d = 1 s c + s l s pos p + s q s pos p 2 spos p az spos fényforrás pozíciójától vett távolság a p pontig s c a konstans, az s l a lineáris és a s q a kvadratikus csillapítást kontrollálják A fizikailag korrekt távolság csillapításhoz s c = 0, s l = 0 és s q = 1 i tot = i amb + d(i diff + i spec ) 82 / 84
83 Cg fragmens program - távolság függés // Anyagi t u l a j d o n s á g o k s t r u c t M a t e r i a l { f l o a t 3 Ka ; f l o a t 3 Kd ; f l o a t 3 Ks ; f l o a t s h i n i n e s s ; } ; // Fény p a r a m é t e r e k s t r u c t L i g h t { f l o a t 3 p o s i t i o n ; f l o a t 3 c o l o r ; f l o a t kc, kl, kq ; } ; // T á v o l s á g t ó l függő s k a l á r meghatározása f l o a t C5E6_attenuation ( f l o a t 3 P, L i g h t l i g h t ) { f l o a t d = d i s t a n c e (P, l i g h t. p o s i t i o n ) ; r e t u r n 1 / ( l i g h t. kc + l i g h t. kl d + l i g h t. kq d d ) ; } 83 / 84
84 Cg fragmens program - távolság függés Paraméterek void C5E7_attenuateLighting ( L i g h t l i g h t, f l o a t 3 P, f l o a t 3 N, f l o a t 3 e y e P o s i t i o n, f l o a t s h i n i n e s s, out f l o a t 3 d i f f u s e R e s u l t, out f l o a t 3 s p e c u l a r R e s u l t ) 84 / 84
85 Cg fragmens program - távolság függés Függvénytörzs // E l n y e l ő d é s k i s z á m í t á s a f l o a t a t t e n u a t i o n = C5E6_attenuation (P, l i g h t ) ; // D i f f ú z komponens k i s z á m í t á s a f l o a t 3 L = n o r m a l i z e ( l i g h t. p o s i t i o n P) ; f l o a t d i f f u s e L i g h t = max ( dot ( L, N), 0) ; d i f f u s e R e s u l t = a t t e n u a t i o n l i g h t. c o l o r d i f f u s e L i g h t ; // S p e k u l á r i s komponens k i s z á m í t á s a f l o a t 3 V = n o r m a l i z e ( e y e P o s i t i o n P) ; f l o a t 3 H = n o r m a l i z e ( L + V) ; f l o a t s p e c u l a r L i g h t = pow ( max ( dot (H, N), 0), s h i n i n e s s ) ; i f ( d i f f u s e L i g h t <= 0) s p e c u l a r L i g h t = 0 ; s p e c u l a r R e s u l t = a t t e n u a t i o n l i g h t. c o l o r s p e c u l a r L i g h t ; 85 / 84
86 Cg fragmens program - távolság függés Belépő függvény - paraméterek v o i d o n e L i g h t ( f l o a t 4 p o s i t i o n : TEXCOORD0, f l o a t 3 normal : TEXCOORD1, out f l o a t 4 c o l o r : COLOR, u n i f o r m f l o a t 3 e y e P o s i t i o n, u n i f o r m f l o a t 3 globalambient, u n i f o r m L i g h t l i g h t s [ 1 ], u n i f o r m M a t e r i a l m a t e r i a l ) 86 / 84
87 Cg fragmens program - távolság függés Belépő függvény // Ambiens f l o a t 3 ambient = m a t e r i a l. Ka g l o b a l A m b i e n t ; f l o a t 3 d i f f u s e L i g h t ; f l o a t 3 s p e c u l a r L i g h t ; f l o a t 3 d i f f u s e S u m = 0 ; f l o a t 3 specularsum = 0 ; // D i f f ú z é s s p e k u l á r i s komponensek // t á v o l s á g függő k i s z á m í t á s a C 5 E 7 _ a t t e n u a t e L i g h t i n g ( l i g h t s [ 0 ], p o s i t i o n. xyz, normal, e y e P o s i t i o n, m a t e r i a l. s h i n i n e s s, d i f f u s e L i g h t, s p e c u l a r L i g h t ) ; d i f f u s e S u m += d i f f u s e L i g h t ; specularsum += s p e c u l a r L i g h t ; // Anyagi t u l a j d o n s á g o k f i g y e l e m b e v é t e l e f l o a t 3 d i f f u s e = m a t e r i a l. Kd d i f f u s e S u m ; f l o a t 3 s p e c u l a r = m a t e r i a l. Ks specularsum ; c o l o r. xyz = ambient + d i f f u s e + s p e c u l a r ; c o l o r. w = 1 ; 87 / 84
88 Megvilágítási modell A megvilágítási egyenlet A reflektorfény a színteret különböző módon világítja meg c spot -tal jelölt szorzótényező s dir s exp c spot = max( l s dir, 0) sexp l A fény vektor A reflektor iránya Az exponenciális faktor a reflektor középpontjától való halványodását vezérli Módosított megvilágítási egyenlet i tot = c spot (i amb + d(i diff + i spec )) Ha a fényforrásunk nem reflektorfény, akkor c spot = 1 88 / 84
89 Cg fragmens program - reflektorfény Intenzitás változás Belső és külső "kúpok" Könnyű eldönteni, hogy melyik részbe esik egy pont Változtatni kell az intenzitás kiszámítását 89 / 84
90 Cg fragmens program - reflektorfény Intenzitás változás f l o a t s a t u r a t e ( f l o a t x ) { r e t u r n max ( 0, min ( 1, x ) ) ; } f l o a t smoothstep ( f l o a t min, f l o a t max, f l o a t x ) { f l o a t t = s a t u r a t e ( ( x min ) /( max min ) ) ; r e t u r n t t ( 3. 0 ( 2. 0 t ) ) ; } 0, ha x < min 1, ha x > max Hermite interpolált érték 0 és 1 között 2t 3 + 3t 2 90 / 84
91 Cg fragmens program - reflektorfény Intenzitás változás float C5E9_dualConeSpotlight(float3 P, Light light) float3 V = normalize(p - light.position); float cosoutercone = light.cosoutercone; float cosinnercone = light.cosinnercone; float cosdirection = dot(v, light.direction); return smoothstep(cosoutercone, cosinnercone, cosdirection); 91 / 84
92 Cg fragmens program - reflektorfény Intenzitás változás float C5E9_dualConeSpotlight(float3 P, Light light) float3 V = normalize(p - light.position); float cosoutercone = light.cosoutercone; float cosinnercone = light.cosinnercone; float cosdirection = dot(v, light.direction); return smoothstep(cosoutercone, cosinnercone, cosdirection); 92 / 84
93 Megvilágítási modell A megvilágítási egyenlet A felület mennyi fényt bocsát ki Az anyag rendelkezik egy m emi emisszív paraméterrel Globális ambiens fényforrás paraméter Konstans háttérfényt közelít Minden irányból körülveszi a tárgyakat Módosított megvilágítási egyenlet i tot = a glob m amb + m emi + c spot (i amb + d(i diff + i spec )) 93 / 84
94 Cg fragmens program részlet Emisszív paraméter struct Material float3 Ke; float3 Ka; float3 Kd; float3 Ks; float shininess; ;... float3 emissive = material.ke; 94 / 84
95 Cg fragmens program részlet Emisszív paraméter struct Material float3 Ke; float3 Ka; float3 Kd; float3 Ks; float shininess; ;... float3 emissive = material.ke; 95 / 84
96 Megvilágítási modell A megvilágítási egyenlet Tegyük fel, hogy n fényforrásunk van és mindegyiket k indexszel azonosítjuk i tot = a glob m amb + m emi + n cspot(i k k amb + d k (i k diff + ik spec)) k=1 A fényforrás intenzitás összege 1-nél nagyobb is lehet Az eredmény megvilágítási színt [0, 1] intervallumra korlátozzuk le Túlcsorduló szín skálázása a legnagyobb komponenssel A túlcsordulások gyakran a geometriai részletességet csökkentik 96 / 84
97 Cg fragmens program részlet Több fényforrás f l o a t 3 d i f f u s e L i g h t ; f l o a t 3 s p e c u l a r L i g h t ; f l o a t 3 ambientsum = 0 ; f l o a t 3 d i f f u s e S u m = 0 ; f l o a t 3 specularsum = 0 ; // Az ambiens, d i f f ú z é s s p e k u l á r i s komponensekre v a l ó s z á m í t á s o k f o r ( i n t i = 0 ; i < 2 ; i ++) { C5E5_computeLighting ( l i g h t s [ i ], p o s i t i o n. xyz, normal, e y e P o s i t i o n, m a t e r i a l. s h i n i n e s s, d i f f u s e L i g h t, s p e c u l a r L i g h t ) ; ambientsum += a m b i e n t L i g h t ; d i f f u s e S u m += d i f f u s e L i g h t ; specularsum += s p e c u l a r L i g h t ; } // Anyagi t u l a j d o n s á g o k f i g y e l e m b e v é t e l e f l o a t 3 a m i b i e n t = m a t e r i a l. Ka ambientsum ; f l o a t 3 d i f f u s e = m a t e r i a l. Kd d i f f u s e S u m ; f l o a t 3 s p e c u l a r = m a t e r i a l. Ks specularsum ; 97 / 84
98 Átlátszóság 98 / 84
99 Átlátszóság Megvalósításához szükség van az átlátszó tárgy színének és a mögötte lévő objektumok színének a keverésére Egy RGB szín és egy Z-puffer mélység van hozzákötve mindegyik pixelhez a képernyőn való megjelenítésekor α komponens Az az érték, amely leírja a tárgy átlátszóságának a fokát egy adott pixelben α = 1 azt jelenti, hogy az objektum nem átlátszó és teljes egészében kitölti a pixel területet α = 0 pedig azt jelenti, hogy a pixel egyáltalán nem látszik 99 / 84
100 Átlátszóság Egy objektum átlátszóvá tételéhez a meglévő színtéren kell megjeleníteni egynél kisebb alfa értékkel c o = α s c s + (1 α s )c d [over operátor] c s α s c d c o Az átlátszó objektum színe (forrás) A tárgy alfa értéke A keveredés előtti (a színpufferben lévő, cél) pixel szín érték Az eredmény szín Az átlátszó objektumot a meglévő színtér elé (over) helyezzük 100 / 84
101 Átlátszóság Helyes megjelenítéséhez általában szükségünk van rendezésre Először a nem átlátszó tárgyakat kell renderelni Aztán az átlátszó objektumokat kell hátulról előre haladva összekeverni a háttérben lévő alakzatok pixel értékeivel Tetszőleges sorrendben való összekeverés esetén súlyos artifaktumokat kaphatunk A művelet sorrendfüggő vagyis feltételezi, hogy a háttérben lévő tárgyak már a színpufferben vannak Speciális esetben, amikor két átlátszó tárgy van megjelenítve és mind a kettő alfa értéke 0.5, akkor a keveredésnél nem számít a sorrend 101 / 84
102 Átlátszóság Amennyiben a rendezés nem lehetséges vagy csak részben lett végrehajtva Legjobb a Z-puffer használata A z-mélység írását kikapcsolva az átlátszó objektum esetén Az összes átlátszó objektum legalább meg fog jelenni Más technikák Hátsó oldalak eldobásának kikapcsolása Az átlátszó poligonok kétszeri renderelésével és a mélység tesztelést valamint a Z-puffer írásának az engedélyezését váltogatva 102 / 84
103 Átlátszóság Ki lehet számítani több menetben, két vagy több mélységpuffer használatával (mélység hámozás) Első megjelenítési menetben a nem átlátszó felületek z-mélység értékeit helyezzük el az első Z-pufferben Ezután az átlátszó objektumokat rendereljük le A második menetben a mélység tesztet úgy módosítjuk, hogy elfogadjuk azt a felületet, amely az első pufferben lévő z-mélység értéknél közelebb van és az átlátszó objektumok közül pedig a legtávolabb van A legtávolabbi átlátszó objektum bekerül a színpufferbe a mélység értéke pedig a második Z-pufferbe Ezt a puffert aztán arra használjuk, hogy a következő legközelebbi átlátszó felületet határozzuk meg a következő menetben és így tovább 103 / 84
104 Köd 104 / 84
105 Köd A ködöt több céllal is lehet használni A külső tér realisztikusabb megjelenítés szintjének a növelése Mivel a köd hatása a nézőponttól távolodva növekszik, ezért ez segít meghatározni, hogy milyen távol találhatóak az objektumok Ha megfelelően használjuk, akkor ez segít a távoli vágósík hatásának az elrejtésében A köd gyakran hardveresen van megvalósítva, így egy elhanyagolható plusz költséggel lehet azt használni. 105 / 84
106 Köd c p végső pixel szín értékének meghatározása c p = f c s + (1 f )c f c f A köd színe f 0, 1 A köd együtthatója c s Az árnyalt oldal színe Ahogy f értéke csökken, a köd hatása növekszik Különböző egyenleteket használhatunk a f megadására 106 / 84
107 Köd Lineáris köd Egy köd konstans Lineárisan csökken a nézőponttól távolodva Hol kezdődik és hol végződik a köd a néző z-tengelye mentén? f = z end z p z end z start z p az a z érték, ahol a köd hatását kell meghatározni 107 / 84
108 Köd Exponenciális és négyzetes exponenciális köd f ködegyüttható f = e d f z p, f = e ( d f z p) 2 d f A köd sűrűségét vezérli A kapott értéket a [0, 1] intervallumra csonkoljuk és a köd egyenletét használjuk a végső érték kiszámításához c p = f c s + (1 f )c f 108 / 84
109 Köd Néha táblázatokat használnak a ködfüggvény hardveres megvalósítása esetén Minden mélységre egy f ködegyütthatót előre kiszámítanak és eltárolnak. Kiolvassák a táblázatból (vagy lineáris interpolációval határozzák meg két szomszédos tábla elemből) Bármilyen értéket el lehet helyezni a köd táblázatban, nem csak az iménti egyenletekben megadottakat 109 / 84
110 Köd A ködfüggvényeket alkalmazni lehet vertex vagy pixel szinten Vertex-szintű A köd hatása a megvilágítási egyenlet részeként lesz kiszámítva és a kiszámított szín értéket interpolálja a poligonon keresztül Gouraud árnyalást használva Pixel-szintű A pixelenként tárolt mélység értéket használva számítjuk ki A pixel-szintű köd jobb eredményt ad 110 / 84
111 Összefoglalás Témakörök Megvilágítás Fényforrások és anyagi tulajdonságok Árnyalás Megvilágítási számítások Megvilágítási modell Cg példaprogramok Átlátszóság Köd 111 / 84
x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?
. Mi az (x, y) koordinátákkal megadott pont elforgatás uténi két koordinátája, ha α szöggel forgatunk az origó körül? x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs
4. gyakorlat: interpolációs és approximációs görbék implementációja
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar A számítógépes grafika alapjai kurzus, gyakorlati anyagok Benedek Csaba 4. gyakorlat: interpolációs és approximációs görbék implementációja
Láthatósági kérdések
Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok
Grafikus csővezeték és az OpenGL függvénykönyvtár
Grafikus csővezeték és az OpenGL függvénykönyvtár 1 / 32 A grafikus csővezeték 3D-s színtér objektumainak leírása primitívekkel: pontok, élek, poligonok. Primitívek szögpontjait vertexeknek nevezzük Adott
Hajder Levente 2017/2018. II. félév
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2017/2018. II. félév Tartalom 1 A fény elektromágneses hullám Az anyagokat olyan színűnek látjuk, amilyen színű fényt visszavernek
Tartalom. Tartalom. Anyagok Fényforrás modellek. Hajder Levente Fényvisszaverési modellek. Színmodellek. 2017/2018. II.
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2017/2018. II. félév 1 A fény elektromágneses hullám Az anyagokat olyan színűnek látjuk, amilyen színű fényt visszavernek
Számítógépes Graka - 4. Gyak
Számítógépes Graka - 4. Gyak Jámbori András andras.jambori@gmail.com 2012.03.01 Jámbori András andras.jambori@gmail.com Számítógépes Graka - 4. Gyak 1/17 Emlékeztet A múlt órákon tárgyaltuk: WinAPI programozás
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése
(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.
Testmodellezés Testmodellezés (Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja. A tervezés (modellezés) során megadjuk a objektum geometria
SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés
Felületmegjelenítés Megjelenítés paramétervonalakkal Drótvázas megjelenítés Megjelenítés takarással Triviális hátsólap eldobás A z-puffer algoritmus Megvilágítás és árnyalás Megjelenítés paramétervonalakkal
Máté: Számítógépes grafika alapjai
Világító tárgyak Környezeti fény Szórt visszaverődés Környezeti fény és diffúz visszaverődés együtt Tükröző visszaverődés fényességének meghatározása Gouraud-féle fényesség Phong-féle fényesség a. Világító
Realisztikus színtér 1 / 59
Realisztikus színtér 1 / 59 Környezet leképezés 2 / 59 Környezet leképezés Hatékony módszer görbe felületeken való tükröződés megjelenítésére Egy sugarat indít a nézőpontból a tükröződő objektum egy pontjába
Textúrák. Szécsi László
Textúrák Szécsi László Textúra interpretációk kép a memóriában ugyanolyan mint a frame buffer pixel helyett texel adatok tömbje 1D, 2D, 3D tömb pl. RGB rekordok függvény diszkrét mintapontjai rácson rekonstrukció:
Hajder Levente 2018/2019. II. félév
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2018/2019. II. félév Tartalom 1 2 Törtvonal Felületi folytonosságok B-spline Spline variánsok Felosztott (subdivision) görbék
Transzformációk. Szécsi László
Transzformációk Szécsi László A feladat Adott a 3D modell háromszögek csúcspontjai [modellezési koordináták] Háromszögkitöltő algoritmus pixeleket színez be [viewport koordináták] A feladat: számítsuk
Transzformációk. Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform
Transzformációk Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform Koordinátarendszerek: modelltér Koordinátarendszerek: világtér Koordinátarendszerek: kameratér up right z eye ahead
A bemutatott példa a Phong modell egy egyszerűsített változatát alkalmazza a Blinn-Phong-féle megközelítést
Dr. Mileff Péter 2 Pontosabb vertex shader alapú árnyalás Phong-féle Cél: A korábbi modelltől komplexebb árnyalási modell áttekintése és megvalósítása, ahol már felhasználjuk a felület anyagtulajdonságait
1. Bevezetés 1. Köszönetnyilvánítás 1. 2. A számítógépes játékfejlesztésről 3
1. Bevezetés 1 Köszönetnyilvánítás 1 2. A számítógépes játékfejlesztésről 3 2.1. Néhány tanács játékfejlesztőknek 3 2.2. Hogyan fogjunk saját játék írásához? 4 2.3. A számítógépes játék főbb elemei 9 3.
Termék modell. Definíció:
Definíció: Termék modell Összetett, többfunkciós, integrált modell (számítógépes reprezentáció) amely leír egy műszaki objektumot annak különböző életfázis szakaszaiban: tervezés, gyártás, szerelés, szervízelés,
Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)
Grafikus primitívek kitöltése Téglalap kitöltése Poligon kitöltése Kör, ellipszis kitöltése Kitöltés mintával Grafikus primitívek kitöltése Területi primitívek: Zárt görbék által határolt területek (pl.
Görbe- és felületmodellezés. Szplájnok Felületmodellezés
Görbe- és felületmodellezés Szplájnok Felületmodellezés Spline (szplájn) Spline: Szakaszosan, parametrikus polinomokkal leírt görbe A spline nevét arról a rugalmasan hajlítható vonalzóról kapta, melyet
Számítógépes Grafika SZIE YMÉK
Számítógépes Grafika SZIE YMÉK Analóg - digitális Analóg: a jel értelmezési tartománya (idő), és az értékkészletes is folytonos (pl. hang, fény) Diszkrét idejű: az értelmezési tartomány diszkrét (pl. a
2012.11.27. Maga a tématerület így nagyon nagy. A fények pontos fizikai szimulációja kimondottan számításigényes
Fények a számítógépes grafikában Dr. Mileff Péter A fények és árnyékok területe különösen frekventált terület a számítógépes vizualizációban. Az utóbbi években ez tovább fokozódott Oka a hardver folyamatos
Készítette: niethammer@freemail.hu
VLogo VRML generáló program Készítette: Niethammer Zoltán niethammer@freemail.hu 2008 Bevezetés A VLogo az általános iskolákban használt Comenius Logo logikájára épülő programozási nyelv. A végeredmény
3D koordináta-rendszerek
3D koordináta-rendszerek z z y x y x y balkezes bal-sodrású x jobbkezes jobb-sodrású z 3D transzformációk - homogén koordináták (x, y, z) megadása homogén koordinátákkal: (x, y, z, 1) (x, y, z, w) = (x,
Grafikus csővezeték 1 / 44
Grafikus csővezeték 1 / 44 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve Raszterizálás
Sugárkövetési algoritmusok (2. rész)
Sugárkövetési algoritmusok (2. rész) Ismét jelentkezik a sugarak szerelmeseinek szóló cikkünk, melyben tovább folytatjuk a fények birodalmában megkezdett utazásunkat. A fénysugarak rekurzív követésével
Felügyelt önálló tanulás - Analízis III.
Felügyelt önálló tanulás - Analízis III Kormos Máté Differenciálható sokaságok Sokaságok Röviden, sokaságoknak nevezzük azokat az objektumokat, amelyek egy n dimenziós térben lokálisan k dimenziósak Definíció:
Geometriai modellezés. Szécsi László
Geometriai modellezés Szécsi László Adatáramlás vezérlés Animáció világleírás Modellezés kamera Virtuális világ kép Képszintézis A modellezés részfeladatai Geometria megadása [1. előadás] pont, görbe,
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Infomáció megjelenítés Számítógépes ábázolás D. Iványi Péte Megvilágítás, ányékolás Realisztikus képhez ányékolás kell Modellezés összetett nagy számítási igenyű Megvilágítás, ányékolás OpenGL egyszeűsített
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás Önálló projektek - 2017. április 7. http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr.
Számítógépes Grafika mintafeladatok
Számítógépes Grafika mintafeladatok Feladat: Forgassunk a 3D-s pontokat 45 fokkal a X tengely körül, majd nyújtsuk az eredményt minden koordinátájában kétszeresére az origóhoz képest, utána forgassunk
2014/2015. tavaszi félév
Hajder L. és Valasek G. hajder.levente@sztaki.mta.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2014/2015. tavaszi félév Tartalom Geometria modellezés 1 Geometria modellezés 2 Geometria modellezés
Plakátok, részecskerendszerek. Szécsi László
Plakátok, részecskerendszerek Szécsi László Képalapú festés Montázs: képet képekből 2D grafika jellemző eszköze modell: kép [sprite] 3D 2D képével helyettesítsük a komplex geometriát Image-based rendering
Összeállította: dr. Leitold Adrien egyetemi docens
Az R 3 tér geometriája Összeállította: dr. Leitold Adrien egyetemi docens 2008.09.08. 1 Vektorok Vektor: irányított szakasz Jel.: a, a, a, AB, Jellemzői: irány, hosszúság, (abszolút érték) jel.: a Speciális
Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon
Bevezetés Ütközés detektálás Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel Az objektumok áthaladnak a többi objektumon A valósághű megjelenítés része Nem tisztán
A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014 Benedek Csaba A vizsga menete: a vizsgázó egy A illetve egy
Algoritmusok raszteres grafikához
Algoritmusok raszteres grafikához Egyenes rajzolása Kör rajzolása Ellipszis rajzolása Algoritmusok raszteres grafikához Feladat: Grafikai primitíveket (pl. vonalat, síkidomot) ábrázolni kép-mátrixszal,
Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében
Infobionika ROBOTIKA X. Előadás Robot manipulátorok II. Direkt és inverz kinematika Készült a HEFOP-3.3.1-P.-2004-06-0018/1.0 projekt keretében Tartalom Direkt kinematikai probléma Denavit-Hartenberg konvenció
2. Generáció (1999-2000) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely tremere@elte.hu
1. Generáció Számítógépes Grafika Klár Gergely tremere@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2010/2011. őszi félév NVIDIA TNT2, ATI Rage, 3dfx Voodoo3 A standard 2d-s videokártyák kiegészítése
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás ek - 2019. április 2. http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr. Salvi Péter BME,
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter (adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex; glcolor3f(0, 0.5, 0); glvertex2i(11, 31); glvertex2i(37, 71); glcolor3f(0.5, 0,
Árnyalás, env mapping. Szécsi László 3D Grafikus Rendszerek 3. labor
Árnyalás, env mapping Szécsi László 3D Grafikus Rendszerek 3. labor Egyszerű árnyaló FS legyen egy fényirány-vektor normálvektor és fényirány közötti szög koszinusza az irradiancia textúrából olvasott
17. előadás: Vektorok a térben
17. előadás: Vektorok a térben Szabó Szilárd A vektor fogalma A mai előadásban n 1 tetszőleges egész szám lehet, de az egyszerűség kedvéért a képletek az n = 2 esetben szerepelnek. Vektorok: rendezett
Máté: Számítógépes grafika alapjai
LÁTHATÓ FELÜLETEK MEGHATÁROZÁSA LÁTHATÓ FELÜLETEK MEGHATÁROZÁSA szolgáló általános algoritmusok Látható felszín algoritmusok Adott 3D tárgyak egy halmaza, és egy projekció specifikációja. Mely vonalak
Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)
Grafikus primitívek kitöltése Téglalap kitöltése Poligon kitöltése Kör, ellipszis kitöltése Kitöltés mintával Grafikus primitívek kitöltése Területi primitívek: Zárt görbék által határolt területek (pl.
Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)
Grafikus primitívek kitöltése Téglalap kitöltése Kör, ellipszis kitöltése Kitöltés mintával Grafikus primitívek kitöltése A tertületi primitívek zárt görbével határolt területek, amelyeket megjelníthetünk
Koordináta-geometria feladatok (emelt szint)
Koordináta-geometria feladatok (emelt szint) 1. (ESZÉV Minta (2) 2004.05/7) Egy ABC háromszögben CAB = 30, az ACB = 45. A háromszög két csúcsának koordinátái: A(2; 2) és C(4; 2). Határozza meg a harmadik
KOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA, MATEmATIkA I 16 XVI A DIFFERENCIÁLSZÁmÍTÁS ALkALmAZÁSAI 1 Érintő ÉS NORmÁLIS EGYENES, L HOSPITAL-SZAbÁLY Az görbe abszcisszájú pontjához tartozó érintőjének egyenlete (1), normálisának egyenlete
Robotika. Kinematika. Magyar Attila
Robotika Kinematika Magyar Attila amagyar@almos.vein.hu Miről lesz szó? Bevezetés Merev test pozíciója és orientációja Rotáció Euler szögek Homogén transzformációk Direkt kinematika Nyílt kinematikai lánc
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
Klár Gergely 2010/2011. tavaszi félév
Számítógépes Grafika Klár Gergely tremere@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2010/2011. tavaszi félév Tartalom Pont 1 Pont 2 3 4 5 Tartalom Pont Descartes-koordináták Homogén koordináták
Geometria 1 normál szint
Geometria 1 normál szint Naszódi Márton nmarci@math.elte.hu www.math.elte.hu/ nmarci ELTE TTK Geometriai Tsz. Budapest Geometria 1 p.1/4 Vizsga 1 Írásban, 90 perc. 2 Személyazonosságot igazoló okmány nélkül
Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline
Direct3D pipeline Grafikus játékok fejlesztése Szécsi László 2013.02.12. t03-pipeline RESOURCES PIPELINE STAGES RENDER STATES Vertex buffer Instance buffer Constant buffers and textures Index buffer Constant
Lengyelné Dr. Szilágyi Szilvia április 7.
ME, Anaĺızis Tanszék 2010. április 7. , alapfogalmak 2.1. Definíció A H 1, H 2,..., H n R (ahol n 2 egész szám) nemüres valós számhalmazok H 1 H 2... H n Descartes-szorzatán a következő halmazt értjük:
Vektorok és koordinátageometria
Vektorok és koordinátageometria Vektorral kapcsolatos alapfogalmak http://zanza.tv/matematika/geometria/vektorok-bevezetese Definíció: Ha egy szakasz két végpontját megkülönböztetjük egymástól oly módon,
Tartalom. Hajder Levente 2016/2017. I. félév
Tartalom Hajder Levente hajder.levente@sztaki.mta.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2016/2017. I. félév 1 Tartalom Motiváció 2 Grafikus szerelőszalag Modellezési transzformácó Nézeti transzformácó
LOCAFI+ 4. Analítikus módszer és ellenőrzés. Lokális tűznek kitett függőleges acélelem hőmérséklet vizsgálata, disszemináció. Szerződésszám n
Acélszerkezetek tűzvédelmi tervezése workshop Dr. Jármai Károly Miskolci Egyetem LOCAFI+ Lokális tűznek kitett függőleges acélelem hőmérséklet vizsgálata, disszemináció Szerződésszám n 754072 4. Analítikus
A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását.
11. Geometriai elemek 883 11.3. Vonallánc A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását. A vonallánc egy olyan alapelem, amely szakaszok láncolatából áll. A sokszög
Éldetektálás, szegmentálás (folytatás) Orvosi képdiagnosztika 11_2 ea
Éldetektálás, szegmentálás (folytatás) Orvosi képdiagnosztika 11_2 ea Geometrikus deformálható modellek Görbe evolúció Level set módszer A görbe evolúció parametrizálástól független mindössze geometriai
Grafikus csővezeték 2 / 77
Bevezetés 1 / 77 Grafikus csővezeték 2 / 77 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve
Feladatok a Gazdasági matematika II. tárgy gyakorlataihoz
Debreceni Egyetem Közgazdaságtudományi Kar Feladatok a Gazdasági matematika II tárgy gyakorlataihoz a megoldásra ajánlott feladatokat jelöli e feladatokat a félév végére megoldottnak tekintjük a nehezebb
Matematika A1a Analízis
B U D A P E S T I M Ű S Z A K I M A T E M A T I K A É S G A Z D A S Á G T U D O M Á N Y I I N T É Z E T E G Y E T E M Matematika A1a Analízis BMETE90AX00 Vektorok StKis, EIC 2019-02-12 Wettl Ferenc ALGEBRA
Renderelés megjelenésmódok, fények, anyagjellemzők
Építész-informatika 2 Előadási anyag BME Építészmérnöki kar Építészeti Ábrázolás Tanszék Renderelés megjelenésmódok, fények, anyagjellemzők BMEEPAGA401 Építész-informatika 2 6. előadás Strommer László
A II. kategória Fizika OKTV mérési feladatainak megoldása
Nyomaték (x 0 Nm) O k t a t á si Hivatal A II. kategória Fizika OKTV mérési feladatainak megoldása./ A mágnes-gyűrűket a feladatban meghatározott sorrendbe és helyre rögzítve az alábbi táblázatban feltüntetett
Matematika A2 vizsga mgeoldása június 4.
Matematika A vizsga mgeoldása 03. június.. (a (3 pont Definiálja az f(x, y függvény határértékét az (x 0, y 0 helyen! Megoldás: Legyen D R, f : D R. Legyen az f(x, y függvény értelmezve az (x 0, y 0 pont
Hajder Levente 2016/2017.
Hajder Levente hajder.levente@sztaki.mta.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2016/2017. Tartalom 1 Tartalom Motiváció 2 Grafikus szerelőszalag Áttekintés Modellezési transzformácó Nézeti
Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem
Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem Direct3D, DirectX o Csak Microsoft platformon OpenGL o Silicon Graphics: IRIS GL (zárt kód) o OpenGL (1992) o Nyílt
Mechatronika segédlet 3. gyakorlat
Mechatronika segédlet 3. gyakorlat 2017. február 20. Tartalom Vadai Gergely, Faragó Dénes Feladatleírás... 2 Fogaskerék... 2 Nézetváltás 3D modellezéshez... 2 Könnyítés megvalósítása... 2 A fogaskerék
Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei
Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. MATLAB alapismeretek VII. Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei Alkalmazott Informatikai
Klár Gergely 2010/2011. tavaszi félév
Számítógépes Grafika Klár Gergely tremere@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2010/2011. tavaszi félév Tartalom Generációk Shader Model 3.0 (és korábban) Shader Model 4.0 Shader Model
1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.
Számítás:. Olvassuk be két pont koordinátáit: (, y) és (2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki. 2. Olvassuk be két darab két dimenziós vektor komponenseit: (a, ay) és (b, by). Határozzuk
Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2018/2019. I. félév Emlékeztető Múlt órán megismerkedtünk a sugárkövetéssel Előnyei: A színtér benépesítésére minden használható,
Tárgy. Forgóasztal. Lézer. Kamera 3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL
3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL. Bevezetés A lézeres letapogatás a ma elérhet legpontosabb 3D-s rekonstrukciót teszi lehet vé. Alapelve roppant egyszer : egy lézeres csíkkal megvilágítjuk a tárgyat.
A gradiens törésmutatójú közeg I.
10. Előadás A gradiens törésmutatójú közeg I. Az ugrásszerű törésmutató változással szemben a TracePro-ban lehetőség van folytonosan változó törésmutatójú közeg definiálására. Ilyen érdekes típusú közegek
Matematika (mesterképzés)
Matematika (mesterképzés) Környezet- és Településmérnököknek Debreceni Egyetem Műszaki Kar, Műszaki Alaptárgyi Tanszék Vinczéné Varga A. Környezet- és Településmérnököknek 2016/2017/I 1 / 29 Lineáris tér,
Megoldás: Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7
A = {1; 3; 5; 7; 9} A B = {3; 5; 7} A/B = {1; 9} Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7 Azonos alapú hatványokat
Hajder Levente 2017/2018. II. félév
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2017/2018. II. félév Tartalom 1 Sugár és sík metszéspontja Sugár és háromszög metszéspontja Sugár és poligon metszéspontja
Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.
Matematika 11 Koordináta geometria Juhász László matematika és fizika szakos középiskolai tanár > o < 2015. szeptember 27. copyright: c Juhász László Ennek a könyvnek a használatát szerzői jog védi. A
Feladatsor A differenciálgeometria alapja c. kurzus gyakorlatához
Feladatsor A differenciálgeometria alapja c. kurzus gyakorlatához Dr. Nagy Gábor, Geometria Tanszék 2010. szeptember 16. Görbék paraméterezése 1. feladat. (A) Bizonyítsuk be a vektoriális szorzatra vonatkozó
Számítógépes geometria (mester kurzus) III
2010 sz, Debreceni Egyetem Felületek A felület megadása implicit: F : R 3 R, F (x, y, z) = 0 Euler-Monge: f : [a, b] [c, d] R, z = f (x, y) paraméteres: r : [a, b] [c, d] R 3 trianguláris háló direkt megadása
Hajder Levente 2018/2019. II. félév
Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2018/2019. II. félév Tartalom 1 2 3 4 5 Albrecht Dürer, 1525 Motiváció Tekintsünk minden pixelre úgy, mint egy kis ablakra
F2. OpenGL grafika. Vertex szintű művelet Raszteriz. Pixelművelet. Textúra. F2.1. ábra A megjelenítési cső
F2. OpenGL grafika Az OpenGL hardverfüggetlen programozási felületet biztosító háromdimenziós grafikus alprogramrendszer, melyet a Silicon Graphics Inc. fejlesztett ki Unix alapú hálózatban működő számítógépekre.
Numerikus integrálás
Közelítő és szimbolikus számítások 11. gyakorlat Numerikus integrálás Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor Vinkó Tamás London András Deák Gábor jegyzetei alapján 1. Határozatlan integrál
1. tétel. 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója 7 cm. Mekkora a háromszög átfogója? (4 pont)
1. tétel 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója cm. Mekkora a háromszög átfogója? (4 pont). Adott az ábrán két vektor. Rajzolja meg a b, a b és az a b vektorokat! (6 pont)
Hajder Levente 2014/2015. tavaszi félév
Hajder Levente hajder.levente@sztaki.mta.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2014/2015. tavaszi félév Tartalom 1 2 3 4 5 Albrecht Dürer, 1525 Motiváció Tekintsünk minden pixelre úgy, mint
Matematika szigorlat június 17. Neptun kód:
Név Matematika szigorlat 014. június 17. Neptun kód: 1.. 3. 4. 5. Elm. Fel. Össz. Oszt. Az eredményes szigorlat feltétele elméletből legalább 0 pont, feladatokból pedig legalább 30 pont elérése. A szigorlat
A szimplex algoritmus
A szimplex algoritmus Ismétlés: reprezentációs tétel, az optimális megoldás és az extrém pontok kapcsolata Alapfogalmak: bázisok, bázismegoldások, megengedett bázismegoldások, degenerált bázismegoldás
Tartalom. Megjegyzések. Valasek Gábor Befoglaló keretek. Felosztások. Informatikai Kar
Tartalom Számítógépes Grafika Valasek Gábor valasek@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2015/2016. őszi félév Rekurzív sugárkövetés Megjegyzések Sugárkövetés gyorsítása Befoglaló
4. Felületek Forgásfelületek. Felületek 1. Legyen adott egy paramétersíkbeli T tartomány. A paramétersíkot az u és v koordinátatengelyekkel
Felületek 1 4. Felületek Legyen adott egy paramétersíkbeli T tartomány. A paramétersíkot az u és v koordinátatengelyekkel adjuk meg. Ekkor egy F felületet az (u, v) r(u, v), (u, v) T kétváltozós vektor-vektor
2D képszintézis. Szirmay-Kalos László
2D képszintézis Szirmay-Kalos László 2D képszintézis Modell szín (200, 200) Kép Kamera ablak (window) viewport Unit=pixel Saját színnel rajzolás Világ koordinátarendszer Pixel vezérelt megközelítés: Tartalmazás
Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]
Inkrementális képsintéis Inkrementális 3D képsintéis Sirma-Kalos Lásló Árnalás, láthatóság nehé, különösen általános heletu objektumokra koherencia: oldjuk meg nagobb egségekre feleslegesen ne sámoljunk:
9. előadás. Térbeli koordinátageometria
9. előadás Térbeli koordinátageometria Koordinátageometria a térben Descartes-féle koordinátarendszerben dolgozunk. A legegyszerűbb alakzatokat fogjuk vizsgálni. Az ezeket leíró egyenletek első-, vagy
Komputeralgebra rendszerek
Komputeralgebra rendszerek P L O T Czirbusz Sándor czirbusz@gmail.com Komputeralgebra Tanszék ELTE Informatika Kar 2009. október 12. Index I 1 Az alapok plot és plot3d Késleltetett megjelenítés Egyszerűbb
Máté: Számítógépes grafika alapjai
Tükröző (specular) visszaverődés Tükröző (specular) visszaverődés Fényes felületekről (tükörről) Phong-féle modell: I λ = I aλ k a + f att I pλ [ k d cos θ + W (θ) cos n α ] n: a tükrözési visszaverődés
Számítógépes Grafika mintafeladatok
Számítógépes Grafika mintafeladatok Feladat: Forgassunk a 3D-s pontokat 45 fokkal a X tengely körül, majd nyújtsuk az eredményt minden koordinátájában kétszeresére az origóhoz képest, utána forgassunk
HLSL programozás. Szécsi László
HLSL programozás Szécsi László RESOURCES PIPELINE STAGES RENDER STATES Vertex buffer Instance buffer Constant buffers and textures Index buffer Constant buffers and textures Output buffer Constant buffers
HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl
HLSL programozás Grafikus játékok fejlesztése Szécsi László 2013.02.16. t06-hlsl RESOURCES PIPELINE STAGES RENDER STATES Vertex buffer Instance buffer Constant buffers and textures Index buffer Constant
Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások
Megoldások 1. Határozd meg a szakasz hosszát, ha a végpontok koordinátái: A ( 1; ) és B (5; )! A szakasz hosszához számítsuk ki a két pont távolságát: d AB = AB = (5 ( 1)) + ( ) = 6 + 1 = 7 6,08.. Határozd
Osztályozóvizsga-tematika 8. évfolyam Matematika
Osztályozóvizsga-tematika 8. évfolyam Matematika 1. félév 1. Gondolkozz és számolj! A természetes szám fogalma, műveleti tulajdonságok Helyiértékek rendszere a tízes számrendszerben: alakiérték, tényleges