9
Prostorová grafika a modelování těles
Studijní cíl Tento blok je věnován základům 3D grafiky. Jedná se především o vysvětlení principů vytváření modelů 3D objektů, jejich reprezentace v paměti počítače.
Doba nutná k nastudování
3-4 hodiny
Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy analytické geometrie a ovládá základní operace pro práci s maticemi a jejich vyjádření.
9.1 3D grafika a modelování 3D vektorová grafika je ve svém základu postavena na obdobných principech jako rovinná vektorová grafika. Jediný rozdíl je přidání třetího rozměru, který je realizován třetí osou (označovanou jako osa z). Každý bod je popsán trojicí reálných souřadnic, to znamená, že definice bodu P v prostoru má tvar P[x, y, z]. Každou rovinnou vektorovou grafiku je možno obecně převést do prostoru, přičemž definice každého bodu je doplněna o třetí souřadnici z, která je nastavena na hodnotu 0. 9.1.1 Modelování a modely Modelování v 3D grafice je proces, pomocí něhož vytváříme trojrozměrný model prostorového tělesa (případně skupiny těles) z reálného světa. Tento model popisuje tvar a polohu prostorových objektů za pomoci datových struktur a algoritmů pro vytváření a následnou manipulaci s 3D objekty. Model je uložen jako data v paměti počítače a na základě příslušných algoritmů je možno s ním provádět příslušné operace (např. změna polohy, změna tvaru, zobrazení na dvourozměrném zobrazovacím zařízení, atd.).
KST/IPOGR Počítačová grafika
9-1
Petr Veselý KST FEI Univerzita Pardubice
Každý 3D objekt vyplňuje jistou prostorovou oblast, která může nebo nemusí být souvislá. K popisu modelu zle použít několik různých způsobů (typů modelů), přičemž každý způsob má své výhody a nevýhody. Některé způsoby jsou např. vhodnější na definování modelů, u kterých budou často probíhat objemové výpočty, jiné jsou úspornější z hlediska paměťové náročnosti. Některé z často využívaných modelů budou stručně popsány v následujících kapitolách. 9.1.2 Hranový model Hmota tělesa je ohraničena stěnami, které jsou vymezeny hranami, přičemž každá hrana začíná a končí ve vrcholu. Hrany jsou uspořádány do smyček, které vymezují danou stěnu.
Obrázek 1: Modelování kvádru pomocí hranového modelu
Tento model je často označován jako drátěný model (Wireframe Model). Ve své nejjednodušší podobě je popsán pomocí vrcholů a hran. Mezi hlavní nevýhody tohoto modelu patří např. absence definování hmoty tělesa, problematický výpočet objemu a nejednoznačnosti při některých operacích, např. při dělení tělesa. Prakticky tento model nestačí na úplný popis tělesa, nicméně jsou aplikace 3D grafiky, kde je tento jednoduchý způsob postačující. Na následujícím obrázku je prakticky ukázáno, jak může dojít ke zmíněné nejednoznačnosti. Model kvádru je rozdělen naznačenou rovinou. V hranovém modelu není problém určit, kterých hran se operace dělení týká. V místě, kde jednotlivé hrany protíná dělící rovina vzniknou nové vrcholy modelu. Ovšem jejich korektní propojení nově vytvořenými hranami již nemusí být jednoznačné, vzhledem k tomu, že model nedefinoval objem (vnitřní oblast) tělesa.
KST/IPOGR Počítačová grafika
9-2
Petr Veselý KST FEI Univerzita Pardubice
Varianta A
Varianta B
Obrázek 2: Nejednoznačnost při editaci hranového modelu
9.1.3 Objemový model Objemový model (Volume Model, Solid Model) je zaměřen na definování vnitřní oblasti (objemu) tělesa. Algoritmy pracující s tímto typem modelu podporují přímé určení objemu, operace slučování a dělení, ale naopak neposkytují přímo definici povrchu tělesa. Povrch tělesa je nutno v tomto modelu určovat (aproximovat) relativně složitými algoritmy Model je založen na elementární objemové jednotce, tzv. voxelu (Volume Element). Je to prostorový ekvivalent pixelu, který je používán v rastrové rovinné grafice. Obdobně jako je 2D rastrový obraz složen z pixelů, jejichž počet určuje velikost obrázku, je celý popisovaný 3D prostor složen z jednotlivých voxelů, které mají tvar krychle. Pixel ve 2D grafice nese informaci o barvě, voxel může rovněž obsahovat barvovou informaci, ale především definuje, zda prostor jím ohraničený je nebo není součástí modelovaného tělesa.
KST/IPOGR Počítačová grafika
9-3
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 3: Ukázka modelování těles pomocí objemového modelu
Základní datovou strukturou pro popis voxelů v modelu může být trojrozměrné pole. Tato primitivní reprezentace dat a tím pádem celý model je paměťově velmi náročný, neboť je nutno (stejně jako u pixelů ve 2D) uchovávat informace i o prostoru, který je prázdný. Řešením této nevýhody je nalezení vhodného způsobu, který umožnuje popisovat pouze ty voxely, které jsou součástí modelovaného tělesa. Jedna z vhodných reprezentací je oktalový strom. 9.1.4 Oktalový strom Oktalový strom je založen na principu hierarchického uspořádání různě velkých podprostorů ve tvaru krychle, pomocí nichž je možno úsporným způsobem popsat modelované těleso. Následující příklad názorně ukáže princip a tvorbu oktalového stromu pro těleso, které je znázorněno na obrázku 4.
Obrázek 4: Reálné zobrazení modelovaného tělesa
KST/IPOGR Počítačová grafika
9-4
Petr Veselý KST FEI Univerzita Pardubice
Předpokládejme, že velikost strany voxelu je 1/8 strany modelované krychle s odříznutým vrcholem. Pokud by bylo k popisu objemového modelu použito trojrozměrné pole voxelů, bylo by potřeba pro popis všech voxelů použít pole o rozměrech 8 x 8 x 8, tj. 12 prvků s informací, zda daný voxel tvoří nebo netvoří objem modelovaného tělesa.
Obrázek 5: Popis tělesa jednotlivými voxely
Celé těleso je možno ohraničit krychlí o velikosti strany 8 voxelů. Tuto krychli je možno popsat pomocí 8 podprostorů o tvaru krychle a velikosti strany 4 voxely. Každou z těchto krychlí je možno popsat opět pomocí 8 podprostorů o tvaru krychle a velikosti strany 2 voxely. A takto je možno rekurzivně pokračovat až se dostaneme k podrpostorům o velikosti jednoho voxelu.
Obrázek 6: Dělení na podprostory
Princip vytváření voxelového stromu spočívá v tom, že pokud daný podprostor (na libovolné úrovni) je celý vyplněn modelovaným objektem, případně je celý prázdný, nebude tento podprostor již dále dělen na podprostory nižší úrovně a ve struktuře bude popsán jako celek.
KST/IPOGR Počítačová grafika
9-5
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 7: Oktalový strom
Předchozí obrázek naznačuje vytvoření části stromu pro daný model. Červený prvek představuje podprostor (krychli) na nejvyšší úrovni o délce strany 8 voxelů, zelené představují 2 úroveň podprostorů o délce strany 4 voxely, modré jsou prvky pro krychle o délce strany 2 voxely a žluté prvky představují podprostory na úrovni jednotlivých voxelů. Každý prvek stromu nese informaci, zda: je celý vyplněn tělesem (plné zabarvení čtverce), je vyplněn tělesem pouze částečně (barevný trojúhelník) a bude se dále dělit, těleso do něj nezasahuje vůbec (prázdný čtverec). 9.1.5 CSG modely Modelování pomocí konstruktivní geometrie těles CSG (Constructive Solid Geometry) je vhodné pro vytváření modelů těles, které v reálném světě vznikají pomocí reálných technologických operací jako je lepení, sváření, vrtání, řezání atd. Tento model snadno napodobuje obráběcí operace. Model je postaven na třech pilířích, pomocí nichž je těleso modelováno. Jedná se o strom složený z CSG primitiv (kvádr, koule, válec, kužel, poloprostor, toroid), množinových operací (sjednocení, rozdíl, průnik), transformací (otočení, posunutí, změna měřítka, ad.).
KST/IPOGR Počítačová grafika
9-6
Petr Veselý KST FEI Univerzita Pardubice
Na následujícím obrázku je uveden příklad, kde je výsledné těleso modelováno pomocí čtyř primitiv (tří kvádrů a válce), u nižch je pomocí transformací příslušně upravena velikost a poloha. Následně jsou tyto primitivy postupně spojeny (např. operace +, představující např. lepení). Záverečná operace (označená jako -) představuje vrtání otvoru.
Obrázek 8: Ukázka stromu CSG modelování
9.1.6 Šablonování Konstrukce některých modelů by byla předchozími způsoby velmi pracná, případně by došlo při modelování k velkým nepřesnostem. Šablonu v tomto případě tvoří určitý liniový nebo plošný útvar, který při použití transformace posunutí nebo otočení opíše (definuje) povrch modelovaného tělesa. Používá se tam, kde např. konstrukce množinovými operacemi není vhodná.
Jedná se především o tělesa, která jsou symetrická okolo vlastní osy, případně mohou být modelována pomocí Rotační šablonování: Jedná se především o tělesa, která jsou symetrická okolo vlastní osy a šablonu tvoří liniový útvar (křivka) Přímkové (křivkové) šablonování: je realizováno pomocí tažení (Sweep) plošného útvaru po definované trajektorii (křivka)
KST/IPOGR Počítačová grafika
9-7
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 9: Těleso vzniklé rotací
Obrázek 10: Tělesa vzniklé tažením po křivce a po přímce
Obrázek 11: Tělesa vzniklé tažením kružnice po křivce
9.1.7 Povrchový model Tento model je založen na definici povrchu tělesa. Povrch je obecně definován pomocí množiny jednoduchých rovinných útvarů, které je snadné popsat KST/IPOGR Počítačová grafika
9-8
Petr Veselý KST FEI Univerzita Pardubice
analyticky (analyticky definované plochy a především B-spline a Bezierovy plochy). Prakticky jsou výhradně používány trojúhelníky. Nevýhodou tohoto způsobu modelování jsou problémy při výpočtu objemu, těžiště, momentů, atd. Výhodou je možnost precizního popsání těles se složitým povrchem. Jemnost modelu (zachycení požadovaných detailů) je možno řešit lokálně v požadovaných částech modelu dalším přidáváním dalších definičních bodů.
Obrázek 12: Ukázka povrchových modelů
Obrázek 13: Srovnání tělesa, modelovaného pomocí různých modelů
Pojmy k zapamatování Prostorová grafika, modelování, model, hranový model, objemový model, voxel, povrchový model, CSG modelování, oktalový strom
KST/IPOGR Počítačová grafika
9-9
Petr Veselý KST FEI Univerzita Pardubice
Otázky na procvičení 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Na jakých principech je založena prostorová grafika? Co je to modelování? Jaké jsou základní způsoby modelování? Jak je popsáno těleso v hranovém modelu? Jaké jsou výhody a nevýhody objemového modelování? Co je to voxel? Jaké znáte způsoby reprezentace voxelů při objemovém modelování? Která tělesa je vhodné modelovat pomocí šablonování? Co je CSG modelování? Jaké jsou základní prvky CSG modelování? Jaké jsou výhody povrchového modelování?
Odkazy a další studijní prameny
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80-7226-049-9. Pelikán, J. PC-prostorové modelování. Grada, Praha, 1992. ISBN 8085424-53-3. Beneš, B., Felkel, P., Sochor, J., Žára, J. Skripta Vizualizace. Foley, Van D. Computer Graphics. Principles and Practice. Addison-Wesley,1991. Cenek, P., Počítačová grafika. Univerzita Pardubice, 1999. ISBN 807194-229-4.
KST/IPOGR Počítačová grafika
9-10
Petr Veselý KST FEI Univerzita Pardubice