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

Hasonló dokumentumok
Geometria brute force tárolása

Valasek Gábor

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

Tartalom. Geometria közvetlen tárolása. Geometria tárolása - brute force. Valasek Gábor valasek@inf.elte.hu. Hermite interpoláció. Subdivision görbék

Geometriai modellezés. Szécsi László

TÉRINFORMATIKAI ALGORITMUSOK

Termék modell. Definíció:

TÉRINFORMATIKAI ALGORITMUSOK

3D-s számítógépes geometria és alakzatrekonstrukció

Valasek Gábor tavaszi félév

3D számítógépes geometria és alakzatrekonstrukció

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

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

Valasek Gábor tavaszi félév

Klár Gergely

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

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

Feladatok. Tervek alapján látvány terv készítése. Irodai munka Test modellezés. Létező objektum számítógépes modelljének elkészítése

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

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

Számítógépes Graka - 4. Gyak

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

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

TÉRINFORMATIKAI ÉS TÁVÉRZÉKELÉSI ALKALMAZÁSOK FEJLESZTÉSE

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)

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

GráfRajz fejlesztői dokumentáció

Számítógépes Grafika mintafeladatok

Plakátok, részecskerendszerek. Szécsi László

Adatszerkezetek 2. Dr. Iványi Péter

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

Mechatronika segédlet 3. gyakorlat

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?

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Tartalom. Tartalom. Hajder Levente Szakasz raszterizálása. 2017/2018. II. félév. Poligon raszterizáció.

2014/2015. tavaszi félév

Tartalom. Tartalom. Raycasting. Hajder Levente 2017/2018. II. félév. Raycasting. Raycasting. Sugár és háromszög metszéspontja

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

Hajder Levente 2016/2017.

22. GRÁFOK ÁBRÁZOLÁSA

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)

Mérnöki létesítmények geodéziája Mérnöki létesítmények valósághű modellezése, modellezési technikák, leíró nyelvek

A játékfejlesztés több területből áll. A kódolás csupán egy része a munkáknak.

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

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

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

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

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

3D koordináta-rendszerek

Struktúra nélküli adatszerkezetek

PÉLDATÁR BEGYAKORLÓ FELADAT TÉRBELI FELADAT MEGOLDÁSA VÉGESELEM- MÓDSZERREL

Robotika. Kinematika. Magyar Attila

Ütközések. Szécsi László

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

megjelenítés EDGED FACES átállítjuk a szegmensek számát 5x5x5-re

Mesh from file, OrthoCamera, PerspectiveCamera. Szécsi László 3D Grafikus Rendszerek 3. labor

Textúrák. Szécsi László

Mechatronika segédlet 1. gyakorlat

Cohen-Sutherland vágóalgoritmus

Síklapú testek. Gúlák, hasábok áthatása. Az előadás átdolgozott részleteket tartalmaz a következőkből: Gubis Katalin: Ábrázoló geometria

Koordináta-geometria feladatgyűjtemény

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Görbe- és felületmodellezés. Szplájnok Felületmodellezés

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

2D képszintézis. Szirmay-Kalos László

SDL_Universe SDL, C++, 3D szoftver renderelő

Látható felszín algoritmusok

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

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

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

Valasek Gábor

CodeCamp Döntő feladat

Számítógépes Grafika mintafeladatok

Érettségi feladatok Koordinátageometria_rendszerezve / 5

1. Munkalap. 1. Fejezze be az előrajzolás szerinti vonalfajták ábrázolását! Ügyeljen a vonalvastagságra!

Készítette:

Számítógépes grafika

OpenGL és a mátrixok

Algoritmusok és adatszerkezetek gyakorlat 07

BASH script programozás II. Vezérlési szerkezetek

* Az eszköztáron látható menüpontok közül csak a felsoroltak esetén használható a Ctrl.

3D számítógépes geometria és alakzatrekonstrukció

Bevezetés a CGI-be. 1. Történelem

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Adatszerkezetek II. 1. előadás

openbve objektumkészítés Leírás az objektumkészítéshez használható parancsokról

Programozás alapjai II. (7. ea) C++

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

Minimum követelmények matematika tantárgyból 11. évfolyamon

