Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

mgr-szz:in-gra:16-gra [2016/06/09 15:24]
haf vytvořeno
mgr-szz:in-gra:16-gra [2020/04/12 16:56]
Řádek 1: Řádek 1:
-====== 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 <​math>​z = f(x,​y)</​math>​. 
- 
-**Implicitne** zadaná plocha je vyjadrená rovnicou <​math>​F(x,​y,​z) = 0</​math>​ (podrobnejšie v časti o implicitných plochách). 
- 
-**Parametrickým** vyjaderním plochy <​math>​Q(u,​v)</​math>​ je bodová rovnica dvoch parametrov <​math>​u</​math>​ a <​math>​v</​math>​ nadobúdajúcich hodnoty z intervalu <​math><​0,​1></​math>,​ ktorá je zadaná ako <​math>​Q(u,​v) = [x(u,v), y(u,v), z(u,​v)]</​math>​. 
- 
-//​**Dotykový vektor** (tečný vektor)// <​math>​\vec{q_{u}}(u,​v)</​math>​ v smere parametru <​math>​u</​math>​ k ploche <​math>​Q(u,​v)</​math>​ a dotykový vektor <​math>​\vec{q_{v}}(u,​v)</​math>​ v smere parametru <​math>​v</​math>​ sú určené vzťahmi 
-<​math>​\vec{q_{u}}(u,​v) = \frac{\partial Q(u,​v)}{\partial u}) = \left(\frac{\partial x(u,​v)}{\partial u}, \frac{\partial y(u,​v)}{\partial u}, \frac{\partial z(u,​v)}{\partial u}\right)</​math>,​ 
-<​math>​\vec{q_{v}}(u,​v) = \frac{\partial Q(u,​v)}{\partial v}) = \left(\frac{\partial x(u,​v)}{\partial v}, \frac{\partial y(u,​v)}{\partial v}, \frac{\partial z(u,​v)}{\partial v}\right)</​math>​. 
- 
-Rovnica //​**dotykovej roviny** (tečné roviny)// je určené ako <​math>​T(r,​s) = Q(u,v) + r.\vec{q_{u}} + s.\vec{q_{v}};​ r,s \in R</​math>​. 
-//​**Skruty** (skrutové vektory)// charakterizujú "​vyklenutie"​ plochy v miestach napojenia. Sú definované pomocou zmiešaných parciálnych derivácií ako <​math>​\vec{q_{uv}}(u,​v) = \frac{\partial^{2}Q(u,​v)}{\partial u \partial v}</​math>​. 
-//​**Normálu** (kolmicu)// k ploche v bode <​math>​Q</​math>​ určíme ako normalizovaný vektorový súčin dotykových vektorov, teda <​math>​\vec{n} = \frac{\vec{q_{u}} \times \vec{q_{v}}}{|\vec{q_{u}} \times \vec{q_{v}}|}</​math>​. 
- 
-//**Hlavná krivka** plochy// v smere parametru <​math>​u</​math>​ je každá krivka určená rovnicou <​math>​Q(u,​k)</​math>​ pevného parametru <​math>​k</​math>​ a premenného parametru <​math>​u</​math>​. Analogicky to platí aj pre hlavnú krivku v smere parametru <​math>​v</​math>​. //**Rohy** plochy// sú body <​math>​Q(0,​0)</​math>,​ <​math>​Q(1,​0)</​math>,​ <​math>​Q(0,​1)</​math>​ a <​math>​Q(1,​1)</​math>​. //​**Strany** plochy// <​math>​Q(u,​v)</​math>​ sú hlavné krivky v oboch smeroch, kde pevný parameter má hodnotu <​math>​0</​math>​ alebo <​math>​1</​math>​. 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ť <​math>​C</​math>​ a gemometrickú spojitosť <​math>​G</​math>​. Napríklad dva pláty sú <​math>​C^{1}</​math>​ 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 <​math>​P_{ij}</​math>​ má <​math>​(m + 1) \times (n + 1)</​math>​ bodov. Interpoláciou vektorovým polynómom je možné plochu zapísať ako <​math>​\vec{P}(u,​v) = \sum_{i=0}^{m} \sum_{j=0}^{n} b_{ij}.u^{i}.v^{j}</​math>​. 
- 
-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 <​math>​P(u,​0)</​math>,​ <​math>​P(u,​1)</​math>,​ <​math>​P(0,​v)</​math>​ a <​math>​P(1,​v)</​math>,​ 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 <​math>​[1-u,​-1,​u].\mathbf{C}.[1-v,​-1,​v]^{T} = 0</​math>,​ kde bod uprostred matice <​math>​\mathbf{C}</​math>​ 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 <​math>​[F_{1}(u),​-1,​F_{2}(u)].\mathbf{C}.[F_{1}(v),​-1,​F_{2}(v)]^{T} = 0</​math>,​ kde dané funkcie predstavujú Hermitovské polynómy <​math>​F_{1}(t) = 2t^{3} - 3t^{2} + 1</​math>​ a <​math>​F_{2}(t) = -2t^{3} + 3t^{2}</​math>​. 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 <​math>​\vec{p_{v}}(u,​0)</​math>,​ <​math>​\vec{p_{v}}(u,​1)</​math>,​ <​math>​\vec{p_{u}}(0,​v)</​math>​ a <​math>​\vec{p_{u}}(1,​v)</​math>​. Ďalej je tiež určená skrutmi v jednotlivých rohoch, teda vektormi <​math>​\vec{t}(0,​0)</​math>,​ <​math>​\vec{t}(0,​1)</​math>,​ <​math>​\vec{t}(1,​0)</​math>​ a <​math>​\vec{t}(1,​1)</​math>​. 
-Vzťah pre všeobecnú bikubickú plochu je rozšírený o ďalšie dva Hermitovské polýnómy tretieho stupňa <​math>​F_{3}(t) = t^{3} - 2t^{2} + t</​math>,​ <​math>​F_{4}(t) = t^{3} - t^{2}</​math>​ a implicitná rovnica plochy má tvar <​math>​[F_{3}(u),​F_{1}(u),​-1,​F_{2}(u),​F_{4}(u)].\mathbf{C}.[F_{3}(v),​F_{1}(v),​-1,​F_{2}(v),​F_{4}(v)]^{T} = 0</​math>​. 
- 
-===== 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 <​math>​B_{i}^{m}</​math>​ a <​math>​B_{j}^{n}</​math>​ predstavujú Bernsteinove polynómy <​math>​m</​math>​-tého (resp. <​math>​n</​math>​-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 (<​math>​G^{1}</​math>​),​ 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 <​math>​n</​math>​-tého stupňa totiž zaručujú <​math>​C^{n-1}</​math>​ 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, <​math>​N_{i}^{k}(u)</​math>​ a <​math>​N_{j}^{l}(v)</​math>​ sú normalizované B-spline bázové funkcie (<​math>​k</​math>,​ <​math>​l</​math>​ sú stupne polynómu) a <​math>​\omega_{i,​j}</​math>​ sú váhy jednotlivých bodov (homogénne súradnice) riadiace siete <​math>​\mathbf{P}</​math>​. 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 <​math>​Q(u,​v) = (1-u).P(0,​v) + u.P(1,​v)</​math>,​ 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 <​math>​f(x,​y,​z)</​math>​ 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 <​math>​f = 0</​math>,​ bod leží //na povrchu// plochy. Ak <​math>​f < 0</​math>​ alebo <​math>​f > 0</​math>,​ 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 <​math>​\nabla f(x,y,z) = \left(\frac{df}{dx},​ \frac{df}{dy},​ \frac{df}{dz}\right)</​math>​. 
- 
-Medzi implicitné povrchy zaraďujeme //**blobby objekty** (kvapky)// od J. Blinna, //​**metaballs**//​ či //**soft objects**// od Wyvilla. 
- 
-Príkladom implicitnej plochy (množiny bodov <​math>​P</​math>​ v trojrozmernom priestore) je //guľová plocha// zadaná implicitnou rovnicou <​math>​Q(P) = x^{2} + y^{2} + z^{2} = r^{2}</​math>​. 
- 
-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 ===== 
- 
-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 <​math>​V_{F} = \frac{1}{N} \sum_{i=1}^{N} V_{i}</​math>​. 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 <​math>​V'​ = \frac{V + V_{F} + M_{E1} + M_{E2}}{4}</​math>​. 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 <​math>​C^{1}</​math>​ 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**// <​math>​V_{F}</​math>,​ 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**// <​math>​V_{E}</​math>​ ako priemer vrcholov hrany a ploškových bodov podľa vzťahu <​math>​V_{E} = \frac{E_{1} + E_{2} + V_{F1} + V_{F2}}{4}</​math>​. Posledný typ bodu, ktorý musíme spočítať je //​**vrcholový bod**// <​math>​V_{V}</​math>​ zjednodušene vyjadrený vzťahom <​math>​V_{V} = \frac{Q + 2R + S.(n-3)}{n}</​math>,​ kde <​math>​Q</​math>​ je priemer nových stenových bodov na stenách priľahlých k vrcholu, <​math>​R</​math>​ je priemer nových hranových bodov a <​math>​S</​math>​ je pôvodný vrchol. 
- 
-Povrchy generované delením Catmull-Clark spĺňajú podmienku <​math>​C^{1}</​math>​ spojitosti (mimo výnimočné vrcholy dokonca až spojitosť <​math>​C^{2}</​math>​). 
mgr-szz/in-gra/16-gra.txt · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0