Motion sickness - Jak designovat VR aplikace, aby z nich nebylo nevolno?

Motion sickness - Jak designovat VR aplikace, aby z nich nebylo nevolno? Tagy: Vývoj aplikací
| Publikováno dne

Možná jste někdy zažili pocit, kdy se vám z hraní hry udělalo nevolno, přičemž příběhem to nebylo. Strůjcem byl pravděpodobně špatný návrh pohybového systému hry vyvolávající "nemoc z pohybu" (motion sickness). Sám jsem to zažil hned několikrát. Vyjma pár zážitků z prohlížečových her tvořených začátečníky si pamatuji zejména na několik dnů trvající nevolnost a malátnost způsobenou pár desítkami minut hraní na mém VR headsetu HTC Vive někdy v roce 2016. Tehdejší pocit nebyl ani tak zásluhou samotného VR headsetu, jakožto okolních faktorů. Přesto, na konci jsem měl daný pocit nevolnosti spojený obecně s VR a pocitem strachu zkoušet cokoli dalšího. K tomu by nedošlo, pokud by vývojáři dané hry dodrželi postupy pro eliminaci "pocitu nemoci" popsané v tomto článku.

Jak vzniká nemoc z pohybu?

Lidské tělo vnímá svůj přirozený stav v prostoru pomocí 2 na sobě nezávislých, avšak propojených orgánů:

  • Vestibulární aparát - můžeme zjednodušit na smyslový orgán, který na základě chování kapaliny v labyrintu vnitřního ucha posílá mozku signál o aktuálním pohybu, orientaci, natočení i zrychlení hlavy.
  • Vizuální vnímání - zjednodušeně můžeme vyjádřit jako zrakový vjem, z kterého si mozek odvozuje opět informace o pohybu, orientaci, natočení a zrychlení hlavy.

V momentě, kdy je vjem jdoucí z těchto 2 orgánů odlišný, tělo neví, co se přesně děje a jak reagovat - nastává zde tzv. motion sickness, česky nemoc z pohybu. Ve virtuální realitě je k tomuto stavu velmi blízko - typicky uživateli VR headsetu je předkládán prostřednictvím VR brýlí dynamický obraz (vizuální vnímání ✓), zatímco jeho tělo je v klidu (vestibulární aparát X).

Jaké jsou možnosti pohybu uživatele ve virtuální realitě?

VR aplikace můžeme rozdělit na stacionární a prostorové. Při stacionárních aplikacích není umožněn pohyb žádný - uživatel je pevně fixován na jednom místě po celou dobu používání aplikace. Oproti tomu prostorové aplikace pracují s aktivním prostorem umožňujícím nezávislý pohyb hráče. Tento pohyb může být vykonán následujícími způsoby pohybu (anglicky locomotion systems):

  • Přirozený pohyb

    VR headsety s 6 stupni volnosti (6DoF) obsahují technologii pro trackování a přenos skutečného pohybu uživatele ve fyzickém světě do aplikace běžící ve virtuální realitě. Jedná se o zcela přirozený způsob pohybu ve VR, nicméně samostatně použitelný je pouze v aplikacích vyžadujících velmi malý prostor. Limit prostoru je přitom určen především dostupnou volnou plochou ve fyzickém prostoru - samotný VR headset Oculus Quest zvládá bezpečně trackovat pohyb na herní ploše 58m² (7.6 x 7.6m), u zařízení HTC s doplněnými stanicemi pro trackování pohybu lze obsloužit ještě větší prostor.

  • Pohyb pomocí teleportu

    Teleportace je schopnost přesunutí se z místa na místo v mžiku 1 obrazového snímku. Zpracování výběru místa i způsobu přenosu může být libovolné:

    • Klikem na konkrétní místo v prostoru
    • Pomocí UI rozhraní / mapy
    • Pomocí interaktivního tělěsa - dveře / dopravní prostředek

    Při teleportu nedochází k žádnému konkrétnímu pohybu - můžete si jej představit jako mrknutí, při němž se změní kompletně vše kolem vás. Díky tomu nedochází k žádnému rozporu mezi produkcí vjemů dvojicí orgánů a tedy i k žádnému motion sickness.

    Teleport se často používá v kombinaci s přirozeným pohybem z bodu 1. Teleportem se uživatel přesouvá mezi vzdálenějšími místy, které poté prozkoumává již přirozeně. Pro přirozený pohyb má například definovaný prostor 2x2 metru daný volnou plochou svého obývacího pokoje.

  • Pohyb pomocí pohybové platformy

    Pohybovou platformu si lze představit jako chodící prohloubený pás s volným pohybem v jakémkoli směru, přičemž pohyb osoby na tomto pásu je replikován ve virtuální realitě. Použití pohybové platformy umožňuje dosáhnout volnosti neomezeného pohybu na velmi malém prostoru pásu.

    Pohyb působí opět přirozeně a k motion sickness nedochází.

  • Pohyb pomocí ovladače

    Použití tlačítek a především joysticku ovladače pro pohyb je vhodné používat pouze v nezbytných případech. Při tomto pohybu oči vnímají pohyb, aniž by k jakémukoli pohybu těla docházelo. Tím dochází k motion sickness, neboli nemoci z pohybu. Pokud je nutné tento typ pohybu povolit, je dobré pracovat se známými postupy k dosažení co možná maximální eliminace projevů daného pocitu - například aktivace vignette efektu (ztmavení rohů) při pohybu. Více tipů v sekci vhodný návrh aplikace.