Számítógépes grafika

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

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

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Programozási technológia I. 1. beadandó feladatsor

7. Koordináta méréstechnika

A végeselem módszer alapjai. 2. Alapvető elemtípusok

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

Diszkrét matematika 2.

Átírás:

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 Virtuális világ tárolása 1 Virtuális világ tárolása 2 3 4

Virtuális világ tárolása - kérdések Hol táruljuk az adatokat? Mem. vagy HDD? Mire optimalizálunk? Rajzolás vagy szerkesztés? Milyen koordináta-rendszerben tároljuk őket? Világ vagy modell kr?

Virtuális világ tárolása - kérdések Hol táruljuk az adatokat? Mem. vagy HDD? Mire optimalizálunk? Rajzolás vagy szerkesztés? Milyen koordináta-rendszerben tároljuk őket? Világ vagy modell kr?

Virtuális világ tárolása - kérdések Hol táruljuk az adatokat? Mem. vagy HDD? Mire optimalizálunk? Rajzolás vagy szerkesztés? Milyen koordináta-rendszerben tároljuk őket? Világ vagy modell kr?

Tartalom Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet 1 Virtuális világ tárolása 2 Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet 3 4

Geometria brute force tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Legyenek a primitíveink poligonok. Legyünk lusták, és minden poligont tartsuk nyílván az összes csúcsával. Poligonokkal kapcsolatos feladatok: tárolás transzformálás szomszédsági lekérdezések

Geometria brute force tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Legyenek a primitíveink poligonok. Legyünk lusták, és minden poligont tartsuk nyílván az összes csúcsával. Poligonokkal kapcsolatos feladatok: tárolás transzformálás szomszédsági lekérdezések

Geometria brute force tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Legyenek a primitíveink poligonok. Legyünk lusták, és minden poligont tartsuk nyílván az összes csúcsával. Poligonokkal kapcsolatos feladatok: tárolás transzformálás szomszédsági lekérdezések

Geometria brute force tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet s t r u c t t r i a n g l e { f l o a t x1, y1, z1 ; f l o a t x2, y2, z2 ; f l o a t x3, y3, z3 ; } ;

A brute force tárolás elemzése Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Tárolás: ha vannak poligonoknak közös csúcsai, akkor ezeket többször tároljuk feleslegesen Ñ nem túl jó. Transzformálás: a közös csúcsokra annyiszor fogjuk el végezni a transzformációkat, ahányszor szerepelnek Ñ nem hatékony. Lekérdezések: fogalmunk sincs, ki kinek a szomszédja, csak az összes csúcs bejárásával tudunk eredményre jutni Ñ katasztrófa. Egyetlen előnye, hogy ennél egyszerűbben már nem is lehetne tárolni.

A brute force tárolás elemzése Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Tárolás: ha vannak poligonoknak közös csúcsai, akkor ezeket többször tároljuk feleslegesen Ñ nem túl jó. Transzformálás: a közös csúcsokra annyiszor fogjuk el végezni a transzformációkat, ahányszor szerepelnek Ñ nem hatékony. Lekérdezések: fogalmunk sincs, ki kinek a szomszédja, csak az összes csúcs bejárásával tudunk eredményre jutni Ñ katasztrófa. Egyetlen előnye, hogy ennél egyszerűbben már nem is lehetne tárolni.

A brute force tárolás elemzése Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Tárolás: ha vannak poligonoknak közös csúcsai, akkor ezeket többször tároljuk feleslegesen Ñ nem túl jó. Transzformálás: a közös csúcsokra annyiszor fogjuk el végezni a transzformációkat, ahányszor szerepelnek Ñ nem hatékony. Lekérdezések: fogalmunk sincs, ki kinek a szomszédja, csak az összes csúcs bejárásával tudunk eredményre jutni Ñ katasztrófa. Egyetlen előnye, hogy ennél egyszerűbben már nem is lehetne tárolni.

A brute force tárolás elemzése Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Tárolás: ha vannak poligonoknak közös csúcsai, akkor ezeket többször tároljuk feleslegesen Ñ nem túl jó. Transzformálás: a közös csúcsokra annyiszor fogjuk el végezni a transzformációkat, ahányszor szerepelnek Ñ nem hatékony. Lekérdezések: fogalmunk sincs, ki kinek a szomszédja, csak az összes csúcs bejárásával tudunk eredményre jutni Ñ katasztrófa. Egyetlen előnye, hogy ennél egyszerűbben már nem is lehetne tárolni.

