====== Zobrazování objemových dat ====== [[wp>Volume rendering]] * Volumetrická data se skládají z **voxelů** (volumetric element) * Možnost reprezentace materiálu, ne jen povrchu * Využití: CT/MR, strojírenství, geologie, simulace ===== Reprezentace ===== * **Uniformní mřížka voxelů** * Ortogonální * Polární * Sférická * Nestrukturovaná * **Hierarchické dělení prostoru** * [[wp>Quadtree]] * [[wp>Octree]] * **Implicitní objemy** ===== Uložení dat v paměti ===== * **3D pole** * **Hierarchické mřížky** * Komprese: RLE (Run length encoding) ===== Zobrazení ===== ==== Převod na polygony ==== === Marching Cubes === {{ http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/MarchingCubes.svg/300px-MarchingCubes.svg.png}} * Procházení po krychlích * 256 možných stavů; v praxi různé varianty 15 stavů a zrcadlení, otočení * Vytváří orientovanou uzavřenou trojúhelníkovou plochu * Je třeba definovat, který voxel je „uvnitř“, a který „vně“ * Slepý převod na velký počet trojúhelníků * Možnost děr v síti a nejednoznačnost ==== Volume Rendering ==== === Vrhání paprsku === {{ http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Volume_ray_casting.svg/300px-Volume_ray_casting.svg.png}} * Vrhání paprsku do objemu (Ray-casting) * Ovlivnění paprsku: Hustotou, Osvětlením, Vyzářené světlo, Útlum podél paprsku * Pokud chceme stíny, nutno počítat normálu z objemu * Pomalé, kvalitní, objemné na paměť * Optimalizace * Snadná paralelizace * Empty space leaping – prázdný prostor přeskočíme * Early ray termination – Výpočet podél paprsku ukončíme, je-li příspěvek dalšího voxelu nepodstatný (např. prošel hustým materiálem). * Multiple and adaptive sampling – Podvzorkování objemu, adaptivní krok podél paprsku, rozlišení renderovaného obrazu, atd. === Voxel Splatting === * Projekce voxelů na rovinu * Zepředu dozadu * Stopa s Gaussovým rozložením * Barva podle hodnoty, segmentace a povrchu * Překrývání a prolínání stop podle průhlednosti * Horší kvalita, středně rychlé * Nemusíme mít objem v paměti celý * Snadná paralelizace === Shear-warp rekonstrukce === {{ http://www.cs.unm.edu/~kmorel/documents/dissertation/thesis_full/img188.png?300}} * Posun rovin modelu pro narovnání paprsků do směru mřížky * Prostá projekce posunutých rovin na čelní stěnu * Barva podle hodnoty, segmentace a povrchu * Překrývání a prolínání podle průhlednosti * Rychlé, dobrá kvalita * Nemusíme mít objem v paměti celý * Možnost změny vzorkování * Existuje i HW implementace === Texturování === {{ http://www.evl.uic.edu/aej/524/pics/texture_2d3d.jpg?300}} * Zobrazení polygonů s texturami, jako řezy objemem * Blending jednotlivých řezů, podle průhlednosti voxelů * 2D texturování, řezy ve směru nejvíce přivrácené stěny * 3D texturování, řezy kolmo ke směru pohledu * Dobrá kvalita, při plné hardwarové implementaci velmi rychlé ===== Průchod paprsku modelem ===== Jak najdeme počátek a konec paprsku: Ray-casting pomocí GLSL