Geometria brute force tárolása



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

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

Valasek Gábor

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

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

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

TÉRINFORMATIKAI ALGORITMUSOK

Termék modell. Definíció:

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

TÉRINFORMATIKAI ALGORITMUSOK

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

Klár Gergely

Valasek Gábor tavaszi félév

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

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

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

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

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

Valasek Gábor tavaszi 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

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

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

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

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

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

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

Adatszerkezetek 2. Dr. Iványi Péter

Mechatronika segédlet 3. gyakorlat

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

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

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)

GráfRajz fejlesztői dokumentáció

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

Számítógépes Grafika mintafeladatok

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

Hajder Levente 2016/2017.

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

22. GRÁFOK ÁBRÁZOLÁSA

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

Struktúra nélküli adatszerkezetek

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

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

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

Robotika. Kinematika. Magyar Attila

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

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

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

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)

2014/2015. tavaszi félév

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

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

Látható felszín algoritmusok

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

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

Számítógépes grafika

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

3D koordináta-rendszerek

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

Mechatronika segédlet 1. gyakorlat

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

CodeCamp Döntő feladat

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

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Érettségi feladatok Koordinátageometria_rendszerezve / 5

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

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

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

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

Cohen-Sutherland vágóalgoritmus

Algoritmusok és adatszerkezetek gyakorlat 07

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

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

Adatszerkezetek II. 1. előadás

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

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

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

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

Koordináta-geometria feladatgyűjtemény

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

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Elemi adatszerkezetek

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

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

Készítette:

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

Valasek Gábor

Diszkrét matematika 2.

OpenGL és a mátrixok

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

Arany Dániel Matematikai Tanulóverseny 2010/2011-es tanév 1. forduló haladók III. kategória

Adatbázismodellek. 1. ábra Hierarchikus modell

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

Átírás:

Virtuális világ tárolása - kérdések Számítógépes Grafika Klár Gergely tremere@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 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? 2010/2011. őszi félév Geometria brute force tárolása Geometria brute force tárolása 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 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 Index buffer-ek 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. 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 Példa 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 ; 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. Index buffer-ek GPU-n 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 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 Kocka probléma 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.

Az Index buffer-es tárolás elemzése Szomszédsági viszonyok 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. 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 Egyetlen él adatai 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. 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 Példa: tetraéder Csúcsok táblája Lapok táblája csúcs ID csúcsból induló él lap ID lap egy éle Shirley, Fundamentals of Computer Graphics Pl.: Összes szomszéd egy lapra Pl.: Összes lap egy csúcsból 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 def allfaces ( vertex, edges, v e r t i c e s, faces ) : startedge = v e r t i c e s [ v ertex ] edge = startedge done = False while not done : i f edges [ edge ]. v e r t S t a r t == vertex : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. predleft else : p r i n t edges [ edge ]. faceright edge = edges [ edge ]. predright

Hierarchikus adatszerkezetek Világ, benne Objektumok, ami Primitívekből állnak, amiket Pontok határoznak meg.! Színtérgráf motiváció 1. 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 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ó 2. 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 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 A gráf egy csomópontja (csúcsa, node-ja) lehet geometria, transzformáció, anyagjellemzők, fényforrás, kamera. Csomópontok tulajdonságai Csomópontok tulajdonságai 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. 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-ben Minden komolyabb 3D alakalmazás használ valamilyen szintérgráfot. Példák: Maya, Java3D OpenSceneGraph 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 Ogre::MovableObject Tulajdonságok: Saját bounding box Rejtett vagy sem? Vethet árnyékot? Milyen fények tartoznak hozzá? Transformációkat nem tartalmaz!

Ogre::Entity Színtérgráf OGRE-ben 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...é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ó CSG modell 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. 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 fa Különbség Metszet Unió 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 Captain Sprite, en.wikipedia Captain Sprite, en.wikipedia Captain Sprite, en.wikipedia Levelek: primitívek Gyökér: végleges objektum CSG fa 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. Zottie, wikipedia

CSG modellek metszése 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. 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.