Index buffer-ek Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Alapötlet: tároljunk minden csúcsot egyszer, egy nagy közös tömbben! A poligonok csak hivatkozzanak a csúcsok tömbjének elemeire. Ez az index buffer. Minden GPU támogatja.

Index buffer-ek Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Alapötlet: tároljunk minden csúcsot egyszer, egy nagy közös tömbben! A poligonok csak hivatkozzanak a csúcsok tömbjének elemeire. Ez az index buffer. Minden GPU támogatja.

Index buffer-ek Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Alapötlet: tároljunk minden csúcsot egyszer, egy nagy közös tömbben! A poligonok csak hivatkozzanak a csúcsok tömbjének elemeire. Ez az index buffer. Minden GPU támogatja.

Index buffer-ek Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Alapötlet: tároljunk minden csúcsot egyszer, egy nagy közös tömbben! A poligonok csak hivatkozzanak a csúcsok tömbjének elemeire. Ez az index buffer. Minden GPU támogatja.

Index buffer-ek Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet s t r u c t t r i a n g l e { unsigned i n t a, b, c ; } ; s t r u c t vec3 { f l o a t x, y, z ; } ; std : : vector <vec3> i n d e x B u f f e r ;

Példa Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Vegyünk egy N N db négyzetből álló rácsot! Mérete index buffer nélkül: 4 csúcs/négyzet, N N négyzet: 4N 2. Mérete index buffer-rel: összesen pn 1q pn 1q csúcs: pn 1q 2 N 2 2N 1. 4N 2 vs. N 2 2N 1 4N 2 N 2 2N 1 0 3N 2 2N 1 N 1, ha N P Z

Példa Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Vegyünk egy N N db négyzetből álló rácsot! Mérete index buffer nélkül: 4 csúcs/négyzet, N N négyzet: 4N 2. Mérete index buffer-rel: összesen pn 1q pn 1q csúcs: pn 1q 2 N 2 2N 1. 4N 2 vs. N 2 2N 1 4N 2 N 2 2N 1 0 3N 2 2N 1 N 1, ha N P Z

Példa Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Vegyünk egy N N db négyzetből álló rácsot! Mérete index buffer nélkül: 4 csúcs/négyzet, N N négyzet: 4N 2. Mérete index buffer-rel: összesen pn 1q pn 1q csúcs: pn 1q 2 N 2 2N 1. 4N 2 vs. N 2 2N 1 4N 2 N 2 2N 1 0 3N 2 2N 1 N 1, ha N P Z

Példa Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Vegyünk egy N N db négyzetből álló rácsot! Mérete index buffer nélkül: 4 csúcs/négyzet, N N négyzet: 4N 2. Mérete index buffer-rel: összesen pn 1q pn 1q csúcs: pn 1q 2 N 2 2N 1. 4N 2 vs. N 2 2N 1 4N 2 N 2 2N 1 0 3N 2 2N 1 N 1, ha N P Z

Példa folyt. Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha több mint egyetlen négyzetünk van, már megéri. Pl. ha N 10 Mérete index buffer nélkül: 400 csúcsot tárolunk és transzformálunk Mérete index buffer-rel: 121 csúcsot tárolunk és transzformálunk

Példa folyt. Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha több mint egyetlen négyzetünk van, már megéri. Pl. ha N 10 Mérete index buffer nélkül: 400 csúcsot tárolunk és transzformálunk Mérete index buffer-rel: 121 csúcsot tárolunk és transzformálunk

Index buffer-ek GPU-n Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Minden videókártya, amit még nem gyűjtenek a múzeumok támogatja az index buffer-eket. A csúcspontok tömbje (vertex buffer) nem csak pozicókat tartalmaz, hanem normálvektorokat, textúra-koordinátákat, és még sok mást. Egy hivatkozás a vertex buffer-ra mindezekre együtt hivatkozik.

