The wiki page is under active construction, expect bugs.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
statnice:bakalar:be4b39vgo [2025/05/27 21:21] – [4. SVG – Scalable Vector Graphics] zapleka3statnice:bakalar:be4b39vgo [2025/06/05 18:36] (current) zapleka3
Line 1: Line 1:
-==== Vnímání barev a barevné modely. Rastrová grafika, základní rastrové formáty souborů. Vektorová grafika, reprezentace 2D a 3D objektů, základní formáty souborů pro 2D a 3D data. Principy 3D modelování a mapování textur. ====+====== Vnímání barev a barevné modely. Rastrová grafika, základní rastrové formáty souborů. Vektorová grafika, reprezentace 2D a 3D objektů, základní formáty souborů pro 2D a 3D data. Principy 3D modelování a mapování textur. ======
  
 [[https://intranet.fel.cvut.cz/cz/education/bk/predmety/46/98/p4698806.html|B4B39VGO]] [[https://moodle.fel.cvut.cz/local/kos/pages/course/info.php?code=BE4B39VGO&semester=|Webové stránky předmětu]] [[https://intranet.fel.cvut.cz/cz/education/bk/predmety/46/98/p4698806.html|B4B39VGO]] [[https://moodle.fel.cvut.cz/local/kos/pages/course/info.php?code=BE4B39VGO&semester=|Webové stránky předmětu]]
Line 61: Line 61:
 === CIE XYZ === === CIE XYZ ===
  
-  * Transformace z CIE RGB za účelem odstranění záporných hodnot.+  * Převádí prostor CIE RGB do podoby bez záporných hodnot složek, což je vhodnější pro fyzickou reprezentaci a práci s barvami v praxi (např. kalibrace displejů).
   * **Vlastnosti:**   * **Vlastnosti:**
     * Všechny srovnávací funkce jsou **kladné**.     * Všechny srovnávací funkce jsou **kladné**.
Line 70: Line 70:
 === CIE xyY === === CIE xyY ===
  
-  * Normalizovaná verze XYZ – pro eliminaci vlivu jasu.+  * Normalizovaná verze XYZ, která umožňuje snadnější porovnání barev bez ohledu na jejich jasovou složku.
   * Definováno takto:   * Definováno takto:
     \[     \[
Line 79: Line 79:
     x + y + z = 1     x + y + z = 1
     \]     \]
-  * Pro daný jas \( \) lze z \x \\( \) zrekonstruovat celou barvu. +  * Z hodnot \( x, y \) (chromatičnostilze při známém jasu \( \) zpětně rekonstruovat kompletní barvu. 
-  * Umožňuje znázornění barev v 2D diagramu – **chromatickém diagramu**.+  * Barvy lze znázornit ve 2D pomocí **chromatického diagramu**, který je užitečný při srovnávání barevných gamutů (rozsahu barev) různých zařízení.
  
 ==== 4. Chromatický diagram (CIE 1931) ==== ==== 4. Chromatický diagram (CIE 1931) ====
Line 337: Line 337:
  
 Vektorová grafika popisuje obraz pomocí **geometrických útvarů** (např. úsečky, křivky, elipsy), nikoliv maticí pixelů. Vektorové objekty lze **libovolně zvětšovat bez ztráty kvality**, protože se vykreslují dynamicky při každé změně velikosti nebo přiblížení.  Vektorová grafika popisuje obraz pomocí **geometrických útvarů** (např. úsečky, křivky, elipsy), nikoliv maticí pixelů. Vektorové objekty lze **libovolně zvětšovat bez ztráty kvality**, protože se vykreslují dynamicky při každé změně velikosti nebo přiblížení. 
 +
 +{{:statnice:bakalar:pasted:20250527-212929.png?300}}
  
 Používá se v nástrojích jako **Adobe Illustrator, Corel Draw, Flash** nebo při práci s formátem **SVG (Scalable Vector Graphics)**. Používá se v nástrojích jako **Adobe Illustrator, Corel Draw, Flash** nebo při práci s formátem **SVG (Scalable Vector Graphics)**.
Line 354: Line 356:
  
 Rozlišujeme dva typy: Rozlišujeme dva typy:
 +
 +{{:statnice:bakalar:pasted:20250527-212634.png?300}}
  
   * **Interpolační** – křivka prochází všemi kontrolními body (např. Lagrangeova interpolace).   * **Interpolační** – křivka prochází všemi kontrolními body (např. Lagrangeova interpolace).
   * **Aproximační** – křivka kontrolní body jen "následuje", ale neprochází jimi přesně (např. Bézier, B-spline).   * **Aproximační** – křivka kontrolní body jen "následuje", ale neprochází jimi přesně (např. Bézier, B-spline).
  
-Spojitosti mezi segmenty:+=== Spojitost segmentů u křivek ===
  
-  * **C₀** – konec jednoho segmentu navazuje na začátek dalšího+Spojitost (continuity) určuje, jak hladce na sebe navazují segmenty **složených (piecewise) křivek**. Každý segment je sám o sobě plynulý, ale **přechody mezi nimi** mohou být ostré nebo hladké podle typu spojitosti. 
-  * **C₁** – plynulé navázání tečny (1derivace)+ 
-  * **C₂** – plynulé navázání zakřivení (2derivace). +**Parametrická spojitost (Cⁿ)** – zajišťuje hladkost na základě derivací: 
-  * **G** – geometrická spojitost (směr derivace je zachován, ale její velikost být nemusí).+ 
 +  * **C₀ spojitost (pozice)**   
 +    * Segmenty se dotýkají – koncový bod jednoho je totožný se začátkem druhého.   
 +    * Křivka může mít ostrý zlom
 +  * **C₁ spojitost (rychlost)**   
 +    * První derivace (tečna) je plynulá – segmenty mají stejný směr a velikost tečny v místě spojení  
 +    * Zaručuje vizuálně hladké napojení
 +  * **C₂ spojitost (zrychlení)**   
 +    * I druhá derivace je spojitá – zakřivení se mění plynule  
 +    * Křivka je ještě plynulejší, vhodná pro CAD nebo animace. 
 + 
 +**Geometrická spojitost (Gⁿ)** – zachovává pouze **vizuální hladkost**, bez ohledu na velikosti derivací: 
 + 
 +  * **G₀** – jako C₀, segmenty se spojí ve stejném bodě
 +  * **G** – tečny mají stejný směr, ale mohou mít jinou velikost. 
 +  * **G₂** – křivka má plynulé zakřivení (ne nutně přesně stejné derivace jako u C₂). 
 + 
 +Geometrická spojitost je méně striktní než parametrická, ale často **dostačující pro vizuální hladkost** v praxi (např. v grafice a modelování). 
 + 
 +{{:statnice:bakalar:pasted:20250527-212954.png?300}} {{:statnice:bakalar:pasted:20250527-215414.png?300}}
  
 === Bézierovy křivky === === Bézierovy křivky ===
Line 374: Line 397:
   * Výpočet pomocí **de Casteljauova algoritmu** – opakovaná lineární interpolace.   * Výpočet pomocí **de Casteljauova algoritmu** – opakovaná lineární interpolace.
   * Lze spojovat s garantovanou C₀, C₁ a C₂ spojitostí (viz podmínky na body).   * Lze spojovat s garantovanou C₀, C₁ a C₂ spojitostí (viz podmínky na body).
 +
 +{{:statnice:bakalar:pasted:20250527-213406.png?300}}
 +
 +=== de Casteljauův algoritmus (pro Bézierovy křivky) ===
 +
 +  * {{:statnice:bakalar:pasted:20250527-213436.png?200}} {{:statnice:bakalar:pasted:20250527-213449.png?400}}
 +  * Pracuje s danými **kontrolními body** a parametrem \( t \in [0,1] \).
 +  * Opakovanou **lineární interpolací** mezi sousedními body vytváří nové body, dokud nezíská jediný bod na křivce odpovídající danému \( t \).
 +  * Algoritmus je **rekurzivní** – umožňuje:
 +    * **Vyhodnocení bodu** na křivce,
 +    * **Dělení křivky** na dvě části v libovolném \( t \),
 +    * **Rendering** křivky pomocí opakovaného dělení.
  
 === B-spline křivky === === B-spline křivky ===
 +{{:statnice:bakalar:pasted:20250527-215543.png?300}}
  
   * **Piecewise** aproximační křivky – složené z více segmentů.   * **Piecewise** aproximační křivky – složené z více segmentů.
Line 390: Line 426:
   * **Multiplicita** uzlu/bodu ovlivňuje spojitost:   * **Multiplicita** uzlu/bodu ovlivňuje spojitost:
     * Spojitost = \( C_{n-r} \), kde \( r \) je násobnost a \( n \) stupeň křivky.     * Spojitost = \( C_{n-r} \), kde \( r \) je násobnost a \( n \) stupeň křivky.
 +    * {{:statnice:bakalar:pasted:20250527-215635.png?300}}
   * **Reparametrizace a převod B-spline na Bézier**     * **Reparametrizace a převod B-spline na Bézier**  
     * Aby bylo možné efektivně vykreslit B-spline křivku pomocí de Casteljauova algoritmu, je třeba provést **reparametrizaci** – úpravu parametrického rozsahu tak, aby odpovídal jednotlivým segmentům.       * Aby bylo možné efektivně vykreslit B-spline křivku pomocí de Casteljauova algoritmu, je třeba provést **reparametrizaci** – úpravu parametrického rozsahu tak, aby odpovídal jednotlivým segmentům.  
Line 409: Line 446:
   * Rendering: převede se na Bézier segmenty zvýšením násobnosti uzlů.   * Rendering: převede se na Bézier segmenty zvýšením násobnosti uzlů.
   * Využití: **3D modelování, průmyslový design (CAD)**.   * Využití: **3D modelování, průmyslový design (CAD)**.
 +
 +== de Boorův algoritmus (pro B-spline a NURBS křivky) ==
 +
 +  * **Zobecnění de Casteljauova algoritmu** pro libovolné B-spline křivky s uzlovým vektorem.
 +  * Slouží pro **vyhodnocení bodu na křivce** pomocí postupného váženého zprůměrování kontrolních bodů.
 +  * Zohledňuje:
 +    * **stupeň křivky \( n \)**,
 +    * **multiplicitu uzlu \( r \)**,
 +    * **lokální kontrolní body** určené uzlovým intervalem.
 +
 +**Postup výpočtu bodu:**
 +  - Najdi interval uzlového vektoru \( u_i \leq u < u_{i+1} \), kam parametr \( u \) spadá.
 +  - Aplikuj opakované zprůměrovávání kontrolních bodů mezi uzly (rekurze přes stupně).
 +  - Výsledkem je bod \( d^{n-r}_{i-r+1}(u) \) na křivce.
  
 ==== 3. Rendering parametrických křivek ==== ==== 3. Rendering parametrických křivek ====
  
-  * Rendering probíhá opakovaným **dělením pomocí de Casteljauova (nebo de Boorova) algoritmu**, dokud není segment dostatečně malý+Parametrické křivky se nevykreslují jako celek, ale **aproximují se pomocí úseček**. K tomu se používá princip **rekurzivního dělení křivky**, které zajistí požadovanou přesnost vykreslení. 
-  * **de Casteljauův algoritmus (pro Bézierovy křivky)**   + 
-    * V každém kroku lineárně interpoluje mezi sousedními body a tím vytváří nové body, dokud nezíská jeden bod pro danou hodnotu parametru \t \).   +Rendering probíhá na základě algoritmu vhodného pro daný typ křivky: 
-    * Používá se rekurzivně – zároveň umožňuje ivku dělit na dvě části v libovolném bodě \( t \). + 
-  * **de Boorůalgoritmus (pro B-spline NURBS křivky)**   +  * **Bézierovy křivky** – používá se lení pomocí **de Casteljauova algoritmu**. 
-    * Obecnější varianta, která pracuje s **uzlovým vektorem**. V každém kroku počítá vážené průměry kontrolních bodů podle hodnoty parametru a pozice v uzlovém vektoru.   +  * **B-spline a NURBS křivky** – používá se **de Boorův algoritmus** nebo převod na Bézierovy segmenty. 
-    * Algoritmus probíhá v několika úrovních, postupně přibližuje výsledný bod na ivce z lokální podmnožiny kontrolních bodů+ 
-  * Pro velké segmenty: pracuje se v **homogenních souřadnicích**, jinak v běžné kartézské soustavě. +  - **Zhodnocení velikosti segmentu** 
-  * U **racionálních křivek** (NURBSmůže docházet ke ztrátě spojitosti i nesprávném výpočtu – musí se zachovat homogenních souřadnicích.+    * U Bézierových ivek se například kontroluje **plocha konvexního obalu** (např. čtyřúhelník daný kontrolními body). 
 +    * Pokud je oblast menší než určitý práh (threshold), segment se vykreslí jako úsečka mezi krajními body. 
 +  - **Dělení křivky na menší segmenty** 
 +    * Pokud není segment dostatečně „malý“, **ivka se rozdělí** na dvě části (např. v bodě \( t = 0{,}5 \)) a proces se aplikuje rekurzivně na každou z nich. 
 +    * U racionálních křivek probíhá dělení v **homogenních souřadnicích**, aby se zachovala geometrická přesnost
 +  **Rekurzivní vykreslování*
 +    * Proces pokračuje, dokud nejsou všechny segmenty dostatečně malé pro vykreslení přímkou. 
 +    * Tím vznikne čárková aproximace celé křivky. 
 +  - **Převod B-spline/NURBS na Bézier pro vykreslení** 
 +    * Zvýší se **násobnost vnitřních uzlů** v uzlovém vektoru na hodnotu rovnající se stupni křivky
 +    * Každý výsledný segment se poté vykreslí jako **samostatná Bézierova ivka**
 +  **Výpočty souřadnicových systémech** 
 +    * Pokud výpočet probíhá **v kartézských souřadnicích**, používá se běžná lineární interpolace 
 +    * U **racionálních křivek** je nutné výpočty provádět **v homogenním prostoru** \((xw, yw, w)\), aby se zachovala spojitost a správný tvar. 
 +  - **Alternativní ístup – vzorkování** 
 +    * Křivka se vyhodnocuje rovnoměrných parametrech a výsledné body se spojí úsečkami. 
 +    * Tato metoda poskytuje rychlou, ale méně přesnou aproximaci.
  
 ==== 4. SVG – Scalable Vector Graphics ==== ==== 4. SVG – Scalable Vector Graphics ====
Line 432: Line 499:
   * Vykreslování probíhá podle pořadí definic (tzv. **malířův algoritmus**).   * Vykreslování probíhá podle pořadí definic (tzv. **malířův algoritmus**).
     * Problém nastává např. u tří objektů, které se všechny částečně překrývají (**malířův problém**).     * Problém nastává např. u tří objektů, které se všechny částečně překrývají (**malířův problém**).
 +
 +===== 5. Reprezentace 3D objektů a principy 3D modelování =====
 +
 +3D objekty lze reprezentovat různými způsoby v závislosti na účelu použití – rendering, fyzikální simulace, nebo modelování. Každá reprezentace má specifické výhody z hlediska přesnosti, úspory paměti nebo možností úprav.
 +
 +==== 1. Typy reprezentace 3D objektů ====
 +
 +  * **Hraniční reprezentace (Boundary Representation)** – objekt je určen povrchem složeným z polygonů (typicky trojúhelníky nebo quady).
 +  * **Polygonální reprezentace** – objekty tvořené:
 +    * **Vertex** – bod ve 3D prostoru,
 +    * **Edge** – spojení dvou vrcholů,
 +    * **Face** – plocha uzavřená hranami (trojúhelníky/čtyřúhelníky).
 +  * **Polygonální polévka** – nestrukturovaná množina polygonů bez topologie, opakované vrcholy, nevhodná pro úpravy.
 +  * **3D mesh** – strukturovaná reprezentace se známou topologií (sousednost bodů, hran, stěn).
 +  * **Diskrétní reprezentace** – 3D objekty uložené jako:
 +    * Rasterové obrázky (sprites, textury),
 +    * Volumetrická data – 3D pole voxelů (např. lékařské skeny).
 +  * **Implicitní reprezentace** – definice objektu rovnicí: např. f(x, y, z) = 0.
 +  * **Procedurální reprezentace** – objekt generován pravidly nebo algoritmem (např. L-systémy).
 +
 +{{:statnice:bakalar:pasted:20250527-221024.png?350}} {{:statnice:bakalar:pasted:20250527-221035.png?350}}
 +
 +==== 2. Datové struktury pro reprezentaci ====
 +
 +  * **Polygonální polévka** – seznam nezávislých polygonů, žádné informace o sousednosti.
 +  * **Seznam vrcholů a stěn** – vrcholy uloženy zvlášť, stěny definovány indexy do seznamu vrcholů.
 +  * **Winged edge** – každá hrana zná sousední stěny a vrcholy, efektivní pro topologii.
 +  * **Half-edge** – každá hrana rozdělena na dvě orientované poloviny, vhodné pro směrové operace a reprezentaci topologie.
 +
 +==== 3. Formát OBJ ====
 +
 +  * Lidsky čitelný textový formát pro ukládání 3D modelů.
 +  * **v** – vertex (x, y, z, [w]),
 +  * **vt** – texture coordinate (u, [v, w]),
 +  * **vn** – normal vector (x, y, z),
 +  * **f** – face (seznam vertexů, např. `f v1/vt1/vn1 ...`),
 +  * **l** – line.
 +
 +==== 4. Parametrické povrchy – Bézierovy a B-Spline plochy ====
 +
 +Parametrické plochy slouží k přesné reprezentaci zakřivených povrchů pomocí funkcí dvou proměnných (u, v). Povrch je tvořen pohybem kontrolních bodů po křivce, čímž vzniká síť bodů definujících tvar.
 +
 +  * Požadavky na plochy:
 +    - **Přesnost** – věrné zachycení tvaru modelu.
 +    - **Kompaktnost** – reprezentace s malým počtem bodů, nízké paměťové nároky.
 +    - **Lokalita změn** – úprava kontrolního bodu ovlivní jen část povrchu.
 +    - **Spojitost** – typicky požadujeme C² spojitost.
 +    - **Invariantnost vůči transformacím** – afinní i perspektivní, zachována díky homogenním souřadnicím.
 +    - **Efektivní rendering** – možnost rychlé teselace.
 +
 +  * **Piecewise parametrické plochy (patches)** – povrch se skládá z menších oblastí, na nichž je definována parametrizace. Toto rozdělení zajišťuje lokalitu změn.
 +  * **Z křivek na plochu** – např. máme křivky v u-směru a jejich kontrolní body použijeme jako kontrolní body pro křivku ve v-směru.
 +
 +=== Bézierovy plochy ===
 +
 +  * Aproximační polynomiální plochy definované maticí kontrolních bodů.
 +  * Využívají Bernsteinovy polynomy pro výpočet pozice bodů na ploše.
 +  * Nejčastěji stupně 2 nebo 3; plocha je obdélníková a uzavřená uvnitř konvexního trupu.
 +  * Spojitost: C₀ – spojení segmentů, C₁ – plynulé tangenty, C₂ – spojité zakřivení.
 +  * Rendering:
 +    - **Přímý de Casteljau** – bilineární interpolace mezi body ve dvou směrech (u, v).
 +    - **Nepřímý de Casteljau** – výpočetně náročnější, iterativní metoda poskytující větší kontrolu nad výslednou plochou.
 +  * Výhody:
 +    - Jednoduchost a snadné pochopení,
 +    - přesnost v rámci definovaného patch.
 +  * Nevýhody:
 +    - Špatná lokalita změn – úprava jednoho bodu ovlivní celý patch,
 +    - mnoho bodů potřebných pro složité plochy.
 +
 +  * **Teselace Bézierových patchů**:
 +    - Opakované dělení pomocí de Casteljau algoritmu.
 +    - Pro vyšší přesnost se patch rozděluje na menší části.
 +    - Při spojení více patchů může docházet k vizuálním mezerám, pokud není zajištěna geometrická spojitost.
 +
 +=== B-Spline plochy ===
 +
 +  * Aproximační plochy, které jsou obecnější než Bézierovy.
 +  * Využívají dvě množiny **knot vektorů** – jeden pro každou parametrizaci (u, v).
 +  * Každá dimenze (směr u i v) má vlastní stupeň, vlastní množinu kontrolních bodů a knot vektor.
 +  * Výpočet bodu na ploše: **přímý de Boorův algoritmus**, nepřímá varianta existuje.
 +  * Spojitost lze řídit **multiplicitou uzlů** – více stejných uzlů znamená menší spojitost (např. C⁰).
 +  * Výhody:
 +    - Lepší lokalita změn,
 +    - méně kontrolních bodů při zachování tvaru,
 +    - snadný převod na Bézierovy patche pro rendering.
 +  * Nevýhody:
 +    - Složitější konstrukce než Bézier,
 +    - omezení na obdélníkovou topologii.
 +
 +  * **Teselace B-Spline plochy**:
 +    - Nejprve se převede na Bézierovy patche (pomocí knot insertion),
 +    - následně se teseluje každá část samostatně.
 +    - Pro složité plochy je nutné složit více patchů dohromady.
 +
 +=== NURBS (Non-Uniform Rational B-Spline) ===
 +
 +  * Rozšíření B-Spline ploch o **váhy** a **homogenní souřadnice**.
 +  * Schopné reprezentovat přesné kuželosečky (např. kruhy), které klasický B-Spline nezvládne.
 +  * Výhody:
 +    - Nejuniverzálnější a nejpřesnější parametrická plocha,
 +    - invariantní vůči afinním i perspektivním transformacím.
 +  * Výpočet musí probíhat v homogenních souřadnicích, následně se výsledek promítne do 3D prostoru.
 +  * Citlivé na chyby v aritmetice – např. při nesprávném převodu může dojít ke ztrátě spojitosti.
 +
 +==== 5. Modelovací operace ====
 +
 +  - **Blokování** – skládání základních 3D tvarů (kvádry, válce, kužely) do hrubého modelu.
 +  - **Bridge** – spojení dvou profilů (např. křivek nebo ploch) stěnami za vzniku nové plošky; profily musí mít stejný stupeň a knot vektor.
 +  - **Extrude** – vytažení 2D profilu do prostoru podél přímky nebo křivky; vznikne plocha nebo těleso s konstantním průřezem.
 +  - **Loft** – propojení více 2D profilů podle jejich pořadí za vzniku hladkého tělesa.
 +  - **Rotační plocha (lathe)** – otáčení 2D profilu kolem osy; vhodné pro osově symetrické objekty jako vázy nebo kola.
 +  - **Volné modelování** – přímá úprava vrcholů, hran a ploch pro tvorbu složitých tvarů bez použití primitiv.
 +  - **Proporcionální editace** – při pohybu jednoho vrcholu jsou ovlivněny i okolní podle vzdálenosti; lze volit různé druhy plynulosti.
 +  - **Sculpting (sochání)** – organické modelování pomocí štětců, deformací a objemového tahu, vhodné pro tvorbu detailních povrchů.
 +  - **Knife / Subdivide / Loop cut** – rozdělení geometrie pro zvýšení detailu nebo změnu topologie; např. loop cut přidá nové hrany podél smyčky.
 +  - **Snapping** – přichytávání vrcholů k mřížce, jiným vrcholům, hranám nebo plochám; umožňuje přesné zarovnání nebo změnu topologie.
 +  - **Modifiers** – nedestruktivní nástroje pro úpravu geometrie jako Mirror, Array, Bevel, Boolean; lze řetězit a jejich pořadí ovlivňuje výsledek.
 +  - **Subdivision surfaces (Catmull-Clark)** – hladké dělení čtvercových polygonů na menší pro plynulé organické tvary; běžné v animaci.
 +
 +==== 6. Dělené plochy (Subdivision Surfaces) ====
 +
 +  * **Catmull-Clark** – každý čtyřúhelník (quad) se dělí na čtyři menší, čímž vzniká hladší síť se spojitostí C2 (mimo výjimek).
 +  * **Topologická flexibilita** – není nutné dodržet obdélníkovou mřížku jako u Bézier/B-Spline povrchů, lze vytvářet složité objekty jedním povrchem.
 +  * **Lokální detail** – jemné detaily lze přidávat pouze v potřebných oblastech bez ovlivnění celé plochy.
 +  * **Výjimečné vrcholy (póly)** – vrcholy s ≠4 hranami nezaručují C2 spojitost, ale plocha zůstává vizuálně plynulá.
 +  * **Ostré hrany** – lze nastavit ostrost hran pomocí parametrů sharpness; při každém dělení se ostrost snižuje.
 +  * **Frakční ostrost** – ostrost lze nastavit i nelineárně (např. 0.6), výsledný tvar se interpoluje mezi ostrou a hladkou verzí.
 +  * **Nevýhody Bézier/B-Spline** – nelze modelovat objekty s více otvory, nutnost napojování více patchů, nízká lokalita změn.
 +  * **Výhody Subdivision** – jednoduché řízení detailu, snadná konverze na polygonální síť, univerzální pro organické i technické tvary.
 +  * **Požadavky na data** – použití složitějších struktur (např. winged-edge) pro sledování vztahů mezi vrcholy, hranami a plochami.
 +  * **Výsledný mesh** – je definován iterací dělicích pravidel, bez potřeby trimování nebo připojování dalších povrchů.
 +
 +==== 7. Implicitní plochy ====
 +
 +  * **Definice** – implicitní plocha je určena rovnicí ve tvaru F(x, y, z) = 0 (např. koule: x² + y² + z² − r² = 0).
 +  * **Vlastnosti** – bod může být:
 +    - uvnitř (F(x, y, z) < 0),
 +    - na povrchu (F(x, y, z) = 0),
 +    - vně (F(x, y, z) > 0).
 +  * **Výhody** – snadné určení pozice bodu vůči ploše, podpora booleovských operací (sjednocení, průnik), výpočty vzdálenosti.
 +  * **Pole vzdálenosti** – definováno v celém prostoru, lze použít pro výpočet vzdálenosti od bodu, přímky nebo tělesa.
 +
 +  * **Modelování pomocí blobů (metaballs)** – výsledný tvar je kombinací více funkcí popisujících jednotlivé objekty.
 +    - Každý objekt definuje lokální pole vlivu D(r) (např. D(r) = 1 / r² nebo Gaussova funkce).
 +    - Výsledná plocha vzniká jako **isosurface** celkového pole při daném prahu T.
 +  * **Metaballs (Blinn 1982, Nishimura 1985)** – vylepšení blob objektů pomocí funkcí s omezeným dosahem:
 +    - Parametr *a* – síla vlivu (může být i záporná).
 +    - Parametr *b* – poloměr vlivu (za hranicí r ≥ b vliv zaniká).
 +    - Výhodou je řízené spojování a oddělování tvarů podle vzdálenosti a vlivu.
 +    * **Nevýhoda** – změna jednoho objektu ovlivní celé globální pole (malá lokalita změn), vysoká výpočetní náročnost.
 +    * **Využití** – vhodné pro organické a plynulé struktury (např. kapky, tekutiny).
 +  * **Rendering** – extrakce izoploch pomocí:
 +    - **Marching Cubes** – převod na polygonální síť.
 +    - **Raycasting** – sledování průsečíku paprsku s izoplochou.
 +
 +==== 8. Sochání (Sculpting) ====
 +
 +  * Umožňuje přirozené formování detailních objektů.
 +  * Využívá různé štětce, proporční editaci, multi-resolution mesh.
 +  * Vhodné pro organické modely, detaily, postavy.
 +
 +===== 6. Principy mapování textur =====
 +
 +Mapování textur je proces přiřazení souřadnic textury jednotlivým bodům na povrchu 3D objektu, aby mohla být textura správně zobrazena. Nejčastější metodou je UV mapování, které převádí 3D povrch na 2D rovinu a umožňuje efektivní zobrazení detailů bez nutnosti složité geometrie.
 +
 +==== 1. Textury a mapování ====
 +
 +  * **Textura** – funkce reprezentující vlastnosti povrchu objektu: barvu, lesklost, výšku, strukturu.
 +    - Typy: barva (diffuse), specular, roughness, normal, displacement.
 +    - Textura je většinou diskétní funkce definovaná na povrchu objektu.
 +    - Nejčastěji se používají 2D textury, vzácněji 1D nebo 3D textury.
 +
 +  * **Mapování** – každému vrcholu objektu přiřadíme UV souřadnice (U, V) v rozsahu <0,1>.
 +    - UV souřadnice definují, která část textury se zobrazí na daném místě objektu.
 +    * {{:statnice:bakalar:pasted:20250527-223348.png?300}}
 +
 +  * **Interpolace** – pro body mezi vrcholy se UV souřadnice počítají lineárně a pak se z nich získá barva textury.
 +
 +  * **Chování mimo rozsah UV**:
 +    - *Repeat*: souřadnice se periodicky opakují (modulo 1),
 +    - *Extend*: souřadnice se omezí na <0,1>,
 +    - *Clip*: použije se výchozí barva (např. černá).
 +    - {{:statnice:bakalar:pasted:20250527-223428.png?400}}
 +
 +  * **Mip-mapy** – sekvence textur, kde každá má poloviční rozlišení než předchozí.
 +    - Používá se pro lepší vykreslování detailů z různých vzdáleností.
 +    - Pomáhá potlačit aliasing díky odstranění vysokofrekvenčních detailů.
 +    * {{:statnice:bakalar:pasted:20250527-223554.png?250}}
 +
 +==== 2. UV mapování ====
 +
 +  * **UV mapování** – proces přiřazení 2D souřadnic (U, V) jednotlivým bodům modelu, které umožní přiřadit texturu ke 3D geometrii.
 +  * **UV unwrapping** – převod 3D modelu na 2D mapu.
 +    * Cílem je minimalizace zkreslení a efektivní rozložení ploch.
 +    * Každý vrchol může mít v různých plochách různé UV souřadnice.
 +
 +==== 3. Způsoby unwrappingu ====
 +
 +  * **Ruční švy (seams)** – uživatel definuje hrany, kde se model „rozstřihne“ pro vytvoření UV mapy.
 +    * Výhodné pro organické a ručně modelované objekty.
 +    * Cílem je zachování tvaru a poměru stran mezi 3D a 2D pro minimální deformaci.
 +    * {{:statnice:bakalar:pasted:20250527-224516.png?200}}
 +
 +  * **Limitní úhel (Smart UV Project)** – automatické dělení podle úhlu mezi normálami sousedních ploch.
 +    * Nižší limit znamená více částí a detailnější UV mapu.
 +    * Každá nová plocha je přidána jen pokud úhel normál je pod daným limitem.
 +    * {{:statnice:bakalar:pasted:20250527-224534.png?300}}
 +
 +  * **Lightmap packing** – vytvoření mřížky v UV prostoru bez zachování tvaru a sousednosti.
 +    * Používá se pro přepočítané osvětlení nebo ambient occlusion.
 +    * Efektivní využití prostoru v textuře, často pro více objektů najednou.
 +    * {{:statnice:bakalar:pasted:20250527-224548.png?200}}
 +
 +==== 4. Primitivní projekce ====
 +
 +  * **Projekce z pohledu (camera projection)** – použije aktuální pohled kamery pro projekci.
 +    * Vhodné pro ploché objekty a projekce podle fotografií.
 +    * Ztrácí hloubkovou složku (Z souřadnice je zahozena).
 +    * {{:statnice:bakalar:pasted:20250527-224746.png?300}}
 +
 +  * **Box mapping** – plochy se rozdělují podle orientace normály vůči šesti stranám krychle.
 +    * Výhodné pro objekty se strukturovanými plochami (např. domy, krabice).
 +    * Projekce je ortogonální na každou ze stěn.
 +
 +  * **Spherical mapping** – projekce pomocí sférických souřadnic (azimut, zenit, radius).
 +    * Radius se ignoruje, výsledkem je UV mapa vhodná pro koule.
 +
 +  * **Cylindrical mapping** – používá azimut a výšku (z souřadnici) pro válcové objekty.
 +    * Např. sloupy, lahve, komíny.
 +
 +==== 5. Další techniky ====
 +
 +  * **Texture painting** – ruční kreslení textury přímo na model.
 +    - Pro detailní doladění, švy a realistické efekty.
 +    - Malování přímo ve 3D zobrazení nebo v 2D UV mapě.
 +
 +  * **Texture cloning** – přenos části fotografie na 3D objekt.
 +    - Typicky se používají fotografie z reálného světa.
 +    - Vyžaduje UV mapu z „projekce z pohledu“ pro přesné zarovnání.
 +
 +  * **Seamless textures** – textury navržené pro opakování bez zjevných hran.
 +    - Používají se na velké plochy (např. stěny, podlahy, příroda).
 +    - Často vytvořeny pomocí filtrů (např. Gaussian blur, grain merge) nebo offset a klonovacích nástrojů.
 +
 +=== Bonus:  Pokročilé techniky texturování ===
 +
 +  * **Normal mapping** – textura obsahující normálové vektory, která simuluje detaily bez geometrie.
 +    - Používá RGB kanály pro zakódování vektoru.
 +    - Normály mohou být definovány v prostorách: tangent, object, world.
 +    - Používá se hlavně pro low-poly modely s vypálenými detaily z high-poly.
 +
 +  * **Bump mapping** – výšková mapa v odstínech šedi, která ovlivňuje osvit bez změny geometrie.
 +    - 50 % šedá = žádná změna, světlejší = výstupky, tmavší = prohlubně.
 +    - Lze konvertovat na normal mapu.
 +
 +  * **Displacement mapping** – skutečné posunutí vrcholů objektu na základě textury.
 +    - Vyžaduje hustou geometrii pro správný efekt.
 +    - Oproti bump/normal mapám mění skutečný tvar objektu.
 +
 +  * **Texture baking** – vypékání informací (osvětlení, normály, ambient occlusion…) z high-poly modelu do textur.
 +    - Používá se pro přenos detailů z komplexního modelu na low-poly verzi.
 +    - Např. vypékání normál, stínů, světla, barevného rozložení atd.
 +
 +  * **PBR materiály (Physically Based Rendering)** – využívají více typů textur pro simulaci realistických materiálů.
 +    - Např. Base Color, Metallic, Roughness, Normal, Height, AO.
 +    - Využívá BSDF shader (např. principled BSDF v Blenderu).
 +    - Umožňuje realistické odrazy, lom světla a materiálové vlastnosti.
 +
 +  * **Environment mapping** – textury reprezentující okolní prostředí.
 +    - Umožňuje reflexe/refrakce světla z okolí objektu.
 +    - Typy mapování: mirror ball, equirectangular (HDRI).
 +
 +
  
Navigation

Playground

QR Code
QR Code statnice:bakalar:be4b39vgo (generated for current page)