Jaké XR ovladače existují a proč je potřeba input manager?

Jaké XR ovladače existují a proč je potřeba input manager? Tagy: Vývoj aplikací
| Publikováno dne

Na trhu dnes najdeme mnoho VR a AR zařízení, často pracujících v rámci vlastních ekosystémů, s vlastními hardwarovými (ručními) ovladači i připojitelným příslušenstvím. Jednotný XR standard, dle nějž by se společnosti zabývající se virtuální realitou mohly řídit, po dlouhou dobu chyběl - první smysluplný návrh - OpenXR standard - byl představen teprve v polovině roku 2019 - po více jak 30 letech existence VR headsetů. Za návrhem stojí silné jméno - společnost Khronos Group - jež na přelomu tisíciletí dopomohla pomocí svého OpenGL ES a 3D API sjednocení standardů mobilních telefonů a jejich softwaru. V rámci odvětví virtuální a rozšířené reality získala Khronos Group podporu hlavních hráčů na poli vývoje VR harwaru i softwaru a lze tedy předpokládat, že historický úspěch z mobilních telefonů se zopakuje. VR trhu by to pomohlo, nakonec, hlavní hodnota obsahu přichází teprve s možností jeho přenositelnosti a konzumace v rámci různorodých zařízení.

Tento článek se věnuje výhradně problematice hardwarových ovladačů pro ovládání XR aplikací. Ačkoli ovladače od Oculusu, HTC, Valve, Google a dalších výrobců se liší, v aplikační vrstvě a logice ovládání příliš rozdílů není. Jak se podpora několika ovladačů s pomocí Input manageru řeší, kolik funkcí ovladače skutečně mají, a jak se od sebe liší, přiblíží následující odstavce...

Základní funkce hardwarových XR ovladačů

Ruční ovladač slouží k lokalizaci ruky uživatele v prostoru a možnosti ručního ovládání XR (VR a AR) aplikací. Počet ručních ovladačů je dán typem VR headsetu. Většina lepších VR headsetů je standardně se 2-ma ovladači, kdy ovladač pro každou ruku je přezrcadlený (stejně jako ruce), s jinak označenými tlačítky, případně stejný, bez označení tlačítek. Základní VR headsety, často se 3mi stupni volnosti, obsahují ovladač jediný. VR headsety tvořené mobilním telefonem vloženým do cardboardu jsou v základu bez ovladače, který je možno propojit s mobilním telefonem skrze bluetooth rozhraní.

U ručních ovladačů je brán důraz na ergonomii a jednoduchost používání. Prostor je zde pouze pro pár logický umístěných tlačítek různého typu, které jsou navíc po čas používání virtuální reality ve fyzickém prostoru neviditelné.

Základní typy tlačítek na XR ovladačích

Průměrný XR ruční ovladač má pouze 5 volných ovládacích prvků, které však mohou nabývat mnoha stavů. Například běžná tlačítka nemají definován pouze stav stisknuto / nestisknuto, ale i stav volně položeného prstu na tlačítku. U joysticků, nabývajících stav <0 - 1> v jakémkoli směru, existuje rovněž stav položeného prstu, dokonce, joysticky jsou obvykle stisknutelné (stav klik). Díky tomu lze i přes pouhých 5 prvků na ovladač dosahovat vysokého množství stavů, s nimiž může vývojář při návrhu ovládacích prvků XR aplikace pracovat.

Funkce a vlastnosti ovládacích prvků nalezitelných na XR ručních ovladačích

  • Palcový ovladač (2D Axis) - pákový ovladač na kloubu (podobný joysticku) umožňující vychýlení o hodnotě 0 až 1 (síla stlačení) v jakémkoli volném směru. Vyjma vektorové hodnoty směru joystick detekuje i dotek (touch) a kliknutí (zatlačení kloubu)
  • Trigger - zpravidla tlačítko v přední části ovladače, ovládané ukazováčkem. Výstupem je hodnota velikosti stisknutí <0 - 1>. Při stavu vyšším než určitá definovaná velikost dochází rovněž ke stavu stisknuto. Při pouze položeném prstu (stisknutí 0) může být dostupný stav "touched" (prst na tlačítku).
  • Grip - Obdobně jako tlačítko "Trigger", s tím rozdílem, že "Grip" se nachází na boční straně ovladače, pod prostředníčkem ruky držící ovladač.
  • Dvojice běžných tlačítek - Dvojice běžných tlačítek se stavy stisknuto / nestisknuto / prst na tlačítku. Na ovladači levé ruky často označeny písmeny X a Y, na ovladači pravé ruky poté písmeny A a B.
  • Dotyková obrazovka - univerzální obrazovka schopna detekovat doteky, swipování i kliky.
  • Vyhrazené tlačítko - ovladače často obsahují i jedno vyhrazené tlačítko pro mimo-aplikační účely - například návrat do menu VR headsetu.

