150 likes | 284 Vues
Strukture modeliranja. Modeliranje kompleksnih modelov. Hierahična, drevesna struktura modela. Primer: helikopter. 3. 2. 7. 6. 0. 1. 4. 5. Poligonske mreže. Uporabljamo jih za modeliranje trdnih teles Objekte definiramo s : Seznamom verteksov Seznamom normal Seznamom ploskev. 3.
E N D
Modeliranje kompleksnih modelov Hierahična, drevesna struktura modela
3 2 7 6 0 1 4 5 Poligonske mreže • Uporabljamo jih za modeliranje trdnih teles • Objekte definiramo s: • Seznamom verteksov • Seznamom normal • Seznamom ploskev
3 2 7 6 0 1 4 5 Seznam verteksov
4 3 0 1 2 5 Seznam normal 0: Zadnja ploskev 1: Desna ploskev 2: Prednja ploskev 3: Leva ploskev 4: Zgornja ploskev 5: Spodnja ploskev
Seznam ploskev (faces) 3 2 7 6 0 1 4 5 0: Zadnja ploskev 1: Desna ploskev 2: Prednja ploskev 3: Leva ploskev 4: Zgornja ploskev 5: Spodnja ploskev
Število verteksov, normal,ploskev Verteksi Normale Ploskve Primer datoteke s podatki • 8 6 6 • 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 • 1 0 1 1 1 1 0 1 1 • 0 0 -1 1 0 0 0 0 1 1 0 0 0 1 0 • 0 -1 0 • 4 0 3 2 1 • 4 1 2 6 5 • 4 4 5 6 7 • 4 0 4 7 3 • 4 2 3 7 6 • 4 0 1 5 4
Prostorske podatkovne strukture • Uporabimo jih za organizacijo n-dimenzionalnih struktur (v našem primeru 2D in 3D) • Za hitro povpraševanje (zakritost, metode upodabljanja (sledenje žarka, sevalna metoda), odkrivanje trkov, navigacija) • Pogosto so hierarhične • kakšne: • Hierarhije obsegajočih volumnov (Bounding Volume Hierarchies (BVH)) • Binarna drevesa delitve prostora (Binary Space Partitioning Trees (BSP trees)) • Osmiška drevesa (Octrees)
Binarna drevesa delitve prostora(BSP) • Glavni namen – sortiranje po globini • Imamo delitveno ravnino in po eno drevo BSP na vsaki strani delitvene ravnine(rekurzija!) • Prehod od zadaj naprej določamo glede na položaj očesa Od zadaj naprej: A->P->B P BSP A BSP B Od zadaj naprej A->P->B
Še o drevesih BSP • Dve možni implementaciji: Osno poravnan BSP Poligonsko poravnan BSP Presečišča?
0 1a 1b B A C 2 D E Osno poravnana BSP drevesa Axis-Aligned BSP Trees = AABB • Začnimo z AABB • Rekurzivna delitev na majhne pravokotnike • Možna strategija: cikliramo po oseh(temu pravimo k-d drevesa) D E B 2 1b 1a A C 0 Vprašanje: ali objekti sekajo meje?
A B C D E F Poligonsko poravnana BSP drevesa • Originalna zamisel BSP • Kot delilnik vzamemo ravnino, v kateri leži nek poligon • Vsakič vzamemo en delilnik – Če kakšen poligon seka ravnino, ga moramo razdeliti • To počnemo rekurzivno, dokler niso vsi poligoni v drevesih BSP • Prehod od zadaj naprej je natančen • Delitvene ravnine moramo skrbno izbirati, da dobimo uravnovešeno BSP drevo F B C A D E Rezultat deljenja
Osmiška drevesa • Podobna osno poravnanim drevesom (AABB) • Vsak vozel ima 8 otrok • Starš ima 8 (2x2x2) otrok • Prostor delimo, dokler ni število primitivov v vsakem listu manjše od nekega praga • Objekte hranimo v listih