Máté: Számítógépes grafika alapjai

Hasonló dokumentumok
Máté: Számítógépes grafika alapjai

Látható felszín algoritmusok

Láthatósági kérdések

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Máté: Számítógépes grafika alapjai

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)

Máté: Számítógépes grafika alapjai

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Számítógépes Grafika mintafeladatok

Transzformációk. Szécsi László

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?

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

3D koordináta-rendszerek

Transzformációk, amelyek n-dimenziós objektumokat kisebb dimenziós terekbe visznek át. Pl. 3D 2D

Középpontos hasonlóság szerkesztések

VEKTOROK. 1. B Legyen a( 3; 2; 4), b( 2; 1; 2), c(3; 4; 5), d(8; 5; 7). (a) 2a 4c + 6d [(30; 10; 30)]

Cohen-Sutherland vágóalgoritmus

Forgáshenger normálisának és érintősíkjának megszerkesztése II/1

Koordináta-geometria feladatok (emelt szint)

Máté: Számítógépes grafika alapjai

Segédlet: Főfeszültségek meghatározása Mohr-féle feszültségi körök alkalmazásával

9. Írjuk fel annak a síknak az egyenletét, amely átmegy az M 0(1, 2, 3) ponton és. egyenessel;

Síklapú testek. Gúlák, hasábok Metszésük egyenessel, síkkal

Termék modell. Definíció:

Geometria 1 normál szint

Klár Gergely 2010/2011. tavaszi félév

Koordináta-geometria feladatgyűjtemény

Hajder Levente 2016/2017.

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

Hajder Levente 2018/2019. II. félév

A tér lineáris leképezései síkra

Hajder Levente 2014/2015. tavaszi félév

9. előadás. Térbeli koordinátageometria

1. Fénysugár követő és festő algoritmus (3p) fénysugárkövető módszer Festő algoritmus: 2. Fények, fény, fény az opengl-ben, anyagtulajdonság (12pt)

λ 1 u 1 + λ 2 v 1 + λ 3 w 1 = 0 λ 1 u 2 + λ 2 v 2 + λ 3 w 2 = 0 λ 1 u 3 + λ 2 v 3 + λ 3 w 3 = 0

Algoritmusok raszteres grafikához

egyenletrendszert. Az egyenlő együtthatók módszerét alkalmazhatjuk. sin 2 x = 1 és cosy = 0.

Koordináta geometria III.

Összeállította: dr. Leitold Adrien egyetemi docens

Helyvektorok, műveletek, vektorok a koordináta-rendszerben

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

5 1 6 (2x3 + 4) 7. 4 ( ctg(4x + 2)) + c = 3 4 ctg(4x + 2) + c ] 12 (2x6 + 9) 20 ln(5x4 + 17) + c ch(8x) 20 ln 5x c = 11

Tartalom. Hajder Levente 2016/2017. I. félév

Térbeli transzformációk, a tér leképezése síkra

Hajder Levente 2017/2018. II. félév

3. előadás. Elemi geometria Terület, térfogat

KOVÁCS BÉLA, MATEMATIKA I.

Ferde kúp ellipszis metszete

Skaláris szorzat: a b cos, ahol α a két vektor által bezárt szög.

Matematika A1a Analízis

Az egyenes és a sík analitikus geometriája

Koordináta-geometria feladatgyűjtemény (A feladatok megoldásai a dokumentum végén találhatók)

10. Koordinátageometria

= Y y 0. = Z z 0. u 1. = Z z 1 z 2 z 1. = Y y 1 y 2 y 1

Követelmény az 5. évfolyamon félévkor matematikából

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Lineáris algebra zárthelyi dolgozat javítókulcs, Informatika I márc.11. A csoport

Q 1 D Q 2 (D x) 2 (1.1)

Hajder Levente 2017/2018. II. félév

Tartalom. Tartalom. Anyagok Fényforrás modellek. Hajder Levente Fényvisszaverési modellek. Színmodellek. 2017/2018. II.

Egyenes mert nincs se kezdő se végpontja

Érettségi feladatok Koordinátageometria_rendszerezve / 5

Koordináta-geometria. Fogalom. Jelölés. Tulajdonságok, definíciók

I. Vektorok. Adott A (2; 5) és B ( - 3; 4) pontok. (ld. ábra) A két pont által meghatározott vektor:

Geometriai algoritmusok

Számítógépes geometria (mester kurzus) III

