MR jako průsečík reálného a digitálního světa
Smíšená realita (MR) kombinuje prostorově ukotvený digitální obsah s reálným prostředím prostřednictvím senzorů, prostorového mapování a renderingu s nízkou latencí. Kvalita výsledku je přímo závislá na správně zvolených technologických požadavcích a disciplinované optimalizaci obsahu i kódu. Tento článek shrnuje klíčové parametry hardwaru, pipeline pro sledování a vykreslování, doporučené rozpočty pro 3D aktiva a praktické techniky pro dosažení stabilního, komfortního a věrného MR zážitku.
Hardwarové předpoklady a třídy zařízení
- HMD (Head-Mounted Display): průhledné optiky (waveguide) nebo video-passthrough, 6DoF sledování, IMU + kamery.
- Mobilní/standalone: SoC (ARM), omezený TDP (3–10 W), sdílená paměť; důraz na efektivitu shaderů a streaming aktiv.
- PC/konzolová MR: diskrétní GPU, vyšší rozlišení i snímková frekvence; větší prostor pro pokročilé efekty (GI, volumetrika) s foveací.
- XR brýle vs. helmy: brýle preferují lehkost a energetickou efektivitu; helmy nabízí širší FOV a robustnější senzory.
Optika, displeje a komfort
- Rozlišení a PPD: cílit na dostatečný počet pixelů na stupeň (pixels-per-degree) pro čitelnost textu; textové UI umisťovat do
>= 20PPD oblastí. - FOV: horizontálně 40–110° dle třídy zařízení; širší FOV zvyšuje nároky na fill-rate a CPU/GPU synchronizaci.
- IPD a eye relief: podporovat per-user kalibraci; texty a UI renderovat v
>= 0.8 mvzdálenosti pro redukci vergence-accommodation konfliktu. - Jas a kontrast: pro passtrough MR řešit HDR mapování mezi kamerou a displejem; vyhnout se „přepalům“ u světlých ploch.
Senzorika, SLAM a prostorové kotvy
- SLAM (Simultaneous Localization and Mapping): kombinace IMU a kamer (VIO) pro 6DoF; vyžaduje stabilní osvětlení a texturu povrchů.
- Prostorové kotvy (anchors): uchovávají polohu a orientaci objektů; implementovat relocalization a perzistenci napříč sezeními.
- Režijní náklady: pravidelný pose update (60–90 Hz), rekonstrukce meshe v ~10–30 Hz, minimalizace GC a locků v hlavním vlákně.
Latence a časování: rozpočty pro komfort
- Motion-to-Photon (M2P): cílit
< 20 msu PC a< 30 msu standalone. Nad 40 ms dramaticky roste kinetóza. - Frekvence: 60/72/90/120 Hz dle zařízení; stabilita je důležitější než absolutní maxima.
- Fáze pipeline: senzory → predikce → simulace/animace → render → reprojekce → kompozice. Eliminovat „bubbles“ mezi CPU a GPU.
Renderovací pipeline a reprojekce
- Late-latching / late-stage reprojection: aktualizace view matice těsně před scan-out; vyžaduje oddělené buffery a predikci hlavy.
- Asynchronní reprojekce: vyhlazuje mikro-třesy při krátkodobém poklesu FPS; omezit artefakty na hranách a při rychlém parallaxu.
- Foveated rendering: statický (center-weighted) nebo eye-tracked dynamický; redukuje pixel shading 30–60 % bez viditelné ztráty kvality.
Passthrough, occlusion a scene understanding
- Video-passthrough: kalibrace barev/white-balance a latence; stabilizovat rolling-shutter artefakty.
- Reálné zakrývání (occlusion): využít hloubkovou mapu/mesh z SLAM; content depth testovat proti environment depth.
- Segmentace: detekce stěn, podlahy, stolů a lidských postav pro fyzikálně uvěřitelné interakce a kolize.
Rozpočty aktiv: polygony, materiály, textury
| Aktivum | Standalone MR | PC/konzolová MR | Poznámka |
|---|---|---|---|
| Hrdina (hero asset) | 10–40 tis. tris | 40–120 tis. tris | U LOD0; nutné LOD1–3 s agresivním decimem |
| Scénická rekvizita | 1–8 tis. tris | 8–30 tis. tris | Instancování podobných položek |
| Materiály | 1–2 draw-calls | 1–3 draw-calls | Sloučit do atlasů, minimalizovat state changes |
| Textury | 512–1024 px | 1024–2048 px | BC/ASTC, vždy mip-mapy a trilinear |
Shaderové techniky a fill-rate
- Výpočetní složitost: minimalizovat větvení a dynamické smyčky; preferovat LUT a texture fetch před těžkou aritmetikou.
- Normal/roughness packing: společné kanály v jedné textuře; snižuje bandwidth.
- Alpha test vs. alpha blend: test preferovat pro stromy/okraje; blending je nákladný na overdraw a hloubkové třídění.
LOD, impostors a culling
- LOD kaskády: přepínat podle úhlové velikosti (screen-space error) a vzdálenosti; pro standalone agresivněji.
- Impostors/billboards: u vzdálených objektů a vegetace; generovat v bake fázi.
- Frustum, occlusion a portal culling: využít engine funkce a prostorové rozdělení (BVH, gridy).
Fyzika, kolize a stabilita
- Jednoduché kolizní meshe: konvexní primitiva a low-poly proxy; složité mesh kolize jsou drahé.
- Fixed timestep: stabilní fyzika (např. 60 Hz) oddělená od renderu; interpolace stavů.
- Grasping a interakce: využít continuous collision detection pro ruce/kontrolery; tlumit jitter filtrem (One-Euro, Kalman).
Osvětlení a stíny v MR
- Light estimation: převzít barevnou teplotu a intenzitu z kamer/senzorů; sjednotit shading s reálnou scénou.
- Stíny: pro standalone používat blob/planar stíny; PC třída může využít cascaded shadow maps s rozumným rozlišením.
- Reflexe: screen-space nebo reflection probes; vyhnout se realtime planar reflektorům mimo klíčové scény.
UX a čitelnost v prostoru
- Diegetické UI: upřednostnit UI ukotvené v prostoru před 2D panely; pokud panel, tak 1–2 m od uživatele, min. výška písma 1.2–1.5° vizuálního úhlu.
- Bezpečné zóny: nevkládat obsah do
< 0.5 m(oční námaha) ani za> 5 mbez LOD. - Interakce: ray + affordance, direct touch s haptikou (pokud k dispozici), hlas a gesta jako doplněk.
Audio a haptika
- Prostorový zvuk: HRTF s occlusion/obstruction; reverb z volumetrických zón (místnost/chodba/venku).
- Synchronizace: latence audio < 20 ms a lock na video frame boundary; desynchronizace zvyšuje nevolnost.
- Haptika: krátké, nízko-frekvenční patterny pro potvrzení; vyvarovat se „permanentního bzučení“.
Streaming aktiv a správa paměti
- Asynchronní načítání: asset bundles po zónách; vyhnout se alokacím během frame (GC spikes).
- Textury a komprese: ASTC/BC s vhodným block size; generovat mip-mapy offline.
- GPU paměť: hlídat rezidentní footprint; vyprázdnit nepoužívané rendertargety a persistentní mapování bufferů.
Energetická efektivita a termální management
- Frame time headroom: držet 10–20 % rezervu; SoC méně škrtí (thermal throttling).
- Adaptive quality: dynamická změna rozlišení, LOD bias a stínů podle telemetrie.
- Batching: snižovat draw calls (GPU instancing), minimalizovat CPU wake-ups u vláken.
Bezpečnost, soukromí a etika
- Citlivá data: hloubkové mapy, body lidských postav a oční tracking jsou biometrická data – ukládat pouze anonymizovaně a lokálně, pokud to není nezbytné.
- Bezpečná zóna: upozornění na překážky, respekt k guardian/chaperone hranicím; žádné „jump scares“ bez varování.
- Přístupnost: alternativy k gestům (hlas/UI), volitelná snížená pohybová náročnost (teleport, zrychlené přechody s vignette).
OpenXR a multiplatformní vrstvy
- OpenXR: jednotné rozhraní pro head pose, input, composition, anchors a passthrough; minimalizuje vendor lock-in.
- XR kompozitor: využívat vrstvy (quad/layered) pro UI a video; ostré texty bez re-sampling.
- Rozšíření: foveace, hand tracking, haptika, scene understanding; detekovat a fallbackovat.
Telemetrie, testování a QA
- Runtime metriky: CPU/GPU frame time, M2P, reprojection ratio, dropped frames, GC čas, teplota SoC.
- Testovací matice: scénáře s nízkým osvětlením, rovnoměrné textury (bílé stěny), ostré reflexe, rychlé pohyby hlavy.
- Uživatelské testy: SUS/UEQ, míra nevolnosti, čas dokončení úkolu, přesnost interakce a znovunalézání kotev.
Typické cíle výkonu (baseline)
| Parametr | Standalone MR | PC/konzolová MR | Cíl |
|---|---|---|---|
| FPS | 72–90 | 90–120 | Stabilita > 99 % snímků v cíli |
| Motion-to-Photon | < 30 ms | < 20 ms | Minimalizovat reprojection reliance |
| CPU frame time | < 6–8 ms | < 5–6 ms | Hlavní vlákno bez blokujících I/O |
| GPU frame time | < 6–9 ms | < 6–8 ms | Foveace + LOD + culling |
| Reprojection ratio | < 10 % | < 5 % | Vyšší hodnoty = riziko artefaktů |
Pipeline nasazení a správu buildů
- Asset baking: LOD generace, lightmaps, impostory, komprese textur a zvuku v CI.
- Varianty buildů: různé rozlišení render targetů a kvalita shaderů per device tier.
- Automatické sanity: start, tracking lock, relocalization, reprojection health, passtrough korekce.
Checklist optimalizace MR obsahu
- Stabilní FPS a M2P v cílových hodnotách? Reprojection < definovaný práh?
- LOD pro všechna 3D aktiva, instancing a atlasované materiály?
- Occlusion a environment depth zapojeny a vizuálně konzistentní?
- UI čitelné (≥1.2°), dostatečný kontrast, bezpečné zóny dodrženy?
- Adaptive quality aktivní a telemetrie výkonu odesílána?
- Privacy: žádná zbytečná persistovaná biometrie, lokální zpracování kde možné?
- Testy ve ztížených podmínkách (nízké světlo, monotónní textury, rychlé pohyby) úspěšné?
Závěr
Špičkový MR zážitek je výsledkem koordinované práce napříč hardwarem, senzorikou, renderovacím řetězcem a disciplinovaným obsahem. Striktní latencní rozpočty, foveace, LOD a správné práce s passtrough/occlusion zásadně zvyšují věrohodnost a komfort. Multiplatformní vrstvy (OpenXR), telemetrie a automatizované build pipeline umožňují škálovat vývoj i údržbu. Dodržováním uvedených požadavků a optimalizačních technik získáte stabilní, srozumitelný a bezpečný MR produkt, který odolá reálným podmínkám nasazení.