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:b4b39hry [2025/05/28 22:04] – [4. Míchání animačních klipů] zapleka3statnice: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://fel.cvut.cz/cz/education/bk/predmety/46/99/p4699006.html|B4B39HRY]] [[https://cw.fel.cvut.cz/wiki/courses/b4b39hry/lectures/start|Webové stránky předmětu]] [[https://fel.cvut.cz/cz/education/bk/predmety/46/99/p4699006.html|B4B39HRY]] [[https://cw.fel.cvut.cz/wiki/courses/b4b39hry/lectures/start|Webové stránky předmětu]]
Line 570: Line 570:
 ==== 5. Skinning (Linear Blend Skinning) ==== ==== 5. Skinning (Linear Blend Skinning) ====
  
-Skinning je technika deformace polygonálního modelu podle animace kostry.+**Skinning** je metoda deformace polygonálního modelu (kůže) podle animace kostry (skeletonu). Každý vrchol modelu je ovlivněn jedním nebo více klouby v závislosti na typu skinningu.
  
-  * **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 \( w_i \). +    \[ 
-    * Váhy jsou **konvexní** (součet = 1, každá váha \( \geq 0 \)). +    \vec{v}' = F(j\cdot A^{-1}(j) \cdot \vec{v} 
-    * Výsledná pozice vrcholu:+    \] 
 +  * **Linear Blend Skinning (LBS)** – každý vrchol je ovlivněn **několika klouby** (typicky 2–4), každý určitou vahou \( w_i \). 
 +    * Výhody: plynulé deformace, efektivní výpočet, běžné ve většině herních enginech. 
 +    Nevýhody: **artefakty** při rotacích – např. zmenšení objemu (gumový efekt), **nezachování ortonormality**
 +    * Výsledná pozice:
       \[       \[
-      P_{\text{new}} = \sum_i w_i \cdot T_i(P_0)+      \vec{v}_{\text{new}} = \sum_{i=1}^{m} w_i \cdot F(j_i\cdot A^{-1}(j_i) \cdot \vec{v}
       \]       \]
-    * 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 (např. „gumové“ klouby), řešeno pomocí pokročilého skinningu.+  * **Pomocné klouby** – pro přesnější deformaci v problematických místech (např. ramena).
  
-==== 6. Animační křivky ==== 
  
-Animační křivky určují, jak se transformace mění mezi klíčovými snímky. 
  
-  * **Hermitova kubika** – určená počátečním koncovým bodem + jejich tečnami. Výhodná pro plynulý přechod. +==== 6. Animační křivky, princip a využití ====  
-  * **Catmull–Rom spline*– prochází dvěma hlavními body, další dva ovlivňují zakřivení. Spojitá první derivace.+ 
 +**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á, ale nespojitá v derivaci. 
 +  * 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 mezi body
 +  * Umožňuje snadné nastavení rychlosti nástupu a odeznění. 
 + 
 +{{:statnice:bakalar:pasted:20250528-222052.png?300}} 
 + 
 +===== Catmull–Rom spline ===== 
 +  Speciální případ Hermitovy kubiky – tečné vektory se určují automaticky. 
 +  * Každý segment prochází dvěma body, tvar ovlivněn sousedními. 
 +  * Spojitá první derivace → přirozený pohyb. 
 +  * Vyžaduje alespoň čtyři body (první a poslední slouží k výpočtu tečen). 
 + 
 +{{:statnice:bakalar:pasted:20250528-222236.png?300}} 
 + 
 +**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**: Tone mapping (HDR, korekce barev), Screen space motion blur / depth of field, FXAA (antialising jako postprocess s detekcí hran), Exposure, glow, gamma, etc.
  
 ==== 3. Optimalizace pomocí LOD ==== ==== 3. Optimalizace pomocí LOD ====
  
-LOD (Level of Detail) – různé úrovně detailu modelu podle vzdálenosti od kamery.+**LOD (Level of Detail)** je technika pro snižování zátěže GPU tím, že se místo plně detailního modelu používá zjednodušená verze podle vzdálenosti od kamery.
  
-  * **Diskrétní LOD** – předpočítané verze modelu, přepínání mezi nimi (může být viditelné). +=== Diskrétní LOD === 
-  * **Spojité LOD** – plynulá změna detailu za běhu, výpočetně náročnější (napřNanite v UE5). +  Několik předpočítaných verzí modelu (např. LOD0 – detailníLOD1 – střední, LOD2 – hrubý). 
-  * Optimalizace také pomocí: +  * Přepínání může být viditelné (tzv. popping), řeší se pomocí: 
-    * **Normal map, bump map** – náhrada detailní geometrie texturou+    * **Alpha blending** – plynulý přechod pomocí průhlednosti
-    * **Mip-mapy, atlasy** – zmenšené verze textur, +    * **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 za běhu (např. přepočtem). 
 +  * 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 (clusterymají vlastní LOD
 +  * Dynamicky přepínány podle viditelnosti a detailu. 
 + 
 +=== Další optimalizační techniky === 
 +  * **Normal map, bump map** – imitují detaily pomocí textursnižují potřebu polygonů. 
 +  * **Mip-mapy** – předpočítané verze textur různých velikostízlepšují výkon i kvalitu. 
 +  * **Texturové atlasy** – sloučení více textur do jedné, snižují počet přepínání textur. 
 +  * **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 **vyloučení neviditelných objektů** z renderingu.+**Culling** je technika pro zvýšení výkonu tím, že **neviditelné objekty nejsou vůbec posílány na vykreslení**. Typicky se jedná o objekty mimo zorné pole nebo zakryté jinými objekty.
  
-=== 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.
  
-  Testujemezda objekt leží v **pohledovém jehlanu** (frustum kamery). +=== Occlusion Culling === 
-  Objekty mimo frustum se **nevykreslují**.+  Odstraňuje objektykteré jsou **zakryty jinými** a tudíž nejsou viditelné. 
 +  Může probíhat: 
 +    **Offline** – rozdělení scény na **pohledové buňky** a výpočet **PVS** (Potentially Visible Set). 
 +    * **Online** – výpočet **za běhu** pomocí: 
 +      * **Depth bufferu**, **hierarchického Z-bufferu**, nebo 
 +      * **softwarové rasterizace** s jednoduchými tvary (occludery).
  
-=== Occlusion culling === +=== Potenciálně Viditelné Množiny (PVS) === 
- +  * Pro každou prostorovou **buňku** se předem určí množina potenciálně viditelných objektů. 
-  * Testování, zda objekt **není zakryt jiným**. +  * 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ě viditelné množiny (PVS) === +
- +
-  * Pro každou **buňku prostoru** se předem určí množina objektů, které mohou být viditelné+
-  * 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ý výpočetně, ale efektivní při běhu. 
-    * **Online** – rychlejší, ale méně přesný+    * **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.
Navigation

Playground

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