Vektorok összeadása, kivonása, szorzás számmal, koordináták

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Kocka perspektivikus ábrázolása. Bevezetés

Érettségi feladatok: Koordináta-geometria 1/5

A program a köröket és köríveket az óramutató járásával ellentétes irányban rajzolja meg.

Lineáris algebra mérnököknek

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]

Geometria 1 normál szint

2. Adott a valós számok halmazán értelmezett f ( x) 3. Oldja meg a [ π; π] zárt intervallumon a. A \ B = { } 2 pont. függvény.

Matematika szóbeli érettségi témakörök 2016/2017-es tanév őszi vizsgaidőszak

Számítógépes Grafika SZIE YMÉK

Koordinátageometria. , azaz ( ) a B halmazt pontosan azok a pontok alkotják, amelynek koordinátáira:

Differenciaegyenletek

Geometria. a. Alapfogalmak: pont, egyenes, vonal, sík, tér (Az alapfogalamakat nem definiáljuk)

Vektorgeometria (1) First Prev Next Last Go Back Full Screen Close Quit

8. előadás. Kúpszeletek

Hajder Levente 2017/2018. II. félév

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

Koordinátageometria. M veletek vektorokkal grakusan. Szent István Egyetem Gépészmérnöki Kar Matematika Tanszék 1

Számítási feladatok a Számítógépi geometria órához

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT. Koordináta-geometria

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Geometria III.

2014/2015. tavaszi félév

Követelmény a 6. évfolyamon félévkor matematikából

GEOMETRIA 1, alapszint

EGY ABLAK - GEOMETRIAI PROBLÉMA

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)

Koordináta-geometria feladatok (középszint)

Egy sík és a koordinátasíkok metszésvonalainak meghatározása

A keresett kör középpontja Ku ( ; v, ) a sugara r = 1. Az adott kör középpontjának koordinátái: K1( 4; 2)

Hasonlóság 10. évfolyam

Átírás:

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 és felületek lesznek láthatók? tók? Melyek lesznek takarva? Nehéz feladat (időigényes) Kétféle megközelítés: 1 2 LÁTHATÓ FELÜLETEK MEGHATÁROZÁSA LÁTHATÓ FELÜLETEK MEGHATÁROZÁSA 1. for minden képpontra do begin határozzuk meg azt a tárgyat, amelyet a nézőpontból a képponton keresztül húzott egyenes leghamarabb metsz; rajzoljuk ki a képpontot t a megfelelő színben end A szükséges idő: O(np) n: a tárgyak száma p: a képpontok száma 3 2. for minden tárgyra do begin határozzuk meg a tárgynak azokat a részeit, amelyek nincsenek takarásban saját maga vagy más tárgyak által; ezeket a részeket rajzoljuk ki a megfelelő színnel end A szükséges idő: O(n 2 ) 4 plotterrel y = f (x,z) Tegyük fel, hogy f-et egy m x n-es Y mátrixszal közelíthetjük. Drótvázas rajzot készíthetünk szakaszonként lineáris görbéket előállítva x és z irányban is. Keressünk olyan algoritmust, amely a takart vonalakat nem rajzolja ki. 5 6 01_bevez 1