3D modely nejpoužívanějších XR ručních ovladačů

Tato sekce sdružuje přehled nejpoužívanějších XR ručních ovladačů. Najdete zde 3D modely daných ovladačů (načtené ze Sketchfab) i se stručným popisem jejich vlastností a ovládacích prvků. Všimněte si, že ovládací prvky jednotlivých ovladačů se více či méně liší (viz účel XR input managera). Pokud by jste potřebovali dané modely pro načtení v Unity, můžete si je volně vyexportovat z XR Framework, který jsem volně zpřístupnil pod anglickou odnoží VRapps.cz (GameArter.com/vr).

Ovladače pro Oculus Quest / Rift S

Ovladače pro VR headsety Oculus Quest a Rift S (oba headsety použivají identické ovladače). Vedle těchto základních, Oculus nabízí i lehce poupravené ovladače disponující navíc dotykovou plochou vedle 2 tlačítek). Na modelu vlevo je základní ovladač pro pravou ruku, vpravo poté pro levou ruku. Přehled ovládacích prvků ovladače Oculus

Ovladače pro Valve Index

Levý ovladač Valve Index. Pravý je pouze přezrcadlený, s tlačítkami X,Y namísto A B. Ovladače Valve patří mezi nejlepší současné VR ovladače. Přehled ovládacích prvků ovladače Valve

Ovladače pro HTC Vive

Přehled ovládacích prvků ovladače HTC Vive

Ovladače DayDream

Daydream VR controller od Google. Přehled ovládacích prvků ovladače Daydream

XR input manager

Ruční ovladače jednotlivých VR headsetů se liší, a to nejen počtem, ale i typem. To je vhodné si uvědomit při návrhu ovládacích prvků aplikací. V praxi mnohé ovládací prvky jsou společné, případně jeden prvek supluje jiný. Naštěstí, technický aspekt závislostí a podpisu jednotlivých tlačítek se většinou řešit nemusí - k vývoji XR aplikací se obvykle používá zavedený herní engine, jehož vývojáři tuto práci s mapováním již provedli za vývojáře. Následující tabulka je převzata z dokumentace XR input managera v Unity a zobrazuje propojení jednotlivých tlačítek napříč různými XR ručními ovladači. Na straně aplikace se poté pracuje jen s hodnotami "InputFeatureUsage" a tedy jediné, co se musí hlídat, je existence tlačítka poskytující daný typ inputu na ovladačích, pro něž se XR aplikace vyvíjí.

InputFeatureUsage Feature type Legacy input index (left/right controller) WMR Oculus GearVR Daydream OpenVR (Full) Vive Oculus via OpenVR WMR via OpenVR Magic Leap
primary2DAxis 2D axis [(1,2)/(4,5)] Touchpad Joystick Touchpad Touchpad Trackpad/Joystick Trackpad Joystick Joystick Touchpad
trigger Axis [9/10] Trigger Trigger Trigger Trigger Trigger Trigger Trigger Trigger Trigger
grip Axis [11/12] Grip Grip Bumper Grip Grip Grip Grip Bumper
secondary2DAxis 2D axis [(17,18)/(19,20)] Joystick Touchpad
secondary2DAxisClick Button [18/19] Joystick - Click
primaryButton Button [2/0] [X/A] - Press App Primary Primary (sandwich button)(1) Primary (Y/B) Menu Menu
primaryTouch Button [12/10] [X/A] - Touch
secondaryButton Button [3/1] [Y/B] - Press Alternate Alternate (X/A)
secondaryTouch Button [13/11] [Y/B] - Touch
gripButton Button [4/5] Grip - Press Grip - Press Grip - Press Grip - Press Grip - Press Grip - Press Bumper - Press
triggerButton Button [14/15] Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Touch Trigger - Press Trigger - Press
menuButton Button [6/7] Menu Start (left controller only)
primary2DAxisClick Button [8/9] Touchpad - Click Thumbstick - Press Touchpad - Press Touchpad - Press Trackpad/Joystick - Press Trackpad - Press Joystick - Press Touchpad - Press
primary2DAxisTouch Button [16/17] Touchpad - Touch Thumbstick - Touch Touchpad - Touch Touchpad - Touch Trackpad/Joystick - Touch Trackpad - Touch Joystick - Touch Touchpad - Touch Touchpad - Touch
batteryLevel Axis Battery level
userPresence Button User presence User presence
Tabulka označující mapování tlačítek napříč VR ovladači při použití XR input managera v Unity.

Výstup stavu tlačítek ručních ovladačů Oculus Quest

Teorie je hezká, mnohé věci je však nutné si osahat. I pro to může posloužit XR Framework od GameArteru. Následující video je natočeno právě s jeho využitím - za použití scriptu zachycujícího stavy ovládacích tlačítek napříč XR ručními ovladači a jednoduchého UI rozhraní pro zobrazení jejich skutečného stavu.