Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b4b39hry [2025/05/28 22:04] – [4. Míchání animačních klipů] zapleka3 | statnice:bakalar:b4b39hry [2025/06/06 21:23] (current) – zapleka3 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Komponenty herního enginu, herní smyčka. Detekce kolizí a základy herní fyziky. Reprezentace a výpočet animací. Základní optimalizační metody pro herní engine. ==== | + | ====== Komponenty herního enginu, herní smyčka. Detekce kolizí a základy herní fyziky. Reprezentace a výpočet animací. Základní optimalizační metody pro herní engine. |
[[https:// | [[https:// | ||
Line 570: | Line 570: | ||
==== 5. Skinning (Linear Blend Skinning) ==== | ==== 5. Skinning (Linear Blend Skinning) ==== | ||
- | Skinning je technika | + | **Skinning** je metoda |
- | * **Rigid skinning** – každý vrchol ovládán jedním kloubem (zastaralé). | + | * **Rigid skinning** – každý vrchol ovládán jedním kloubem. Rychlý, ale vytváří nepřirozené zlomy v oblasti kloubů. |
- | * **Linear Blend Skinning (LBS)** – každý vrchol ovlivněn několika klouby (2–4) s váhami | + | \[ |
- | * Váhy jsou **konvexní** (součet = 1, každá váha \( \geq 0 \)). | + | \vec{v}' |
- | * Výsledná pozice | + | \] |
+ | * **Linear Blend Skinning (LBS)** – každý vrchol | ||
+ | * Výhody: plynulé deformace, efektivní výpočet, běžné ve většině herních enginech. | ||
+ | | ||
+ | * Výsledná pozice: | ||
\[ | \[ | ||
- | | + | |
\] | \] | ||
- | * kde \( T_i \) je transformace daného kloubu a \( P_0 \) je původní pozice. | ||
- | * Výhody: rychlý výpočet, jednoduchá implementace. | + | * **Duální kvaterniony** – lepší zachování objemu a rotací. |
- | * Nevýhody: artefakty | + | * **Pomocné klouby** – pro přesnější deformaci v problematických místech |
- | ==== 6. Animační křivky ==== | ||
- | Animační křivky určují, jak se transformace mění mezi klíčovými snímky. | ||
- | | + | ==== 6. Animační křivky, princip a využití ==== |
- | * **Catmull–Rom spline** – prochází dvěma | + | |
+ | **Animační křivky** určují průběh hodnot (např. pozice, rotace, barvy) mezi klíčovými snímky. Používají se pro plynulou interpolaci v čase, řízení pohybu kamery či procedurální animace. | ||
+ | |||
+ | ===== Požadavky ===== | ||
+ | * Plynulost (spojitá derivace). | ||
+ | * Intuitivní ovládání a editace. | ||
+ | * Rychlý výpočet. | ||
+ | |||
+ | ===== Lineární interpolace ===== | ||
+ | * Jednoduchá, | ||
+ | * Nevhodná pro přirozený pohyb. | ||
+ | |||
+ | ===== Hermitova kubika ===== | ||
+ | * Definována dvěma body \( P_0, P_1 \) a jejich tečnými vektory \( P_0', P_1' \). | ||
+ | * Výhodná pro řízený a plynulý přechod | ||
+ | * Umožňuje snadné nastavení rychlosti nástupu a odeznění. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Catmull–Rom spline | ||
+ | | ||
+ | * Každý segment | ||
+ | * Spojitá první derivace | ||
+ | * Vyžaduje alespoň čtyři body (první a poslední slouží k výpočtu tečen). | ||
+ | |||
+ | {{: | ||
+ | |||
+ | **Použití**: | ||
+ | * interpolace transformací v čase (rotace, pozice), | ||
+ | * řízení kamery, | ||
+ | * fyzikálně věrohodné trajektorie, | ||
+ | * animace parametrů (např. zoom, světlo), | ||
+ | * procedurální pohyby. | ||
+ | |||
+ | Křivky jsou zásadní pro dosažení realistického nebo stylizovaného pohybu bez nutnosti ručního nastavování každého snímku. | ||
- | Používají se pro: | ||
- | * interpolaci transformací v čase, | ||
- | * řízení pohybu kamery, | ||
- | * procedurální animace. | ||
===== 4. Základní optimalizační metody pro herní engine ===== | ===== 4. Základní optimalizační metody pro herní engine ===== | ||
Line 631: | Line 662: | ||
* **Neprůhledné objekty**: odložené vykreslování. | * **Neprůhledné objekty**: odložené vykreslování. | ||
* **Průhledné objekty**: dopředné vykreslování. | * **Průhledné objekty**: dopředné vykreslování. | ||
+ | * **Post-process**: | ||
==== 3. Optimalizace pomocí LOD ==== | ==== 3. Optimalizace pomocí LOD ==== | ||
- | LOD (Level of Detail) | + | **LOD (Level of Detail)** je technika pro snižování zátěže GPU tím, že se místo plně detailního |
- | * **Diskrétní LOD** – předpočítané verze modelu, | + | === Diskrétní LOD === |
- | * **Spojité LOD** – plynulá změna detailu | + | |
- | * Optimalizace také pomocí: | + | * Přepínání může být viditelné |
- | * **Normal map, bump map** – náhrada detailní geometrie texturou, | + | * **Alpha blending** – plynulý přechod pomocí průhlednosti. |
- | * **Mip-mapy, atlasy** – zmenšené | + | * **Bitové masky** – postupné skrývání detailů. |
- | * **Indexované geometrie** – snížení počtu volání. | + | * LOD modely lze generovat automaticky (např. Blender, MeshLab). |
+ | |||
+ | === Spojité LOD === | ||
+ | * Geometrie je dynamicky zjednodušována | ||
+ | * Plynulé přechody bez skoků v detailech. | ||
+ | * Výpočetně náročné, ale vizuálně kvalitní. | ||
+ | * Příklady: **UE5 Nanite** – hierarchická rasterizace a culling mikropolygony. | ||
+ | |||
+ | === Pseudo-spojité LOD === | ||
+ | * Kombinace hierarchických LOD a clusterů. | ||
+ | * Různé části modelu (clustery) mají vlastní LOD. | ||
+ | * Dynamicky přepínány podle viditelnosti a detailu. | ||
+ | |||
+ | === Další optimalizační techniky === | ||
+ | | ||
+ | * **Mip-mapy** – předpočítané | ||
+ | * **Texturové atlasy** – sloučení více textur do jedné, snižují | ||
+ | * **Indexovaná geometrie** – opětovné použití vrcholů pomocí indexů, snižuje paměťové nároky a volání. | ||
+ | |||
+ | LOD je klíčovým prvkem pro škálování grafické náročnosti a udržení plynulého výkonu při zobrazování rozsáhlých scén. | ||
==== 4. Předpočítané osvětlení a sondy odrazu ==== | ==== 4. Předpočítané osvětlení a sondy odrazu ==== | ||
Line 660: | Line 711: | ||
==== 5. Redukování podle viditelnosti (Culling) ==== | ==== 5. Redukování podle viditelnosti (Culling) ==== | ||
- | Culling | + | **Culling** |
- | === View frustum culling | + | === View Frustum Culling |
+ | * Kontroluje, zda je objekt uvnitř **zorného jehlanu (frustum)** kamery. | ||
+ | * Objekty zcela mimo frustum jsou **vynechány z renderingu**. | ||
+ | * Používá se obvykle jako **první filtr** při vykreslování scény. | ||
- | | + | === Occlusion Culling === |
- | * Objekty mimo frustum se **nevykreslují**. | + | |
+ | | ||
+ | | ||
+ | * **Online** – výpočet **za běhu** pomocí: | ||
+ | * **Depth bufferu**, **hierarchického Z-bufferu**, | ||
+ | * **softwarové rasterizace** s jednoduchými tvary (occludery). | ||
- | === Occlusion culling === | + | === Potenciálně |
- | + | * Pro každou | |
- | * Testování, | + | * Při běhu se pak **vykreslují jen tyto objekty**. |
- | * Může být: | + | |
- | * **Offline** – rozdělení scény na buňky (PVS = Potentially Visible Set), | + | |
- | * **Online** – výpočet za běhu (např. pomocí depth bufferu). | + | |
- | + | ||
- | === Potenciálně | + | |
- | + | ||
- | * Pro každou **buňku | + | |
- | * Při běhu se vykreslí pouze tyto objekty. | + | |
* Výpočet: | * Výpočet: | ||
- | * **Offline** – náročný, ale velmi efektivní při běhu. | + | * **Offline** – náročný |
- | * **Online** – rychlejší, | + | * **Online** – rychlejší, vhodný pro dynamické scény, ale méně přesný. |
- | + | ||
- | === Hierarchické zpracování === | + | |
- | + | ||
- | * Používá se hierarchie prostorových struktur (např. octree, kd-tree). | + | |
- | * Redukce počtu testů pomocí **konzistence mezi snímky** – tzv. **coherent hierarchy**. | + | |
+ | === Hierarchické Zpracování a Konzistence === | ||
+ | * Scéna je strukturována pomocí prostorových hierarchií (např. **Octree**, **kd-tree**). | ||
+ | * Efektivní redukce díky **coherent hierarchy** – využití podobnosti mezi snímky. | ||
+ | * Pomáhá omezit opakované testy pro podobné oblasti. |