Vývoj VR aplikací v Unity a Unreal Engine: nástroje a technologie

Vývoj aplikací pro VR

Vývoj aplikací pro virtuální realitu (VR) v enginách Unity a Unreal Engine vyžaduje kombinaci grafické optimalizace, ergonomie interakcí a důsledného řízení latence. Na rozdíl od klasických 3D aplikací je ve VR klíčová plynulost (≥72–120 Hz dle headsetu), stabilní snímková frekvence a konzistentní časování vstup–render–zobrazení (motion-to-photon). Tento článek systematicky porovnává Unity a Unreal z pohledu VR, popisuje architekturu OpenXR, interakční frameworky, vykreslovací techniky, optimalizace, testování, audio a proces publikace.

OpenXR a multiplatformní architektura

  • OpenXR: standardizované API pro VR/AR. Minimalizuje vendor lock-in a sjednocuje běhové funkce (sledování pozice, input profily, foveated rendering, passthrough, sledování očí a rukou).
  • Unity: oficiální OpenXR Plugin (XR Plug-in Management) + XR Interaction Toolkit (XRI) pro interakce, teleportaci, uchopování. Většina moderních headsetů (Meta, SteamVR, Pico, Varjo) funguje přes OpenXR runtime.
  • Unreal Engine: vestavěný modul OpenXR, Enhanced Input + Motion Controller Components, pluginy pro platformu (Oculus, SteamVR) typicky přesměrovávají na OpenXR.
  • Interakční profily: definují mapování ovladačů (Oculus Touch, Vive, WMR), rukou (hand tracking) i ovladačů s prsty/pressure senzory. Cíl: minimální vlastní bindings, maximální využití profilů.

Volba vykreslovacího řetězce

  • Unity: pro standalone a mobilní VR se preferuje URP (Universal Render Pipeline) kvůli výkonu a předvídatelnosti. HDRP je vhodný pouze pro high-end PC VR a vyžaduje opatrné nastavení TAA/SSR.
  • Unreal: Forward Shading + MSAA je tradičně spolehlivou volbou pro VR. UE5 nabízí Lumen/Nanite s omezeními; pro VR je třeba pečlivě scope funkce (např. omezení dynamické GI, ověření podpory stereo renderingu a náročnosti na VRAM).
  • Stereo vykreslování: Multiview/Instanced Stereo redukuje přepínání stavů mezi očima. V Unity aktivujte Single Pass Instanced; v UE použijte Instanced Stereo a Mobile Multi-View na podporovaných SoC.
  • Foveated rendering: Fixed foveation (mobilní VR) a gaze-driven foveation (headsety s eye trackingem). V GPU pipeline ověřte kompatibilitu s postprocesy a TAA.

Požadavky na výkon a latenci

  • Cílová frekvence: 72/80/90/120+ Hz dle zařízení. Frame time (CPU/GPU) musí být stabilně pod hranicí (např. 90 Hz ≈ 11,1 ms).
  • Asynchronní reprojekce: ASW/ATW/SpaceWarp řeší krátkodobé propady, ale nesmí být trvalou strategií. Cílem je nativní framerate bez artefaktů.
  • Vstupní latence: minimalizujte script update a simulation cost před late latching/late update. Omezte GC alokace a dlouhé úlohy.

Interakční frameworky a UX

  • Unity XRI: ray/near interakce, snap uchopování, teleport/continuous locomotion, Direct Interactor, UI (world-space canvas) přes XRUI. Doporučená architektura: model-view s čistými Actions.
  • Unreal: Motion Controller Components + XR Interaction pluginy, Enhanced Input, UMG pro 3D UI (widget komponenty) a Widget Interaction Component pro kurzor.
  • Ergonomie: 1:1 škála (1 jednotka = 1 m), správná pozice origin, offset očí, comfort options (vignette, snap turn, teleport, head-based vs. controller-based locomotion), bezpečné uchopení (přirozené orientace, hybridní kolize).

Fyzika a interakce s objekty

  • Kolidery: volit konvexní pro dynamiku; u near-hand interakcí preferovat continuous collision pro stabilitu.
  • Stabilita uchopení: hybridní řešení: parenting + fyzikální omezení (jointy) pro realistické mikro-pohyby bez jitteru.
  • Haptika: jednoduché buzz pro potvrzení akcí, amplituda/časování mapované na hmotnost a kontaktní plochu; opatrně s dlouhými vibracemi.

Optimalizace obsahu

  • Geometrie: agresivní LODy, decimation, slučování statických meshů, správné pivoty pro instancing.
  • Materiály a světla: limit počtu shader variants, minimalizace průhlednosti, lightmap baking (GPU Lightmapper / UE Lightmass/Path Tracer pro bake), vyhnout se náročným SSR/SSS.
  • Textury: atlasování, MIP bias, komprese (ASTC/BC), texture streaming; v UI používat SDF fonty a správnou pixel density.
  • Animace: retargeting s omezením bone počtu, GPU skinning; snižovat update rate mimo FOV.

Renderovací techniky specifické pro VR

  • MSAA vs. TAA: VR tradičně preferuje MSAA (ostré hrany bez ghostingu), TAA může způsobovat rozmazání ve stereo režimu; kombinace s sharpen filtry a laděním velocity buffer vyžaduje testování na cílovém headsetu.
  • Upscaling: Fixed foveation + upscaling (FSR/DLSS dle platformy a kompatibility se stereo). Zkontrolovat motion vectors a reprojekční artefakty.
  • Shadowing: preferovat baked + jednoduché dynamické stíny pro interaktivní objekty; occlusion přes AO z bake, nikoliv SSAO ve vysoké kvalitě.

