Lapped Solid Textures: Filling a Model with Anisotropic Textures The University of Tokyo Takashi Ijiri Takeo Igarashi Kenshi Takayama Makoto Okabe
Osnova Úvod Motivace Jiné přístupy Důležité pojmy Lapped solid textures (LST) Klasifikace 3D textur Příprava textur Generování modelu s LST Vykreslování modelu s LST Shrnutí Výsledky Nedostatky metody
Motivace Chceme reprezentovat objemová data Uchovávání celé voxelové mapy vyžaduje vekou paměťovou kapacitu, vykreslování voxelů je časově náročné Textury mnoha objektů jsou pravidelné – ve 2D umíme povrch pokrýt opakovaným pokládáním malého vzorku pravidelné textury
Jiné přístupy k vytváření 3D textur Procedurální textury generované algoritmem návrh algoritmu je složitý Metody syntézy z 2D průřezů uživatel dodá 2D obrázky referenčních průřezů problémy s konzistencí mezi jednotlivými průřezy problémy s nespojitostmi a detaily (např. jadérka melounu) Tyto přístupy vytvářejí voxelovou mapu mapa voxel za voxelem pokrývá celý objekt výpočetně i paměťově náročné složité počítání orientace textury v závislosti na geometrii
Důležité pojmy Izotropie, anizotropie Gradient Tenzorové pole sada tří ortogonálních vektorových polí Tetrahedralizace Lapped Solid Texture (LST)
Lapped Solid Textures (LST) Idea: model pokryjeme vzorky 3D textury podobně, jako při pokrývání 2D povrchu vzorky ploché textury Jak model s LST uchovávat a zobrazovat? je potřeba obejít se bez voxelové mapy celého objektu Jak připravovat textury a jak je na model mapovat? model se při vytváření pokryje tenzorovým polem, které bude určovat orientaci a měřítko vzorků textury vytváření tohoto pole by mělo být dostatečně snadné a intuitivní Jak podle tenzorového pole rozmístit vzorky textury? je potřeba, aby byl pokryt celý objekt a nevznikaly příliš výrazné artefakty
Uchovávání modelu s LST Původní model je polygonální Tetrahedralizací se převede na prostorovou síť čtyřstěnů čtyřstěny musí být tak malé, aby mohly být snadno pokryty jednotlivými vzorky textury V každém vrcholu jsou uchovávány informace o tom, které souřadnice vzorků mu příslušejí Společně s touto informací je ukládána i orientace vzorků v každém vrcholu
Klasifikace 3D textur Textury jsou rozlišovány podle dvou kritérií úroveň anizotropie míra variace
Příprava textur typu 0 Izotropické textury (molitan, beton) Uživatel pouze určí měřítko v jednotlivých místech Orientace vzorků je v každém bodě zcela náhodná
Příprava textur typu 1a Pravidelné vláknité struktury (bambus, sval) Uživatel vede modelem tahy, které určí primární orientaci tenzorového pole (směr vláken) Poté uživatel určí měřítko v jednotlivých místech Sekundární orientace tenzorového pole je v každém bodě náhodná vzorky budou náhodně natočeny v rovině kolmé na směr vláken
Příprava textur typu 1b Pravidelné hloubkově závislé textury (meloun, dort) Uživatel vytvoří hloubkovou mapu povrch tělesa: červená střed tělesa: modrá Měřítko a primární orientace tenzorového pole jsou určeny z gradientu hloubky, sekundární opět náhodně
Příprava textur typu 2a Nepravidelné (zploštělé) vláknité struktury Uživatel nejprve vytvoří hloubkovou mapu jako u typu 1b podle hloubky se určí primární orientace tenzorového pole Poté do jednotlivých vrstev zakreslí lokální směr vláken tyto tahy určí sekundární orientaci pole v jednotlivých vrstvách Nakonec opět určí měřítko v jednotlivých místech
Příprava textur typu 2b Nepravidelné hloubkově závislé textury (kiwi, strom) Orientace tenzorového pole je určena podle gradientu hloubky a sekundárních tahů v jednotlivých vrstvách podobně jako u textur typu 2a Měřítko v jednotlivých místech je určeno podle gradientu podobně jako u textur typu 1b
Rozmístění vzorků textury Po vytvoření tenzorového pole je potřeba rozmístit vzorky trextury do jednotlivých skupin čtyřstěnů Vzorky jsou v každém místě orientovány podle tenzorového pole Mezi vzorky by neměly být viditelné hranice Je potřeba pokrýt vzorky textury celý model
Odstranění viditelných hranic Podobně jako v případě 2D textur Hranice mezi vzorky jsou rozmazány použitím nepravidelné 3D alfa masky může vést ke vzniku artefaktů u textur s výraznou strukturou Pro hloubkově závislé textury jsou potřeba tři masky povrch vnitřní vrstva střed
Pokrytí celého modelu Náhodně se zvolí počáteční čtyřstěn Do jeho středu se umístí vzorek textury, orientovaný podle příslušného tenzoru K počátečnímu čtyřstěnu se postupně přidávají sousední čtyřstěny a tvoří shluk – čtyřstěn je přidán: pokud do něj zpracovávaný vzorek textury zasahuje, a zároveň pokud se jeho tenzor příliš neliší od tenzoru počátečního Pro každý vrchol se udržuje seznam vzorků, které do něj zasahují Plně otexturované čtyřstěny jsou vyřazeny ze zpracování a postup se opakuje
Test pokrytí čtyřstěnu Ve čtyřstěnu uvažujeme diskrétní síť bodů Zjistíme, kolik textury se z jednotlivých vzorků naakumulovalo v každém bodu Pokud je každý bod 100% pokryt texturou, prohlásíme čtyřstěn za pokrytý
Ruční vkládání vzorků Pro dodatečné vkládání detailů (melounová jadérka) Uživatel manuálně vloží do modelu další textury a určí jejich orientaci a měřítko
Renderování modelu s LST Vezmeme síť tvořenou povrchovými trojúhelníky modelu Každému z vrcholů přísluší seznam vzorků textury Každý trojúhelník je vykreslen několikrát, s texturami z příslušných seznamů Textury se skládají alfa-mícháním
Výsledky čtyřstěnypříprava [s]vyplnění [s]řez [ms]velikost [MB] kiwi ,1 mrkev ,1 strom ,2
čtyřstěnypříprava [s]vyplnění [s]řez [ms]velikost [MB] meloun ,0 země ,4 dort ,5 Výsledky
Nedostatky metody Poloprůhledné materiály Textury s výraznou strukturou rozmazání nepřesné navazování vzorků
Použité zdroje Kenshi Takayama, Makoto Okabe, Takashi Ijiri, Takeo Igarashi. Lapped Solid Textures: Filling a Model with Anisotropic Textures. In ACM Transactions on Graphics 2008 [URL: cit ]. Hang Si. TetGen, A Quality Tetrahedral Mesh Generator and Three- Dimensional Delaunay Triangulator. [URL: cit ].