Index buffer-ek GPU-n Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Minden videókártya, amit még nem gyűjtenek a múzeumok támogatja az index buffer-eket. A csúcspontok tömbje (vertex buffer) nem csak pozicókat tartalmaz, hanem normálvektorokat, textúra-koordinátákat, és még sok mást. Egy hivatkozás a vertex buffer-ra mindezekre együtt hivatkozik.

Index buffer-ek GPU-n Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Minden videókártya, amit még nem gyűjtenek a múzeumok támogatja az index buffer-eket. A csúcspontok tömbje (vertex buffer) nem csak pozicókat tartalmaz, hanem normálvektorokat, textúra-koordinátákat, és még sok mást. Egy hivatkozás a vertex buffer-ra mindezekre együtt hivatkozik.

Kocka probléma Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha egy kockát rakunk össze háromszögekből, akkor egy sarokban lévő csúcs min. három, max. hat háromszögnek a csúcsa. Index buffer-rel elég lenne 8 csúcsot nyílvántartani. Mi lesz a normálisokkal? Hogy éles sarkai legyenek a kockának a normálisoknak merőlegesnek kell lennie a lapokra! Oldalanként külön meg kell adni a csúcsokat: összesen 3 8 csúcs kerül az vertex buffer-ba.

Kocka probléma Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha egy kockát rakunk össze háromszögekből, akkor egy sarokban lévő csúcs min. három, max. hat háromszögnek a csúcsa. Index buffer-rel elég lenne 8 csúcsot nyílvántartani. Mi lesz a normálisokkal? Hogy éles sarkai legyenek a kockának a normálisoknak merőlegesnek kell lennie a lapokra! Oldalanként külön meg kell adni a csúcsokat: összesen 3 8 csúcs kerül az vertex buffer-ba.

Kocka probléma Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha egy kockát rakunk össze háromszögekből, akkor egy sarokban lévő csúcs min. három, max. hat háromszögnek a csúcsa. Index buffer-rel elég lenne 8 csúcsot nyílvántartani. Mi lesz a normálisokkal? Hogy éles sarkai legyenek a kockának a normálisoknak merőlegesnek kell lennie a lapokra! Oldalanként külön meg kell adni a csúcsokat: összesen 3 8 csúcs kerül az vertex buffer-ba.

Kocka probléma Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Ha egy kockát rakunk össze háromszögekből, akkor egy sarokban lévő csúcs min. három, max. hat háromszögnek a csúcsa. Index buffer-rel elég lenne 8 csúcsot nyílvántartani. Mi lesz a normálisokkal? Hogy éles sarkai legyenek a kockának a normálisoknak merőlegesnek kell lennie a lapokra! Oldalanként külön meg kell adni a csúcsokat: összesen 3 8 csúcs kerül az vertex buffer-ba.

Kocka probléma Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet

Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Az Index buffer-es tárolás elemzése Tárolás: ált. hatékony. Transzformálás: hatékony. Lekérdezések: közös csúcsokat már tudunk, de igazából még mindig fogalmunk sincs.

Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Az Index buffer-es tárolás elemzése Tárolás: ált. hatékony. Transzformálás: hatékony. Lekérdezések: közös csúcsokat már tudunk, de igazából még mindig fogalmunk sincs.

Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Az Index buffer-es tárolás elemzése Tárolás: ált. hatékony. Transzformálás: hatékony. Lekérdezések: közös csúcsokat már tudunk, de igazából még mindig fogalmunk sincs.

Szomszédsági viszonyok Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Néha kellenek a szomszédok, pl. felület-feolsztásoknál. Ismertek a csúcsok ñ számítható mi, minek a szomszédja. Egy csúcsban tetszőleges számú poligon találkozhat ñ dinamikus adatszerkezet kéne. Jobb megoldás: Szárnyas-él (winged-edge) adatszerkezet!

Szomszédsági viszonyok Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Néha kellenek a szomszédok, pl. felület-feolsztásoknál. Ismertek a csúcsok ñ számítható mi, minek a szomszédja. Egy csúcsban tetszőleges számú poligon találkozhat ñ dinamikus adatszerkezet kéne. Jobb megoldás: Szárnyas-él (winged-edge) adatszerkezet!

