Fyzikální principy ve vývoji her (2024)
Note
Typy fyzikálních simulací a jejich využití ve hrách (tuhá tělesa, deformovatelná tělesa, částice). Dynamika tuhých těles (síly, tření). Objekty pro detekci kolizí (“colliders”, typy, limity), kolizní vrstvy. Detekce kolizí (diskrétní a spojitá detekce, obvyklé problémy, využití v herních mechanikách).
PV255
Fyzikální simulace
Section titled “Fyzikální simulace”-
Rigid body
Aproximace reálného fyzikálního tělesa. Předpokládá uniformní hostotu a neřeší:- deformace objektu,
- aerodynamičnost tvaru.
Nicméně řeší:
- dynamiku (část mechaniky, která se zabývá příčinami pohybu),
- kolize,
- klouby.
-
Soft body
Deformovatelný objekt. -
Fyzikální enginy
- PhysX (Nvidia) — Unity, Unreal Engine.
- Bullet — Blender, Paradox engine.
- Havok
- Box2D
Objekty pro detekci kolizí
Section titled “Objekty pro detekci kolizí”V principu funguje detekce kolizí tak, že v každém kroku fyzikální simulace: 1
- dojde ke kontrole, zda se dva objekty dotýkají — či mají společný průnik,
- pokud ano a kolize jsou pro dané objekty povoleny, dojde k výpočtu kolizních dat (normála, hloubka průniku, atd.),
- ostatní systémy mohou reagovat na kolizi (např. způsobit explozi miny).
-
Fáze
- Broad phase — hledání kandidátů na kolize
- Např. pokud se dotýkají AABB nebo jsou objekty v přibližně stejné oblasti.
- Využívají se struktury pro vyhledávání jako octree, k-D tree, BSP, atd, které je potřeba aktualizovat každé iteraci fyzikální simulace.
- Narrow phase — kontrola zda se kandidáti fakt srazili.
- Broad phase — hledání kandidátů na kolize
-
Sweep and prune
Algoritmus pro broad phase. -
Gilbert-Johnson-Keerthi (GJK)
Algoritmus pro narrow phase. Rozhoduje zda dva konvexní tvary mají společný průnik. -
Primitivní collidery
Výpočty s nimi jsou rychlé.-
krabice (AABB),
-
koule,
-
kapsle,
-
válec.
Primitivní collidery v Unity

-
-
Mesh collider
Neprimitivní collider objekt. Obvykle konvexní obal nějakého meshe. Vypočetně náročné. -
Compound collider
Collider složený z vícero primitivních colliderů. Rychlejší než mesh collider. Použitelný i na nekonvexní objekty. -
Quickhull
Algoritmus pro výpočet konvexního obalu. -
Statické objekty
Terén, budovy, a podobné nehybné objekty. Nepůsobí na něj fyzikální síly, ale fungují jako collidery. Necollidují však vzájemně. Mívají komplexní tvar. -
Dynamické objekty
Působí na ně fyzika. Měly by mít jednodušší collidery. -
Discrete collision detection
Kolize se detekují v každém kroku fyzikální simulace. Výpočetně nenáročné, ale může docházet k “tunelování” objektů skrz jiné objekty. -
Continous collision detection (CCD)
Kolize se detekují v “průběhu pohybu” objektů — pomocí supersamplingu, raycastingu, swept spheres, atd. Výpočetně náročné.