1. Ha csaz x-tengellyel párhuzamos egyenesek menti értékeket kötjük össze: Haladjunk elölről hátra (a távolabbi vonalak irányába, csarra kell vigyázni, hogy a már megrajzolt látható felületeket ne "keresztezzük". Elegendő az eddig rajzolt vonalak "sziluettjét" őrizni: csaz látható az új vonalból, ami ez alatt vagy fölött van. Tároljuk minden törésponthoz az eddig rajzolt vonalak maximális és minimális y értékét (sziluett), és az új vonal y értékeinek megfelelően módosítsuk Horizont-vonal algoritmus 7 Ha az új vonal valamely szakaszának mindkét végpontja láthatatlan, akkor a szakasz sem látszik. A részlegesen takart szakaszoknál metszéspontot kell számolni. 8 A szakasz nem törésponttól töréspontig, hanem a sziluett töréspontjától töréspontjáig terjed! A sziluett töréspontjai sűrűsödnek! 9 10 2. Ha csa z-tengellyel párhuzamos egyenesek menti értékeket kötjük össze: hasonló algoritmus 11 12 01_bevez 2

Drótvázas rajz konstans x- és z-menti görbékből x-menti kép z-menti kép A két kép egymásra másolva A korrekt kép Nem lehet egyszerűen egymásra rakni a két képet 13 Először az x irányú vonalakat rajzoljuk meg közelről távolra haladva (mint korábban), de minden vonal megrajzolása után megrajzolju z irányú vonalakna két utolsó x irányú vonal közti szakaszait (mint korábban), ha látszanak. 14 A tárgyak takarják-e egymást? Mely tárgy látható? Pontokra: P 1 = (x 1, y 1, z 1 ) és P 2 = (x 2, y 2, z 2 ); Takarja-e egyi másikat? Ha ugyanazon a vetítési sugáron vannak, akkor a közelebbi takarja a másikat, különben nem. Nehéz probléma 15 Mélységbeli összehasonlítás Helye: a normalizálási transzformáció után, ekkor a.párhuzamos vetítésnél: a vetítési sugarak párhuzamosa z-tengellyel, ekkor P 1 és P 2 ugyanazon a vetítési sugáron van, ha x 1 = x 2 és y 1 = y 2 b.perspektív vetítésnél: a vetítési sugarak COV-ből indulnak ki, ekkor P 1 és P 2 ugyanazon a vetítési sugáron van, ha x 1 / z 1 = x 2 / z 2 és y 1 / z 1 = y 2 / z 2 16 Perspektív vetítésnél azt a transzformációt használjuk, amely a perspektív kanonikus térfogatot átviszi párhuzamos kanonikus térfogatba perspektív párhuzamos kanonikus térfogat 17 Perspektív kanonikus térfogatot párhuzamos kanonikus térfogatba transzformáló mátrix: 1 0 0 0 0 1 0 0 M = 1 zmin, 0 0 z 1+ zmin 1+ z min 0 0 1 0 min 1 Ekkor a vetítési sugarak már párhuzamosa z-tengellyel. Egyszerűbb a láthatóság. 18 01_bevez 3

z Tárgyak kiterjedése, határoló téglalapok, testek y x Határoló-téglalap teszt Ha a határoló téglalapok nem fedik egymást, akkor a vetületek sem fedik egymást, különben további vizsgálat szükséges 19 1-dimenziós kiterjedés (határoló intervallum) minmax-teszt: A kiterjedés minimális és maximális értékeinek összehasonlításával döntjük el a takarást z min2 z max2 z min1 z max1 A kiterjedés meghatározása: a tárgy (csúcs)pontjaihoz tartozó koordináták min. és max. értékeiből z 2 1 20 x Hátra néző lapok kiválogatása Tegyük fel, hogy poligon határú síklapokkal határolt a tárgy, és adotta síklapokna tárgyból kifelé mutató normálisai. Ekkor azok a lapok nem láthatók, amelyek normálisai a "megfigyelőtől ellentétes irányba mutatnak z x 21 Projektív vetítés esetén: n : a poligon normálisa (n x,n y,n z ) v : COV-ből a poligon tetszőleges pontjába mutató vektor Ha n v < 0 előre néz > 0 hátra néz = 0 csaz éle látszik Az (x,y) síkra történő ortografikus vetítés esetén: n z < 0 hátra néz > 0 előre néz = 0 csaz éle látszik 22 LÁTHATÓ VONALAK MEGHATÁROZÁSA Robert-féle algoritmus Apple-féle algoritmus Megszakított vonalak 23 LÁTHATÓ VONALAK MEGHATÁROZÁSA Robert-féle algoritmus: Síklapokkal határolt konvex testek éleire 1. A hátrafelé néző lapok meghatározása 2. A hátrafelé néző lapok közös élei elhagyhatók (azok nem láthatók) 3. Minden megmaradt élt minden testtel összehasonlítunk (kiterjedés vizsgálattal sok test triviálisan kizárható) A fennmaradó esetek: Az élet egy test teljesen eltakarja Az élnek egy szakasza látszi test mögül Az élnek két szakasza látszi (konvex) test mögül 24 01_bevez 4

LÁTHATÓ VONALAK MEGHATÁROZÁSA Apple-féle algoritmus Az élek pontjaihoz hozzárendel egy egész számot a pontot takaró előre néző lapok számát (kvantitatív láthatatlanság) Apple-féle algoritmus A kvantitatív láthatatlanság számítása: ++, ha az él előre néző poligon mögé megy, --, ha az él előre néző poligon mögül jön ki. A kvantitatív láthatatlanság csakkor változik, ha az él egy un. kontúr vonal mögött halad. Kontúr vonal: előre és hátra néző lap közötti él. Az él akkor látszik, ha a kvantitatív láthatatlansága = 0 25 26 Apple-féle algoritmus Egymáson átható poliéderek nem megengedettek! Az algoritmus megvalósítása: 1. Válasszunk ki egy csúcspontot, határozzuk meg a kvantitatív láthatatlanságát (direkt módszer) 2. Haladjunz éleken, és közben módosítsu kvantitatív láthatatlansági értéket, 0 érték esetén rajzolunk 27 Apple-féle algoritmus A csúcspont kvantitatív láthatatlansága nem egyszerű: pl. a KJ él látszik, a KL nem! A K csúcspont látszik vagy nem? Az előre néző fölső lap K csúcsa látszik, tehát látszi KJ él is, de a KL élet tartalmazó hátra néző lap K csúcsa nem látszik (takarja a fölső lap), így a KL él sem látszik. 28 LÁTHATÓ VONALAK MEGHATÁROZÁSA A látható vonal algoritmusorra is használhatók, hogy a nem látható vonalak szaggatottak, pontozottak, halványabbak legyenek LÁTHATÓ VONALAK MEGHATÁROZÁSA Megszakított vonalak (a): minden vonal látszik (b): mintha minden vonalnak lenne egy takaró sávja, ami eltakarja a mögötte lévő részeket (c): csa látható vonalak látszanak 29 30 01_bevez 5

Megszakított vonalak Példák Az algoritmus az élek vetületének metszéspontja körül csa közelebbit rajzolja, a távolabbit megszakítja Algoritmus: Minden vonalhoz megkeressüz előtte levőket Csa látható szakaszokat őrizzük meg Ha minden metszésponttal végeztük, akkor rajzolunk. 31 32 Példák Példák 33 34 Térbeli partícionálás Észrevétel: nem minden tárgynak van minden vetítési sugárral metszéspontja (pl. távol vannak, más irány) osszuk fel (particionáljuk) a képernyőt Látható felszín algoritmusok 4 lehetőség egy poligon és egy téglalap alakú terület között: Meghatározzuk, hogy mely tárgyak vetülete van benne a megfelelő részben (partícióban) és csak azokkal keresünk metszéspontokat Tartalmazó poligon Metsző poligon Tartalmazott poligon Idegen poligon 35 36 01_bevez 6

Látható felszín algoritmusok Mikor dönthető el könnyen, hogy mi rajzolható? 1. Minden poligon idegen a területtől (háttér) 2. Egyetlen metsző vagy tartalmazott poligon (háttér + pásztázással poligon) 3. Egyetlen tartalmazó poligon (rajz a poligon színével) 4. Van olyan tartalmazó poligon, amelyi többi előtt van (rajz a poligon színével) Ez jó módszer, ha a tárgyak vetületei egyenletesen oszlanak el a teljes képernyőn, különben különböző méretű partíciókat érdemes készíteni: kisebb partíciót ott, ahol több tárgy vetülete van 37 38 Látható felszín algoritmusok Terület-osztó algoritmus látható felszín meghatározására: "oszd meg és uralkodj" Ha egy területen könnyen eldönthető, hogy melyik poligon jeleníthető meg, akkor azt rajzoljuk ki, különben osszuk fel a területet, és alkalmazzuz eljárást a rész területekre 39 Hierarchikus struktúrálkalmazása pl. épület 1. emelet 2. emelet 3. emelet 1. lakás 2. lakás Ha a vetítési sugár nem metszi az épületet, akkor az emeleteit és az emeletek lakásait sem (tehát nem kell vizsgálni azokat) 40 Látható felszín algoritmusok Z - buffer vagy mélység puffer algoritmus (kép alapú) Z-buffer algoritmus F : Z : kép-puffer (képpontok tárolására) kezdeti értéke: háttérszín mélység-puffer (minden pontban a megfelelő z érték), kezdeti értéke: z-max (hátsó vágási sík) Pásztázás közben F-be és Z-be bekerül az új pont, ha nincs messzebb, mint az eddigi z érték. 41 A hátsó vágási sí z = 0 42 01_bevez 7

Z-buffer algoritmus Z-buffer algoritmus Kép z-buffer 43 44 Z-buffer algoritmus Tulajdonságai: Nincs tárgyak rendezése, összehasonlítása, metszéspontok számítása Poligononként végezhető el, Nem csak poligonokra jó, Nagy helyigény, de lehet sávonként haladni, Könnyű implementálni, Könnyű egy újabb tárgy képét hozzávenni A z-értékek felhasználhatók terület és térfogat számításra Látható felszín (OpenGL) OpenGL-ben: a mélységi- vagy z-buffer algoritmus A mélységbeli összehasonlítást glenable (GL_DEPTH_TEST) // engedélyezi gldisable(gl_depth_test) DEPTH TEST) // tiltja 45 46 Sokszögek oldalai (OpenGL) Sokszögek oldalai (OpenGL) Sokszögek (első és hátsó) oldalai OpenGL-ben: Első és hátsó oldalak explicit megadása: glfrontface(glenum mode); mode: GL_CCW (alapértelmezés) l é t l é ) az az oldal lesz első oldal, amelyen a csúcspontokat az óramutató járásával ellenkező irányban adtuk meg, GL_CW az ellenkezője. void glpolygonmode(enum face, enum mode); face: GL_FRONT_AND_BACK, GL_FRONT, GL_BACK Megmondja, hogy a poligon mindkét, első vagy hátsó oldalát kell rajzolni mode: Megmondja, hogy GL_POINT csa poligon csúcsait, GL_LINE határvonalát kell kirajzolni, vagy GL_FILL ki is kell tölteni (alapértelmezés) 47 48 01_bevez 8

Sokszögek oldalai (OpenGL) A sokszög meghatározott oldalán letiltja a világítási, árnyalási és szín-számítási műveleteket (láthatatlan oldal) glcullface(glenum mode); mode: GL_FRONT, GL_BACK 3D geometriai formárótvázas megjelenítése (OpenGL) #include<glut.h> void glutwirecube(gldouble size); size : a kocka élhossza (a kocka középpontja az origóban lesz) A culling-ot glenable (GL_CULL_FACE) engedélyezhetjük illetve gldisable(gl_cull_face) tilthatjuk 49 50 3D geometriai formárótvázas megjelenítése (OpenGL) void glutwiresphere(gldouble radius, GLint slices, Glint stacks); radius: a gömb sugara, slices: a z-tengely körüli beosztások (hosszúsági körök) száma, stacks: a z-tengely menti beosztások (szélességi körök) száma A középpont az origóban lesz 3D geometriai formárótvázas megjelenítése (OpenGL) void glutwirecone(gldouble base, GLdouble height,glint slices, GLint stacks); base: a kúp alapjának sugara, height : a kúp magassága, slices: a z-tengely körüli beosztások száma, stacks : a z-tengely menti beosztások száma 51 52 3D geometriai formárótvázas megjelenítése (OpenGL) void glutwiretorus(gldouble innerradius,gldouble outerradius, GLint nsides, GLint rings); innerradius: a tórusz belső sugara, outerradius: a tórusz külső sugara, nsides: a radiális részek oldalainak száma, rings: a tórusz radiális beosztásainak száma. 53 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 Poligonokból álló felületek fényességének meghatározása Gouraud-féle fényesség Phong-féle fényesség 54 01_bevez 9

a. Világító tárgyak: Minden tárgynak saját intenzitású fénye van A megvilágítás egyenlete: I = k i k i - a tárgy saját fényénez intenzitása független a pont helyzetétől b. Környezeti (szórt - ambient) fény: Minden irányból egyenletes I = I a I a : környezeti fény intenzitása itá : a környezeti fény visszaverődési együtthatója (anyagtól függ), 0 1 55 56 c. Diffúz (diffuse) visszaverődés (Lambert-féle visszaverődés) Minden irányban ugyanannyi fényt ver vissza. A felület fényessége (I) függ a fényforrás iránya (L) és a felület normálisa (N) közötti szögtől: N, L egységvektorok I = I p cos Θ = I p ( N L ) I p : a pontforrás intenzitása : a szórt visszaverődés együtthatója (anyagtól függ), 0 1. 57 Környezeti fény (b) és diffúz visszaverődés (c) együtt: I = I a + I p ( N L ) Ha a fényforrás és a tárgy közötti távolságot (d L ) is figyelembe vesszük, akkor: I = I a +I p /d L2 ( N L ) = f att (gyengülési faktor) 58 Színes fény és felületek esetén a komponensekre: I R = I ar O dr + f att I pr O dr ( N L ) I G =... I B =... ahol O dr a tárgy szórt vörös komponense I pr a megvilágítás vörös komponens O dr visszaverődési hányad komponense... Általában: I λ = I aλ O dλ + f att I pλ O dλ ( N L ) ahol λ a hullámhossz 59 01_bevez 10