Szomszédsági viszonyok Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Néha kellenek a szomszédok, pl. felület-feolsztásoknál. Ismertek a csúcsok ñ számítható mi, minek a szomszédja. Egy csúcsban tetszőleges számú poligon találkozhat ñ dinamikus adatszerkezet kéne. Jobb megoldás: Szárnyas-él (winged-edge) adatszerkezet!

Szomszédsági viszonyok Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Néha kellenek a szomszédok, pl. felület-feolsztásoknál. Ismertek a csúcsok ñ számítható mi, minek a szomszédja. Egy csúcsban tetszőleges számú poligon találkozhat ñ dinamikus adatszerkezet kéne. Jobb megoldás: Szárnyas-él (winged-edge) adatszerkezet!

Szárnyas-él adatszerkezet Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Határfelület leíró (B-rep) szerkezet. Az élek szempontjából tároljuk a felületet. Minden élhez fix számú adat tartozik. Segítségével gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot.

Szárnyas-él adatszerkezet Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Határfelület leíró (B-rep) szerkezet. Az élek szempontjából tároljuk a felületet. Minden élhez fix számú adat tartozik. Segítségével gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot.

Szárnyas-él adatszerkezet Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Határfelület leíró (B-rep) szerkezet. Az élek szempontjából tároljuk a felületet. Minden élhez fix számú adat tartozik. Segítségével gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot.

Szárnyas-él adatszerkezet Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Határfelület leíró (B-rep) szerkezet. Az élek szempontjából tároljuk a felületet. Minden élhez fix számú adat tartozik. Segítségével gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot.

Egyetlen él adatai Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet csúcs lap balra jobbra él start vég bal jobb előző köv. előző köv. a B A 0 1 c b d e

Egyéb táblázatok Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Csúcsok táblája csúcs ID csúcsból induló él Lapok táblája lap ID lap egy éle

Példa: tetraéder Virtuális világ tárolása Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet Shirley, Fundamentals of Computer Graphics

Pl.: Összes szomszéd egy lapra Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet def allneighbours ( face, edges, v e r t i c e s, faces ) : startedge = faces [ face ] edge = startedge i f edges [ startedge ]. f a c e L e f t == face : while edges [ edge ]. succleft!= startedge : p r i n t edges [ edge ]. faceright edge = edges [ edge ]. succleft else : while edges [ edge ]. succright!= startedge : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. succright

Pl.: Összes lap egy csúcsból Brute force tárolás Index buffer-ek Szárnyas-él adatszerkezet def allfaces ( vertex, edges, v e r t i c e s, faces ) : startedge = v e r t i c e s [ v e r t e x ] edge = startedge done = False while not done : i f edges [ edge ]. v e r t S t a r t == v e rtex : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. p r e dleft else : p r i n t edges [ edge ]. faceright edge = edges [ edge ]. predright

Tartalom Virtuális világ tárolása Színtérgráf OGRE 1 Virtuális világ tárolása 2 3 Színtérgráf OGRE 4

Színtérgráf OGRE Világ, benne Objektumok, ami Primitívekből állnak, amiket Pontok határoznak meg.

Színtérgráf OGRE Világ, benne Objektumok, ami Primitívekből állnak, amiket Pontok határoznak meg.

Színtérgráf OGRE Világ, benne Objektumok, ami Primitívekből állnak, amiket Pontok határoznak meg.

Színtérgráf OGRE Világ, benne Objektumok, ami Primitívekből állnak, amiket Pontok határoznak meg.

Színtérgráf OGRE!

Színtérgráf OGRE Minden szint a hozzátartozó tulajdonságokat tartja nyílván. Objektum név, modellezési transzformáció, befoglaló doboz, stb. Primitív primitívre jellemző tulajdonságok Pont koordináták

Színtérgráf OGRE Minden szint a hozzátartozó tulajdonságokat tartja nyílván. Objektum név, modellezési transzformáció, befoglaló doboz, stb. Primitív primitívre jellemző tulajdonságok Pont koordináták

Színtérgráf OGRE Minden szint a hozzátartozó tulajdonságokat tartja nyílván. Objektum név, modellezési transzformáció, befoglaló doboz, stb. Primitív primitívre jellemző tulajdonságok Pont koordináták

Színtérgráf OGRE Minden szint a hozzátartozó tulajdonságokat tartja nyílván. Objektum név, modellezési transzformáció, befoglaló doboz, stb. Primitív primitívre jellemző tulajdonságok Pont koordináták