Jak předcházet pocitu nevolnosti návrhem aplikace?

  • Optimalizace výkonu pro maximální FPS

    VR headsety zvládají 60, 90 i více snímků za sekundu (Hz). Lidský mozek je prostřednictvím oka schopen zpracovat maximálně něco mezi 40-60Hz, přičemž ale pracuje s velkou ztrátovostí (Critical Flicker Fusion) o hodnotě až 50%. Samotné VR headsety tedy musí dosahovat daleko vyšších Hz hodnot. Pokud bychom vzali nejhorší možný případ - potřebu dosáhnout maximálního vnímatelného počtu snímků a zároveň nejnižší efektivitu zpracování v mozku, dojdeme k potřebě dosahovat frekvence minimálně 120Hz. V praxi nicméně dnes často pracujeme s minimální hodnotou na úrovni 90Hz, přičemž i tato hodnota není dosahována zdaleka všemi zařízeními. Ku příkladu populární brýle Quest pracují s frekvencí 72Hz.

    Motion sickness nastává v okamžiku, kdy frekvence zpracování snímků v mozku je vyšší než frekvence snímků generovaná aplikací a vyobrazená displayem VR headsetu. Je tedy nezbytné držet FPS výkon aplikace ve všech případech nad úrovní zpracování v mozku. Volba minimální frekvence aplikace je jednoduchá - optimálně 90Hz za všech okolností. Skutečné FPS běhu aplikace lze měřit jednoduše s pomocí scriptu (případně pomocí nástrojů herního enginu, ve kterém vyvíjíte).

  • Eliminace nechtěných pohybů

    Povrch terénu musí být bez jakýchkoliv elementů, které by způsobovaly jakékoli proskoky, záseky nebo zpomalení kamery ve virtuálním prostoru oproti poloze VR headsetu v reálném světě.

    Příkladem může být obrubník nebo schody. Mechanismy typu chůze po schodech, kdy by kamera ve virtuálním prostoru s každým schodem o jeho výšku poskočila, je vhodné "utlumovat" například způsobem "záměny" za nakloněnou rovinu. Technicky se pro to buď napíše komponenta zvládající tyto pohyby automaticky vyhladit, případně lze např. nad viditelnými schody vytvořit nakloněnou neviditelnou rovinu (průhlednost 0) po které daný uživatel kráčí namísto schodů. Výsledný pocit chůze po schodech působí mnohem realističtějším a plynulejším dojmem. Z hledisku samotného designu hry je nicméně vhodné namísto schodů volit výtahy.

    Dalším příkladem může být otřesení se země po výbuchu granátu. V počítačových střílečkách se v tento moment ohromně zatřese kamera. U VR na pocit vycházející ze stejné situace raději nemyslet - byl by extrémně nepříjemný. Mnohem lepší volbou je použít post processing a zatřást pouze okraji obrazovky - hráč získá periferně pocit otřesu přičemž hlavní zorné pole zůstává bez nechtěných a nepříjemných pohybů.

  • Realistické vidění

    Při nastavování post-processingu je třeba vycházet z běžných zvyklostí běžného světa. Efekty typu rozostření pozadí (depth of field), motion blur a dalších efektů hojně se využívajících ve světě fotografie, filmu a běžných her nejsou pro lidské oči ve VR přirozeným stavem.

  • Když je potřeba hýbat s uživatelem

    Nejlepším způsobem přenosu je přirozený vlastní pohyb, teleport nebo použití pohybového zařízení. Nicméně mnohdy je VR aplikace založena právě na zprostředkování pohybu cizího - perfektního předpokladu pro vznik motion sickness. Může jít o jízdu na horské dráze, po pohyblivé platformě i jednoduchou virtuální prohlídku napříč městem.

    U těchto aplikacích platí pravidlo "žádné prudké a nečekané pohyby!" Žádné bláznivé pohyby kamery (hráče) typu zběsilá akcelerace / brzdění, změna směru... Pohyb kamery musí být naprosto plynulý, a to ve všech směrech. Ilustraci rychlosti nebo zrychlení je potřeba doručit pomocí post processingu - typicky zmenšením zorného pole, rozmazáním okrajů, vytvořením "rychlého tunelu" po okrajích obrazovky (znáte z Need For Speed) a podobně.

  • Vhodný rozvrh prostředí - existence bodů orientace

    V prostoru se mozek orientuje na základě určitých výrazných prvků - např. konkrétního domu, stromu a podobně. V poušti tohle možné není a člověk se může rychle dezorientovat a ztratit. U VR platí to samé. Designujte scény tak, aby se uživatelův mozek měl vždy čeho chytit a nezískal nepříjemný pocit "ztracení se".

    Vhodná struktura rozestavení terénu pomůže uživateli i s rozpoznáváním rychlosti a obecně orientací při otáčení se a rozhlížení se kolem sebe. Při otáčení pomáhá existence těles ve více vrstvách namísto v jedné linii (něco v popředí, něco jiné v pozadí...). Rychlost je velmi relevantní vzdálenosti různých těles od kamery (zraku) hráče - čím jsou tělesa blíže, tím je pocit rychlosti výraznější. Špatný pocit z orientace i nadměrné rychlosti s rychle se střídajícími objekty způsobují motion sickness.

  • UI prvky

    UI prvky jako jsou menu nabídky, tlačítka a různé popisné a informační texty je vhodné volit s fixním upevněním v terénu. Pokud je nezbytné jejich umístění navázané na pohyb kamery, tento pohyb by měl být plynulý a pohyby kamery by UI prvky měly následovat zpětně (vjíždět do obrazu namísto fixního pohybu 1:1 s kamerou)

  • Vyhýbat se blikajícím světlům a zábleskům

    Nadměrné používání výrazných světel, jejch problikávání, záblesků při výstřelu z pistole a jiných efektů zvyšuje únavu pozorovatele a pravděpodobnost nepříjemných pocitů.

  • Dejte uživateli možnost volby

    Každý uživatel je jiný, má jiné preference, jiný VR headset a rozdílný práh pro získání motion sickness. Dát uživateli možnost jednoduché volby - jaký způsob pohybu chce používat, jaké efekty aktivovat, jakou kvalitu grafiky nastavit apod. je vždy dobrou praxí.

  • Nenatahujte to

    VR ušlo dlouhou cestu, avšak stále to není perfektní. To samé platí pro vaši aplikaci. Čím déle budete nutit uživatele trávit čas ve virtuální realitě nepřerušeně, tím vyšší je šance na získání pocitu nemoci z pohybu. Tvořte tedy VR aplikace takovým způsobem, aby uživatel nebyl nucen trávit v nich déle času, než je nezbytně nutné. Pokud jde o hry, ideální je automaticky pauzovat a ukládat hru při každém sundání headsetu. Tím je uživateli umožněno bezproblémové přerušované hraní - sám si může rozhodnout, kdy skončit.

  • Testujte a ptejte se na pocity

    Každý člověk je jedinečný, stejně tak jeho pocity při užívání vaší aplikace. Někteří lidé jsou senzitivnější na určité barvy a jejich kombinace. Dále platí, že čím méně je uživatel na virtuální realitu zvyklý, o to pravděpodobněji se mu dostaví nepříjemné pocity. Případné testování může dopomoci odhalit a odstranit případné přehlédnuté a nedomyslené problémy.

Více k problematice UX návrhu VR aplikací naleznete v článku Vývoj v Unreal Engine - UX design VR aplikací.