====== Zadanie ======
Parametrické plochy. Plochy dané okrajem, Bezierovy plochy, B-spline plochy, NURBS. Plátování, hladké navázání. Implicitní povrchy.
====== Vypracovanie ======
Vyjadrenie plochy môže byť podobne ako u krivky len s doplnením ďalšej dimenzie -- //explicitné//, //implicitné// a //parametrické//.
**Explicitne** zadaná plocha je vyjadrená funkciou .
**Implicitne** zadaná plocha je vyjadrená rovnicou (podrobnejšie v časti o implicitných plochách).
**Parametrickým** vyjaderním plochy je bodová rovnica dvoch parametrov a nadobúdajúcich hodnoty z intervalu , ktorá je zadaná ako .
//**Dotykový vektor** (tečný vektor)// v smere parametru k ploche a dotykový vektor v smere parametru sú určené vzťahmi
,
.
Rovnica //**dotykovej roviny** (tečné roviny)// je určené ako .
//**Skruty** (skrutové vektory)// charakterizujú "vyklenutie" plochy v miestach napojenia. Sú definované pomocou zmiešaných parciálnych derivácií ako .
//**Normálu** (kolmicu)// k ploche v bode určíme ako normalizovaný vektorový súčin dotykových vektorov, teda .
//**Hlavná krivka** plochy// v smere parametru je každá krivka určená rovnicou pevného parametru a premenného parametru . Analogicky to platí aj pre hlavnú krivku v smere parametru . //**Rohy** plochy// sú body , , a . //**Strany** plochy// sú hlavné krivky v oboch smeroch, kde pevný parameter má hodnotu alebo . Všetky strany dohromady tvoria //**okraj** plochy//.
Analógiou naväzovania segmentov a ich skladania do krivky aj plochy sa skladajú z častí, ktoré voláme //**pláty**//. Naväzovanie plôch sa nazýva //plátovanie//. AJ pri plochách rozoznávame parametrickú spojitosť a gemometrickú spojitosť . Napríklad dva pláty sú spojité, ak majú spoločnú stranu a priečne parciálne derivácie vo všetkých bodoch spoločnej strany sú zhodné.
Plochy sa zadávajú //riadiacimi bodmi// a //bázovými funkciami//. Väčšinou sa používajú plochy //**aproximačné**//. Interpolácia vo viac ako dvoch dimenziách je náročná a vyžaduje rozsiahle výpočty. //**Interpolačná**// plocha má bodov. Interpoláciou vektorovým polynómom je možné plochu zapísať ako .
Na aproximačné vyjadrenie plôch sa používajú tzv. //12-vektorový Hermitovský plát// alebo //16-vektorový// (obsahuje navyše 4 skrutové vektory v každom rohu plátu).
===== Plochy zadané okrajom =====
Plochy môžu byť zadané aj pomocou všetkých kriviek určujúcich //okraj//, napr. 4 v prípade štvoruholníkového plátu.
//**Bilineárna Coonsova plocha**// je jednoznačne určená štyrmi krivkami , , a , ktoré musia tvoriť uzavretý okraj budúceho plátu.
Rovnica, ktorá určuje bilineárnu Coonsovu plochu sa dá zjednodušene zapísať v tvare , kde bod uprostred matice je hľadaným riešením tejto implicitnej rovnice. Na výpočet bilineárnej plochy však slúži explicitné vyjadrenie tejto rovnice, ktoré môžeme vidieť na obrázku spolu s grafickým znázornením výpočtu. Zásadným problémom plochy je, že zo zadaného okraja nie je možné jednoducho vyjadriť priečne dotykové vektory a teda nie je ľahké vytvoriť hladké spojenie dvoch takýchto plátov.
{{:mgr-szz:in-gra:biCoons_surface.jpg?450|Bilineárna Coonsova plocha}}
//**Bikubická plocha**// je rovnako určená štyrmi krivkami, ale popísaná vzťahom , kde dané funkcie predstavujú Hermitovské polynómy a . Pre rovnaké dôvody ako v predchádzajúcom prípade, ani tieto plochy sa nepoužívajú na plátovanie so spojitou prvou deriváciou.
Až //**všeobecná bikubická plocha**// (po česky //obecná//) umožňuje hladké naväzovanie plátov, keďže je pri nej potrebné zadávať aj dotykové vektory podľa okraja. Okrem 4 spomínaných kriviek ju preto určujú aj priečne vektory pozdĺž okrajov , , a . Ďalej je tiež určená skrutmi v jednotlivých rohoch, teda vektormi , , a .
Vzťah pre všeobecnú bikubickú plochu je rozšírený o ďalšie dva Hermitovské polýnómy tretieho stupňa , a implicitná rovnica plochy má tvar .
===== Bézierove plochy =====
Bézierove plochy používajú niektoré modelovacie systémy k reprezentácii povrchu telies, pretože sú ľahko diferencovateľné, jednoducho sa modelujú a tiež je pomerne ľahko môžné vypočítať priesečník s lúčom. Tieto plochy sú vlastne špeciálnym prípadom zložitejšej reprezentácie povrchov pomocou NURBS.
Na obrázku vidíme definíciu Bézierovej plochy, kde bázové funkcie a predstavujú Bernsteinove polynómy -tého (resp. -tého) stupňa.
{{:mgr-szz:in-gra:bezier_surface_1.jpg?350 |Všeobecný Bézierov plát}}
{{:mgr-szz:in-gra:bezier_surface_2.jpg?450|Napojenie Bézierových plôch}}
Bézierova plocha pri zmene jedného riadiaceho bodu zmení celý svoj tvar. Táto vlastnosť je nevýhodná, a preto sa plochy plátujú. Pre napojenie plátov so spojitosťou nultého stupňa musíme zabezpečiť stotožnenie riadiacich bodov, ktoré určujú príslušnú stranu. Na obrázku vidíme príklad napojenia s geometrickou spojitosťou prvého stupňa (), ktorá vzniká vtedy, ak sú priečne dotykové vektory lineárne závislé.
Metódou na zobrazovanie Bézierových plôch je polygonizácia založená na princípe rekurzívneho delenia (//patch splitting//), pričom sa využíva algoritmus deCasteljau.
===== B-spline plochy =====
Pre modelovanie sú //**B-spline plochy**// oveľa výhodnejšie, pretože sa naväzujú omnoho jednoduchšie než Hermitovské alebo Bézierove pláty. B-spline plochy -tého stupňa totiž zaručujú spojitosť vo všetkých svojich bodoch. ďalšou výhodou je, že zmenou jedného riadiaceho bodu zmeníme vždy iba časť danej plochy.
{{:mgr-szz:in-gra:bspline_surface.jpg?450|Napojenie B-spline plôch}}
Medzi vlastnosti B-spline plochy patrí:
* celá plocha leží v konvexnej obálke svojich riadiacich bodov,
* pri zmene riadiaceho bodu sa zmenia iba pláty, ktoré sú ním určené
* plocha síce všeobecne neprechádza krajnými bodmi plochy, je to ale možné dosiahnuť násobnými riadiacimi bodmi
* sú invariantné k lineárnym transformáciam (otočenie, posun, zmena mierky, skosenie)
===== NURBS plochy =====
//**Neuniformné racionálne B-spline plochy**// sú zovšeobecnením B-spline plôch a predstavujú dnes štandard v priemyslovom modelovaní. Umožňujú definovať širokú škálu plôch, napr. voľne tvarovateľné plochy na báze racionálnych polynómov (//free form surfaces//) alebo plochy založené na priamkách a kuželosečkách. Aj ich vznik datujeme do polovice 20. storočia pre potreby presnej matematickej reprezentácie tvaru karosérie áut, trupu lodí či lietadiel.
{{:mgr-szz:in-gra:nurbs_surface_1.jpg?400|NURBS plocha}}
Z definície, a sú normalizované B-spline bázové funkcie (, sú stupne polynómu) a sú váhy jednotlivých bodov (homogénne súradnice) riadiace siete . Váhy podobe ako v prípade kriviek určujú vplyv riadiaceho bodu na plochu, pričom so zvyšujúcou sa hodnotou váhy sa plocha k bodu primkýna. Podobne ako Bézierove plochy, aj NURBS sú invariantné k lineárnym transformáciam a vďaka racionalite sú naviac invariantné aj k perspektívnej projekcii.
{{ :mgr-szz:in-gra:nurbs_surface_2.jpg?280|Rotačná plocha}}
O plochách NURBS hovoríme aj v prípade modelovacej techniky zvanej //**šablónovanie** (sweeping)//, kde patria napríklad:
* //**translačné šablónovanie**// - obrys je ľubovoľný a trajektória, po ktorej je obrys ťahaný je úsečka, dostávame tzv. //priamkové plochy// popísané vzťahom , typy translačného šablónovania sú -- po úsečke s nemeniacou sa profilovou krivkou (//extruded surface//), po úsečke medzi danými profilmi (//ruled surface//) a poťahovanie (//skinning//),
* //**rotačné šablónovanie**// - obrys je ľubovoľný a trajektória, po ktorej je obrys ťahaný je kružnica alebo jej časť -- toto teleso je možné získať aj rotáciou okolo osi, výsledkom je //rotačná plocha// (viď obrázok),
* //**všeobecné šablónovanie**// - obrys i trajektória je ľubovoľná, získavame //zovšeobecnenú valcovú plochu//.
===== Implicitné povrchy =====
Implicitné vyjadrenie plochy tvorí alternatívu k povrchu definovanom pomocou polygónov alebo parametrických plátov. Výhodou je napríklad kompaktnejšia reprezentácia či jednoduchšie sledovanie lúča (paprsku). Výpočet sledovania lúča je ale časovo náročný, rovnako je náročné aj zobrazovanie plochy v reálnom čase. Väčšina zobrazovacích metód v konečom dôsledku aj tak prevádza implicitné plochy na parametrické vyjadrenie alebo rovinné plošky, tzv. //polygonizácia implicitných plôch//.
Funkcia priraďuje každému bodu v priestore nejakú skalárnu hodnotu a definuje teda skalárne pole. Nami hľadaný objekt je //izoplocha//, teda množina bodov s rovnakou funkčnou hodnotou. Ak , bod leží //na povrchu// plochy. Ak alebo , možeme hovoriť, že bod leží //vo vnútri// (alebo //vonku//) objektu ohraničeného plochou, no ktorá hodnota označuje čo, už závisí na konkrétnom kontexte.
//Normály povrchu// sú obvykle určené //**gradientom**// príslušnej funkcie, teda .
Medzi implicitné povrchy zaraďujeme //**blobby objekty** (kvapky)// od J. Blinna, //**metaballs**// či //**soft objects**// od Wyvilla.
Príkladom implicitnej plochy (množiny bodov v trojrozmernom priestore) je //guľová plocha// zadaná implicitnou rovnicou .
Implicitné plochy môžu byť reprezentované aj takzvanými //**dištančnými povrchmi**// (viď zoznam na obrázku).
{{:mgr-szz:in-gra:dist_surface.jpg?250|Dištančné povrchy}}
===== Delené povrchy (nie je súčasťou novej otázky)=====
Modely sú reprezentované pomocou mnohouholníkov, avšak len málokedy majú objekty reálneho sveta ostré hrany. Pri modelovaní pomocou polygónov nastávajú problémy s úrovňou detailov. Aj keď model aproximujeme dostatočným množstvom polygónov, pri zväčšení sa problém hrán znovu objaví. Riešením je delenie povrchov.
Polygonálna sieť je množina vrcholov a prepojení medzi nimi, čím definuje topológiu povrchu a vymedzuje jednotlivé plošky. Delenie je rekurzívny proces, pri ktorom je polygónová sieť zjemňovaná pridávaním vrcholov a plošiek. Pri zvyšovaní počtu vrcholov síce dochádza k výraznému spomaleniu a takéto modely sú pamäťovo náročné, ale aj napriek tomu je zjemňovanie siete významné pri tvorbe animácií a statických modelov. Generované povrchy, kedy zvyšujeme úroveň detailov sa nazývajú //**delené povrchy** (subdivision surfaces)//.
Povrchy môžeme //**deliť nad poškami**// alebo //**deliť nad vrcholmi**//. Dôležitým faktorom pri delení povrchov je //topológia// polygónovej siete. Môže sa jednať napríklad o trojuholníkovú sieť, štvorcovú sieť alebo sieť s ľubovoľnou topológiou. Obidve nasledujúce prezentované deliace schémy však dokážu deliť povrchy s ľubovoľnou topológiou, čo je ich veľká výhoda.
=== Doo-Sabin ===
Doo-Sabin je aproximačná deliaca schéma používajúca delenie nad vrcholmi.
{{ http://upload.wikimedia.org/wikipedia/commons/thumb/5/56/DooSabin_subdivision.png/800px-DooSabin_subdivision.png?400|Kubické Hermitovské polynómy}}
//Ploškový bod// je vypočítaný ako priemer všetkých vrcholov plošky podľa vzťahu . Pre každý vrchol potom vypočítame nový vrchol prislúchajúci k pôvodnému ako priemer ploškového bodu, pôvodného vrcholu a stredu hrán, ktoré z neho vychádzajú, teda . Takto vznikajú 3 typy nových plošiek -- //**plošková**// (červená), //**hranová**// (žltá) a //**vrcholová**// (modrá).
Povrchy generované delením Doo-Sabin spĺňajú podmienku spojitosti (okrem hranice, kde je sieť otvorená).
=== Catmull-Clark ===
(Tu môžete spomenúť, docent Sochor to má rád ;-), oskarový krátkometrážny animovaný film od štúdia Pixar "//Geriho hra (1997)//", ktorý režíroval český rodák Jan Pinkava a pri jeho tvorbe bola naplno využitá práve deliaca schéma Catmull-Clark (viac informácií v článku [[http://graphics.pixar.com/library/Geri/paper.pdf]]).)
{{ :mgr-szz:in-gra:delenie_surface.jpg?450|Delenie plochy - výpočet nových vrcholov}}
Catmull-Clark je aproximačná deliaca schéma používajúca delenie nad ploškami.
Podobne ako pri delení Doo-Sabin, aj tu si spočítame //**poškový bod**// , avšak zatiaľ čo v predchádzajúcom prípade plnil len funkciu medzivýsledku pri výpočte nových bodov, teraz sa stáva súčasťou výslednej zjemnenej siete. Ďalej určíme //**hranový bod**// ako priemer vrcholov hrany a ploškových bodov podľa vzťahu . Posledný typ bodu, ktorý musíme spočítať je //**vrcholový bod**// zjednodušene vyjadrený vzťahom , kde je priemer nových stenových bodov na stenách priľahlých k vrcholu, je priemer nových hranových bodov a je pôvodný vrchol.
Povrchy generované delením Catmull-Clark spĺňajú podmienku spojitosti (mimo výnimočné vrcholy dokonca až spojitosť ).