Színtérgráf motiváció 1. Színtérgráf OGRE Ahol én vagyok ott van a karom is. (Jobb esetben...) Ha mozgatom a karom, elmozdulnak (világtérben) az ujjaim is. Tudom úgy mozgatni az ujjaimat, hogy közben se a karom, se én nem mozdulok el.

Színtérgráf motiváció 1. Színtérgráf OGRE Ahol én vagyok ott van a karom is. (Jobb esetben...) Ha mozgatom a karom, elmozdulnak (világtérben) az ujjaim is. Tudom úgy mozgatni az ujjaimat, hogy közben se a karom, se én nem mozdulok el.

Színtérgráf motiváció 1. Színtérgráf OGRE Ahol én vagyok ott van a karom is. (Jobb esetben...) Ha mozgatom a karom, elmozdulnak (világtérben) az ujjaim is. Tudom úgy mozgatni az ujjaimat, hogy közben se a karom, se én nem mozdulok el.

Színtérgráf OGRE

Színtérgráf motiváció 2. Színtérgráf OGRE Ha mozog egy bicikli, mozognak vele a kerekei meg a kormánya is. A kormányt lehet külön forgatni, és forgatja az első kereket. A két kerék tud forogni a tengelye körül, anélkül hogy a biciklit forgatni kéne.

Színtérgráf motiváció 2. Színtérgráf OGRE Ha mozog egy bicikli, mozognak vele a kerekei meg a kormánya is. A kormányt lehet külön forgatni, és forgatja az első kereket. A két kerék tud forogni a tengelye körül, anélkül hogy a biciklit forgatni kéne.

Színtérgráf motiváció 2. Színtérgráf OGRE Ha mozog egy bicikli, mozognak vele a kerekei meg a kormánya is. A kormányt lehet külön forgatni, és forgatja az első kereket. A két kerék tud forogni a tengelye körül, anélkül hogy a biciklit forgatni kéne.

Színtérgráf OGRE

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Színtérgráf Virtuális világ tárolása Színtérgráf OGRE Irányított, körmentes gráf (DAG). A színtér ( világ) összes elemét tartalmazza. Az egyes elemek alá-/fölérendeltségi viszonyaik szerint kapcsolódnak egymáshoz. Szülő vagy ős: ahonnan kiindul az él Gyerek: ahova mutat az él A szülő tulajdonságai öröklődnek a gyerekre, amiket a gyerek pontosíthat (pl. transzformációk), vagy felülírhat (pl. színek)

Csomópontok Virtuális világ tárolása Színtérgráf OGRE A gráf egy csomópontja (csúcsa, node-ja) lehet geometria, transzformáció, anyagjellemzők, fényforrás, kamera.

Színtérgráf OGRE

Csomópontok tulajdonságai Színtérgráf OGRE Geometria A rendszer által támogatott tetszőleges modell leírás. Pl. Mesh. A gráfban levélként szerepel. Transzformáció Gyak. 4 4-es transzformációs mátrix. Az új transzformációs csomópont nem felülírja a megelőzőket, hanem azokkal együtt hat.

Csomópontok tulajdonságai Színtérgráf OGRE Geometria A rendszer által támogatott tetszőleges modell leírás. Pl. Mesh. A gráfban levélként szerepel. Transzformáció Gyak. 4 4-es transzformációs mátrix. Az új transzformációs csomópont nem felülírja a megelőzőket, hanem azokkal együtt hat.

Csomópontok tulajdonságai Színtérgráf OGRE Anyagjellemzők Színek, optikai tulajdonságok, textúrák, stb. Nyitott kérdés: hogyan ábrázoljuk, ha egy modellünk több textúrát is használ? Fényforrás Kamera Poziciója, iránya, típusa, színe, stb. Levele a gráfnak. Pozíciója, nézeti iránya, látószöge, stb. Levele a gráfnak.

Csomópontok tulajdonságai Színtérgráf OGRE Anyagjellemzők Színek, optikai tulajdonságok, textúrák, stb. Nyitott kérdés: hogyan ábrázoljuk, ha egy modellünk több textúrát is használ? Fényforrás Kamera Poziciója, iránya, típusa, színe, stb. Levele a gráfnak. Pozíciója, nézeti iránya, látószöge, stb. Levele a gráfnak.

