Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic
-
Upload
tanisha-wood -
Category
Documents
-
view
40 -
download
0
description
Transcript of Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic
![Page 1: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/1.jpg)
1
Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic
Warren Hunt, William R. Mark, Gordon Stoll
prezentace : Radek Richtr
![Page 2: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/2.jpg)
2
Obsah prezentace
1) kd-tree – krátké zopakování
2) konstrukce datové struktury kd-tree
3) kritérium výběru místa dělení - SAH
4) aproximace cenové funkce
5) adaptivní výběr vzorků
6) snížení chyby
7) zhodnocení
![Page 3: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/3.jpg)
3
Kd - tree (krátce)
- Speciální případ BSB - tree
- Datová struktura založená na dělení prostoru
- Reprezentace binárním stromem
- Užitečné pro mnoho různých aplikací
- Mnoho různých variant a optimizací
wikipedia.org
![Page 4: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/4.jpg)
4
Konstrukce d.s. kd-treeKd-tree i jeho konstrukce má mnoho variant- dle místa dělení (body, hrany, prostor…)- kritérium výběru místa dělení (polovina, medián, SAH…)- dle os podle kterých dělíme (RR, jedna osa, hybridní…)- adaptivní a neadaptivní, top-down…
Klasická konstrukce kd-tree je pomalá pro raytracing v reálném čase- Použít jinou datovu strukturu (hybridní, mřížky…)- Urychlit raytracing- Urychlit stavbu datové struktury kd tree
- Stavba méně přesné struktury (lazy building)- Urychlit výpočet kritéria při dělení
![Page 5: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/5.jpg)
5
Surface area heuristic (SAH)Jedna z metod nacházení dělících hran
snaha o minimalizaci kritéria :
)(
),()(
)(
),()(cost(x)
vSA
xvSAxC
vSA
xvSAxCC R
RL
LI
CI cena(náročnost) traverzování uzlu (konstanta)CL(P) cena traverzace levého(p.) uzlu, který vznikne dělením v místě xSAL(P) velikost(plocha / objem) vzniklé oblasti (l. a p. potomka)SA velikost(plocha / objem kořene
Jde tedy o součet ceny traverzace s pravděpodobností průniku uzlu.Kritérium je porovnáno s cenou případu, kdy uzel nedělíme. Pokud je cena rozdělení uzlu nižší, je uzel rozdělen v místě x na dva potomky.
toto je jedna z podob kritéria, zde upravená pro rychlý výpočet
![Page 6: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/6.jpg)
6
• velmi dobré kritérium
• velmi pomalé
• je třeba výpočet urychlit ‚Nalezneme úzké hrdlo‘
• Výpočet hodnot CL a CR (zde je představují počty objektů v potenciálních potomcích) je náročný
SAH
![Page 7: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/7.jpg)
7
Výpočet SAH
- sorting (předřazení objektů + test)O(n log2(n)), lze snížit na O(n log(n))
- scaning (testování v bodech)O(qn) => q-konstanta => O(n)
• Místo výpočtu ceny ve všech bodech (obvykle pomocí předřazení objektů dle os) vybereme vzorky v dostatečném počtu bodů.
• Dělicí hranu je možné buď umístit do zkoumaných bodů, nebo je možné celkovou funkci aproximovat
SAH
![Page 8: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/8.jpg)
8
SAH, příkladdélka : 10
výška 0.1
SA(v) = 1
10 částí - SA(v,x) = 0.1, 0.2 .. 0.9
CL a CR – počty AABB obálek
Celkem 12 AABB obálek
)(
),()(
)(
),()(cost(x)
vSA
xvSAxC
vSA
xvSAxCC R
RL
LI
![Page 9: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/9.jpg)
9
SAH, příklad
1 · 0.1 + 11 · 0.9 = 10
![Page 10: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/10.jpg)
10
SAH, příklad
1 · 0.1 + 11 · 0.9 = 10
2 · 0.2 + 10 · 0.8 = 8.4
![Page 11: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/11.jpg)
11
SAH, příklad
1 · 0.1 + 11 · 0.9 = 10
2 · 0.2 + 10 · 0.8 = 8.4
3 · 0.3 + 9 · 0.7 = 7.2
![Page 12: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/12.jpg)
12
SAH, příklad
1 · 0.1 + 11 · 0.9 = 10
2 · 0.2 + 10 · 0.8 = 8.4
3 · 0.3 + 9 · 0.7 = 7.2
3 · 0.4 + 9 · 0.6 = 6.6
![Page 13: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/13.jpg)
13
SAH, příklad
1 · 0.1 + 11 · 0.9 = 10
2 · 0.2 + 10 · 0.8 = 8.4
3 · 0.3 + 9 · 0.7 = 7.2
3 · 0.4 + 9 · 0.6 = 6.6
7 · 0.5 + 6 · 0.5 = 6.5
![Page 14: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/14.jpg)
14
SAH, příklad
10 8.4 7.2 6.6 6.5 6.6 8.9 9.6 10
min
![Page 15: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/15.jpg)
15
Aproximace cenové funkce
- Lze dělit buď ve zkoumaných bodech, nebo funkci aproximovat
- Pro postavení odpovídající cenové funkce obvykle postačuje poměrně malý počet
vzorků (max.32)
- Je třeba aby samotná aproximace nebyla náročnější, než vypočítání celé funkce
- Aproximace (v zásadě nepřesná) nesmí snížit kvalitu nalezeného minima
![Page 16: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/16.jpg)
16
Adaptivní výběr vzorků
- Hledaná cenová funkce nemusí být jednoduchá.
- Pevně daný počet (q) dělení nemusí postihnout její reálný tvar
- Nalezneme q/2 vzorků a následně, dle jejich hodnot umístíme dalších q/2 vzorků pro
přesnější aproximaci funkce
- Je třeba zvolit vhodné kritérium dle kterého hledat vzorky
![Page 17: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/17.jpg)
17
SAH, adaptivní vzorky
![Page 18: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/18.jpg)
18
SAH, adaptivní vzorky
10 8.4 7.2 6.6 6.5 6.6 8.9 9.6 10
![Page 19: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/19.jpg)
19
SAH, adaptivní vzorky
10 8.4 7.2 6.6 6.5 6.6 8.9 9.6 10
![Page 20: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/20.jpg)
20
SAH, adaptivní vzorky
10 8.4 7.2 6.6 6.5 6.6 8.9 9.6 10
6.2
![Page 21: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/21.jpg)
21
SAH, CL-CR
-12
12
0
![Page 22: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/22.jpg)
22
Omezení chyby ap.
• Při interpolaci funkce je obecně problém, pokud je skutečná cenová funkce složitá (prudké změny), případně nespojitá
• Toto bývá problém i při jiných způsobech stavby
• K lokalizaci těchto nespojitostí pomáhá adaptivní výběr vzorků
![Page 23: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/23.jpg)
23
Omezení chyby ap.
Aby byly vlivy těchto nespojitostí co nejmenší, vybírá algoritmus dělící blízko ‚nespojitosti(místo prudké změny funkce)‘ – tím je již po několika krocích ‚nespojitost‘ uzavřena v jediném uzlu. Navíc čím je ‚skok‘ větší, tím dříve je ‚nespojitost‘ uzavřena dříve (a tedy i v menší buňce)
7
6
8
9
![Page 24: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/24.jpg)
24
Zopakování
• Klasická stavba kd-stromu je příliš pomalá• Jednou z možností urychlení je zrychlit
(zjednodušit) výpočet kritéria kde rozdělit uzel• Místo seřazení uzlů testujeme ‚obsah‘ uzlu v
několika bodech (testujeme top-down)• Body určíme napevno a v místech kde je změna
funkce největší dodáme další• Skutečnou cenovou funkci poté aproximujeme• Nespojitosti a nepřesnosti izolujeme do vlastních
uzlů
![Page 25: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/25.jpg)
25
Literatura
W. Hunt, G. Stoll and W. Mark. Fast kd-tree construstion with an adaptive error-bounded heuristic
S. Popov, J. Gunter, H. Seidel, P. Slusallek. Experiances with Construction of SAH KD-Trees
V. Havran, X36DPG slidy
![Page 26: Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic](https://reader035.fdocuments.net/reader035/viewer/2022062308/56813205550346895d985915/html5/thumbnails/26.jpg)
26
SAH, CL
10 8.4 7.2 6.6 6.5 6.6 8.9 9.6 10
0
12
6