-
deformace objektu,
-
aerodynamičnost tvaru.
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
- Rigid body
-
Aproximace reálného fyzikálního tělesa. Předpokládá uniformní hostotu a neřeší:
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í
V principu funguje detekce kolizí tak, že v každém kroku fyzikální simulace: [pa199-2022]
-
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.
-
- 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.
Obrázek 1. 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é.