1 Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic Warren Hunt, William R. Mark, Gordon Stoll prezentace : Radek Richtr
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í
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
4 Konstrukce d.s. kd-tree Kd-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í
5 Surface area heuristic (SAH) Jedna z metod nacházení dělících hran snaha o minimalizaci kritéria : C I cena(náročnost) traverzování uzlu (konstanta) C L(P) cena traverzace levého(p.) uzlu, který vznikne dělením v místě x SA L(P) velikost(plocha / objem) vzniklé oblasti (l. a p. potomka) SAvelikost(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
6 velmi dobré kritérium velmi pomalé je třeba výpočet urychlit ‚Nalezneme úzké hrdlo‘ Výpočet hodnot C L a C R (zde je představují počty objektů v potenciálních potomcích) je náročný SAH
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
8 SAH, příklad délka : 10 výška 0.1 SA(v) = 1 10 částí - SA(v,x) = 0.1, CL a CR – počty AABB obálek Celkem 12 AABB obálek
9 SAH, příklad 1 · · 0.9 = 10
10 SAH, příklad 1 · · 0.9 = 10 2 · · 0.8 = 8.4
11 SAH, příklad 1 · · 0.9 = 10 2 · · 0.8 = · · 0.7 = 7.2
12 SAH, příklad 1 · · 0.9 = 10 2 · · 0.8 = · · 0.7 = · · 0.6 = 6.6
13 SAH, příklad 1 · · 0.9 = 10 2 · · 0.8 = · · 0.7 = · · 0.6 = · · 0.5 = 6.5
14 SAH, příklad min
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
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
17 SAH, adaptivní vzorky
18 SAH, adaptivní vzorky
19 SAH, adaptivní vzorky
20 SAH, adaptivní vzorky
21 SAH, C L -C R
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ů
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)
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ů
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
26 SAH, C L