Csomópontok tulajdonságai Színtérgráf OGRE Anyagjellemzők Színek, optikai tulajdonságok, textúrák, stb. Nyitott kérdés: hogyan ábrázoljuk, ha egy modellünk több textúrát is használ? Fényforrás Kamera Poziciója, iránya, típusa, színe, stb. Levele a gráfnak. Pozíciója, nézeti iránya, látószöge, stb. Levele a gráfnak.

Színtérgráf a gyakorlatban Színtérgráf OGRE Minden komolyabb 3D alakalmazás használ valamilyen szintérgráfot. Példák: Maya, Java3D OpenSceneGraph OGRE

Színtérgráf OGRE-ben Színtérgráf OGRE Ogre::SceneNode: általános osztály, amihez az aktuális elemeket hozzá lehet csatolni az Ogre::MovableObject osztályon keresztül. Tulajdonságai: Bounding box pozíció és összesített pozíció orientációra hasonlóan méretezés tetszőleges felhasználói adat

Ogre::MovableObject Színtérgráf OGRE

Ogre::MovableObject Színtérgráf OGRE Tulajdonságok: Saját bounding box Rejtett vagy sem? Vethet árnyékot? Milyen fények tartoznak hozzá? Transformációkat nem tartalmaz!

Ogre::Entity Virtuális világ tárolása Színtérgráf OGRE Egy kirajzolható objektum! Se nem maga az objektum geometriája, se nem az anyagjellemzői. Ezeket külön objektumok tárolják, ez az osztály csak hivatkozik rájuk. Geometria: Ogre::Mesh Anyagjellemzők: Ogre::Material

Színtérgráf OGRE-ben Színtérgráf OGRE...és még sok más objektum. Tanulság: Rengeteg specializált osztály, mindegyik csak a maga feladatával foglalkozik. Amit több helyen is fel lehet használni (Mesh, Material), azt nem kell feleslegesen többször létrehozni. Ahol közös tulajdonságok vannak, azok magasabb szinten vannak összefogva.

Színtérgráf összefoglaló Színtérgráf OGRE Valamilyen színtérgráfot érdemes implementálni. Szétválasztja az elhelyezést, a formát és a megjelenést. Lehetővé teszi az egymáshoz képesti relatív elhelyezést. DE, szem előtt kell tartani, hogy milyen szintig érdemes elbonyolítani.

Tartalom Virtuális világ tárolása 1 Virtuális világ tárolása 2 3 4

CSG modell Virtuális világ tárolása Constructive solid geometry: konstruktív tömör test geometria A modellünket = primitívek + műveletek Primitívek: téglatestek, hasábok, hengerek, gúlák, kúpok, gömbök. Műveletek: boolean műveletek, unió, különbség, metszet.

CSG modell Virtuális világ tárolása Constructive solid geometry: konstruktív tömör test geometria A modellünket = primitívek + műveletek Primitívek: téglatestek, hasábok, hengerek, gúlák, kúpok, gömbök. Műveletek: boolean műveletek, unió, különbség, metszet.

CSG modell Virtuális világ tárolása Constructive solid geometry: konstruktív tömör test geometria A modellünket = primitívek + műveletek Primitívek: téglatestek, hasábok, hengerek, gúlák, kúpok, gömbök. Műveletek: boolean műveletek, unió, különbség, metszet.

CSG modell Virtuális világ tárolása Constructive solid geometry: konstruktív tömör test geometria A modellünket = primitívek + műveletek Primitívek: téglatestek, hasábok, hengerek, gúlák, kúpok, gömbök. Műveletek: boolean műveletek, unió, különbség, metszet.

Különbség Metszet Unió Captain Sprite, en.wikipedia Captain Sprite, en.wikipedia Captain Sprite, en.wikipedia

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása A műveletek eredményein újabb művelet hajtható vége. object = primitive object = object operation object Bináris fával jól leírható! Belső csúcsok: műveletek Levelek: primitívek Gyökér: végleges objektum

CSG fa Virtuális világ tárolása Zottie, wikipedia