Audio ve VR

  • Prostorovost: HRTF (Steam Audio, Meta XR Audio SDK, Microsoft Spatial Audio), pečlivé occlusion/obstruction.
  • Middleware: Wwise/FMOD s integrací do Unity/UE, state-driven mix (umlčování UI zvuků při teleportu, úprava reverbů podle prostoru).
  • Výkon: dynamická kvalita konvoluce, baking reverbových sond.

UI a přístupnost

  • UI ve world-space: čitelnost (úhlová velikost ≥1 stupeň pro text), kontrast, focus distance 1,5–2 m pro snížení vergence-accommodation konfliktu.
  • Interakce: laser pointer pro vzdálené UI, near-touch s hover stavy, haptické potvrzení.
  • Přístupnost: komfortní módy, seated/standing, levák/pravák, omezení pohybu kamerou, bezpečný guardian overlay.

Networking a víceuživatelské VR

  • Synchronizace: predikce a kompenzace u rukou/hlavy (posílat pozici + kvaternion, optimistické vykreslení), zájmové oblasti (interest management), limitovat frekvenci replikace.
  • Unity: Netcode for GameObjects/Entities, Mirror/Photon; striktní delta compression a lag compensation pro úchopy a kolize.
  • Unreal: vestavěná replikace Actorů a RPC, Network Prediction; pečlivé nastavení NetUpdateFrequency, relevancy a snapshotů.

Build a CI/CD pipeline

  • Automatizace: generování app bundle pro cílové platformy (Quest/Android, PC VR, Pico). Headless buildy (Unity CLI, Unreal Build Tool) + testy kouřového spuštění.
  • Asset pipeline: validace LOD, velikostí textur, lightmap UV, pojmenování; pre-commit hooky pro zakázané shadery.
  • Profiling v CI: krátké scénáře s připojeným headsetem (lab), export metrik (CPU/GPU frametime, overdraw, draw calls).

Profilování a ladění

  • Unity: Profiler, Frame Debugger, Memory Profiler, XR Stats; na PC RenderDoc, GPUView. Snižovat GC alokace (Burst/Jobs/DOTS tam, kde to dává smysl).
  • Unreal: stat unit, stat rhi, stat gpu, Unreal Insights, Shader Complexity View; sledovat hitches a shader compile stuttery (pre-compile/pipeline cache).
  • Na zařízení: OVR Metrics Tool, Varjo/SteamVR overlay, Mobile Profiler; měřit teplotní throttling na mobilních headsetech.

Bezpečnost, sandbox a soukromí

  • Oprávnění: kamera (passthrough), mikrofon, přístup k síti – žádat pouze nezbytné.
  • Telemetrie: anonymizovaná, agregovaná; u eye-tracking a hand-tracking metadat jasně deklarovat účel a dobu uchovávání.

Rozdíly Unity vs. Unreal pro VR – shrnutí

Aspekt Unity Unreal Engine
Start a produktivita Rychlý start, bohaté VR šablony, XRI Vyšší out-of-box vizuální kvalita, robustní editor
Render pipeline URP (VR-friendly), HDRP pro high-end Forward Shading/MSAA; Lumen/Nanite s omezeními pro VR
Scripting C#; DOTS/Burst pro výkon Blueprints + C++; Gameplay Ability System
Profilování Profiler/Frame Debugger Unreal Insights/stat nástroje
Ekosystém interakcí XR Interaction Toolkit, třetí strany Motion Controllers, pluginy, VR Template
Mobilní VR Silná podpora (Quest/Pico) v URP Funguje, ale náročnější tuning materiálů/shaderů

Proces návrhu a validace komfortu

  1. Prototyp: rychle vytvořit „graybox“ scény, ověřit lokomoci, měřítko a UX.
  2. Komfortní testy: 10–15minutové seance s nováčky; sledovat nevolnost, dezorientaci, citlivá místa (výšky, prudké akcelerace, změny FOV).
  3. Iterace: přidat comfort options, snížit akcelerace, omezit camera shake, upravit texty a kontrasty.

Publikace a certifikace

  • Požadavky obchodů: Meta/Steam/Pico mají checklisty výkonu, stability a soukromí. Vyžadují plynulost na nativní frekvenci, žádné dlouhé hitches, validní entitlements.
  • Balíčky a podpisy: správné package name, minimální SDK, architektury (ARM64), proguard/strip nativních knihoven.

Doporučená technická „baseline“ pro nový VR projekt

  • OpenXR + jednotná akční mapa (input) a action-based haptika.
  • Forward/URP, MSAA 4×–8×, single-pass instanced stereo, fixed foveation (mobilní).
  • LOD-y, atlasované textury, omezené průhledné materiály, baked lighting.
  • Teleport + snap turn jako výchozí; volitelně smooth locomotion s vignette.
  • Automatizované scene validation (draw calls, lightmap UV, shader keywords) v CI.

Typické chyby a jak se jim vyhnout

  • Přetížené postprocesy (TAA/SSR) → rozmazané stereo, artefakty; raději MSAA + jemný sharpen.
  • Chybné měřítko → nepřirozené zbraně/ruce; kalibrovat 1 jednotku = 1 metr.
  • UI v obrazové rovině bez hloubky → zhoršená čitelnost; používat world-space a správnou vzdálenost.
  • Trvalé spoléhání na reprojekci → artefakty pohybu; optimalizovat obsah a kód.
  • Neřešené shader varianty → dlouhé compile hitches; předkompilace a omezení klíčových slov.

Závěr

Unity i Unreal Engine jsou ve VR vyspělé platformy. Unity získává body rychlým nástupem, URP a XR Interaction Toolkitem; Unreal nabízí špič