CSG modellek megjelenítése Inkrementális képszintézis: tesszelálni kell. Sugárkövetés: speciális sugár/model metszéspont számítás Ñ CSG-fa bejárása.

CSG modellek megjelenítése Inkrementális képszintézis: tesszelálni kell. Sugárkövetés: speciális sugár/model metszéspont számítás Ñ CSG-fa bejárása.

CSG modellek metszése Levél: triv., metszéspontok: p t 1 v és p t 2 v A sugár pp t 1 v, p t 2 vq szakaszon a primitív belsejében halad. Összes levélből: t 1... t n, elég ezeket vizsgálnunk. Szakasz-listákat fogunk nyílvántartani.

CSG modellek metszése Levél: triv., metszéspontok: p t 1 v és p t 2 v A sugár pp t 1 v, p t 2 vq szakaszon a primitív belsejében halad. Összes levélből: t 1... t n, elég ezeket vizsgálnunk. Szakasz-listákat fogunk nyílvántartani.

CSG modellek metszése Levél: triv., metszéspontok: p t 1 v és p t 2 v A sugár pp t 1 v, p t 2 vq szakaszon a primitív belsejében halad. Összes levélből: t 1... t n, elég ezeket vizsgálnunk. Szakasz-listákat fogunk nyílvántartani.

CSG modellek metszése Levél: triv., metszéspontok: p t 1 v és p t 2 v A sugár pp t 1 v, p t 2 vq szakaszon a primitív belsejében halad. Összes levélből: t 1... t n, elég ezeket vizsgálnunk. Szakasz-listákat fogunk nyílvántartani.

CSG modellek metszése Belső csúcsok: a gyerekektől származó szakasz-listákra is végrehajtjuk a műveletet Y Összeérő szakaszokat egyesítjük, különben hozzávesszük a listához. X Kiszámítjuk a szakaszok metszeteit. z Kivonjunk a szakaszokat egymásból. Gyökérben: a legkisebb pozitív t értékű pont lesz a szemhez legközelebbi metszés. Ha a metszések száma páros: kívül vagyunk az objektumon, ha páratlan, akkor a belsejében.

CSG modellek metszése Belső csúcsok: a gyerekektől származó szakasz-listákra is végrehajtjuk a műveletet Y Összeérő szakaszokat egyesítjük, különben hozzávesszük a listához. X Kiszámítjuk a szakaszok metszeteit. z Kivonjunk a szakaszokat egymásból. Gyökérben: a legkisebb pozitív t értékű pont lesz a szemhez legközelebbi metszés. Ha a metszések száma páros: kívül vagyunk az objektumon, ha páratlan, akkor a belsejében.

CSG modellek metszése Belső csúcsok: a gyerekektől származó szakasz-listákra is végrehajtjuk a műveletet Y Összeérő szakaszokat egyesítjük, különben hozzávesszük a listához. X Kiszámítjuk a szakaszok metszeteit. z Kivonjunk a szakaszokat egymásból. Gyökérben: a legkisebb pozitív t értékű pont lesz a szemhez legközelebbi metszés. Ha a metszések száma páros: kívül vagyunk az objektumon, ha páratlan, akkor a belsejében.

CSG modellek metszése Belső csúcsok: a gyerekektől származó szakasz-listákra is végrehajtjuk a műveletet Y Összeérő szakaszokat egyesítjük, különben hozzávesszük a listához. X Kiszámítjuk a szakaszok metszeteit. z Kivonjunk a szakaszokat egymásból. Gyökérben: a legkisebb pozitív t értékű pont lesz a szemhez legközelebbi metszés. Ha a metszések száma páros: kívül vagyunk az objektumon, ha páratlan, akkor a belsejében.

CSG modellek metszése Belső csúcsok: a gyerekektől származó szakasz-listákra is végrehajtjuk a műveletet Y Összeérő szakaszokat egyesítjük, különben hozzávesszük a listához. X Kiszámítjuk a szakaszok metszeteit. z Kivonjunk a szakaszokat egymásból. Gyökérben: a legkisebb pozitív t értékű pont lesz a szemhez legközelebbi metszés. Ha a metszések száma páros: kívül vagyunk az objektumon, ha páratlan, akkor a belsejében.