| Virtuální a rozšířená realita se v praxi průmyslové automatizace
        asi ani v blízké době nestane zcela běžnou a masově používanou věcí.
        Máme na mysli opravdový pohyb, dohled a ovládání výrobních linek
        prostřednictvím náhlavní sady (headset) ve virtuálním prostředí a
        nikoliv např. pouhý servisní návod v tabletu nebo telefonu. I když
        úroveň vyspělosti technologií virtuální a rozšířené reality poskytuje
        případným odpůrcům řadu argumentů proti, počet řešení, kde je
        virtuální a rozšířená realita přínosem stále roste, a nepochybně dále
        poroste. Systém Control Web je na tuto budoucnost připraven. V oblasti virtuální a rozšířené reality probíhá intenzivní vývoj,
        obecně přijaté standardy dosud nejsou stanoveny. Cílem čelních firem
        oboru je snaha o uzamčení zákazníka – dodavatelé usilují, aby na nich
        byli zákazníci co nejvíce závislí. Vyvázat se z takových závislostí je
        později velice nákladné, proto je dobrá obezřetnost předem. Hlavní
        platformy, jako je např. Occulus, Vive, Microsoft WMR vyžadují běh
        svých portálů, často s on-line spojením se systémem poskytovatele.
        Řada technologií pro virtuální realitu je softwarově uzamčena a
        blokována. Někdy bývá vyžadováno přihlášení k účtu a před spuštěním
        software dokonce certifikát pro spárování s hardwarem. Vývojem nyní
        prochází i několik otevřených platforem, které snad budou podporovat
        několik standardů VR, ale produkty zde nejsou zdaleka dokončeny. V
        aplikačním prostředí systému Control Web jsou nyní podporovány
        standardy WMR (Windows Mixed Reality) pro virtuální realitu a Hololens
        pro rozšířenou realitu. Principy jsou navrženy natolik obecně a
        otevřeně, že do budoucna bude přidána podpora dalších standardů, např.
        OpenVR atd. Při implementaci virtuální reality v prostředí systému Control Web
        jsme usilovali o co největší otevřenost a snadnou rozšiřitelnost o
        podporu dalších standardů. Nyní je možno používat brýle a ovladače
        standardu Microsoft WMR (Windows Mixed Reality). Stereografický obraz
        je vytvářen virtuálním přístrojem gl_scene. Je tedy
        velice snadné řadu současných aplikací rozšířit o prostředí virtuální
        reality. Do systému WMR je přenášen již hotový obraz pro levý a pravý
        zobrazovač v brýlích. Přenos dat mezi jednotlivými procesy je natolik
        rychlý, že lze přenášet obraz v plném rozlišení bez nutnosti ztrátové
        komprese. Jako klient systému WMR pro aplikační program vystupuje
        virtuální přístroj vr_headset. Tento virtuální přístroj
        si případě potřeby poté v samostatném procesu spouští vlastní
        Microsoft WMR portál. Velkou výhodou tohoto řešení je, že obrovský a
        značné množství systémových zdrojů spotřebovávající portál není
        součástí paměti procesu systému Control Web a podstatně méně tak
        ohrožuje výkon a stabilitu naší aplikace. Nepoužíváte-li tedy v
        aplikaci virtuální realitu, nic z její podpory vás nezdržuje ani
        neobtěžuje. Navíc je zde také možnost postupného přibývání dalších
        virtuálních přístrojů pro další standardy virtuální reality. V případě rozšířené reality s brýlemi Hololens je situace výrazně
        složitější. Jedná se o samostatné, baterií napájené zařízení, s
        procesorem ARM a operačním systémem WindowsRT. Vytvoření samostatné
        aplikace pro tento systém je samozřejmě možné, ale kooperace s
        potenciálně rozsáhlými síťovými systémy v prostředí Control Web,
        tvorba vlastních aplikací a vizualizací a rovněž omezený výkon této
        platformy přinášejí uživatelům hodně komplikací. Systém v brýlích musí
        řešit nejen tracking na základě obrazu z vlastních kamer, ale také
        musí ze stereoskopických obrazů trvale budovat hloubkové mapy okolního
        prostředí a rovněž musí detekovat pozice, gesta a akce rukou
        uživatele. Už jen toto představuje zátěž a značnou spotřebu energie z
        baterie. Bez hloubkových map můžeme např. zobrazovat servisní návody a
        postupy, ale nelze zasadit vykreslované 3D modely do reálného
        prostředí. Pro komunikaci jsou brýle Hololens odkázány na bezdrátový
        přenos dat prostřednictvím Wi-Fi. Řešením problému s přenosovou
        kapacitou je streaming dat, který pro přenos obrazu využívá velmi
        účinné kodeky H264 a H265. Díky tomu můžeme do brýlí v reálném čase a
        velkou snímkovou frekvencí dostat libovolně složitou 3D scénu. V
        brýlích Hololens je instalována a spuštěna standardní aplikace
        Holographic Remoting Player, které je k dispozici volně na Microsoft
        Store. Stereoskopický obraz, který generuje 3D scéna v libovolné
        aplikaci systému Control Web. Další významnou výhodou tohoto řešení je
        skutečnost, že stejně jako v předchozím případě i zde platí, že
        nepoužíváte-li ve své aplikaci rozšířenou realitu, nic z její podpory
        vás nezdržuje ani neobtěžuje a ani nezabírá žádné místo. Koncepce řešení prostřednictvím programových komponent
        systému Control Web. Jak již bylo uvedeno, vytváření stereoskopického obrazu zajišťuje
        dobře známý virtuální přístroje gl_scene. Většinu
        stávajících vizualizací tak lze celkem snadno převést do virtuální či
        rozšířené reality. To je velkou výhodou, není totiž nutno nijak
        výrazně měnit strukturu existujících aplikací ani měnit způsoby a
        principy tvorby aplikací nových. To, jestli scéna bude generovat
        stereoskopický obraz je dáno parametrem camera_stereo_base
        lišícím se od nuly. Vykreslený obraz lze ukládat do datového elementu
        a libovolně je dále používat lokálně nebo jej přenášet v počítačové
        síti. 
 Scéna může vytvářet stereoskopický obraz pro jakékoliv
          další použitíScéna systému Control Web nejen generuje prostorový obraz, ale také
        získává aktuální pozici a orientaci v prostoru. Kromě toho také
        reaguje na povely z prostorových ovladačů nebo na pozice a gesta
        rukou. Virtuální přístroje v prostoru scény lze pomocí ovladačů nebo
        rukou normálně ovládat. Prostřednictvím ovladačů pro virtuální realitu
        se také lze pohybovat prostorem. Gesta rukou pohyb prostorem
        neumožňují. Aplikace pak musí komunikovat s vybraným programovým rozhraním pro
        virtuální a rozšířenou realitu, instalovaným v operačním systému. Při
        návrhu architektury a implementaci komponent jsme si dali za úkol, aby
        velice rozsáhlé a značné množství zdrojů spotřebovávající portály,
        komponenty a služby nebyly součástí paměťového prostoru systému
        Control Web a pokud možno co nejméně omezovaly a ohrožovaly výkonnost
        a stabilitu našich aplikací. Spojení s API pro virtuální realitu, v
        případě brýlí Hololens přímo s patřičným zařízením, je vyřešeno
        prostřednictvím samostatných virtuálních přístrojů vr_headset
        a hololens. Pro přenosy velkých bloků binárních dat jak
        uvnitř systému Control Web, tak i mezi procesy operačního systému a
        mezi jednotlivými zařízeními prostřednictvím TCP/IP sítě, slouží
        proměnné typu data. Přenášená data mohou být v libovolném
        formátu - stačí, když formátu rozumí programová komponenta jejich
        příjemce. Přenos takových bloků dat bývá v systému Control Web obvykle
        používán např. pro přenosy obrazu z kamer nebo pro přenos rozsáhlých
        dat z kroků strojového vidění. V případě virtuální a rozšířené reality
        jsou takto přenášeny vykreslené obrazy, trasovací informace z headsetů
        a ovladačů i polygonální sítě hloubkových map okolí. 
 Vizualizace polygonálních hloubkových map pro skrývání
          hologramů za reálnými objekty v okolí v rozšířené realitěVytvoření aplikačního programu je docela jednoduché - pomocí
        několika datových elementů, proměnných typu data, se
        propojí dva virtuální přístroje. Na řešení se můžete podívat do
        ukázkových aplikací. Parametry virtuálního přístroje gl_scene pro
        tvorbu stereoskopického obrazu i pro ovládání scény z
        headsetu Parametry jsou shromážděny v sekci virtual_reality. virtual_reality
  camera_stereo_base = 0;
  camera_view_angle = 45;
  space_ratio = 1, 1, 1;
  picture_output = ;
  background_transparency = false;
  depthmap_input = ;
  tracking_input = ;
  headset_instrument = ;
  left_controller = true;
  right_controller = true;
  headset_tracking = true;
  headset_depthmaps = true;
end_virtual_reality; Pomocí těchto parametrů jsou definovány vlastnosti
          generovaných obrazů a data, přenášená mezi scénou a virtuálními
          přístroji rozhraní s headsety. 
          
          camera_stereo_base = 0 • Vzdálenost, v rovině
          kolmé ke směru pohledu kamery, mezi pozicemi kamery při vykreslování
          scény pro levé a pravé oko. Vzdálenost je v souřadném systému scény.
          camera_view_angle = 45 • Zorný úhel kamery ve
          svislém směru. S rostoucím zorným úhlem se rozšiřuje pohledový
          jehlan ( view frustum ) perspektivní projekce a zvětšuje se tak
          širokoúhlost pohledu. Pro virtuální realitu není přesnost nastavení
          tohoto parametru příliš důležitá, člověk se snadno přizpůsobí míře
          širokoúhlosti pohledu do prostoru. Klíčovým je ale nastavení zorného
          úhlu pro rozšířenou realitu. Pohledová pyramida perspektivní
          projekce musí přesně souhlasit s velikostí obrazu promítaného do
          brýlí, kterými jinak volně vidíme reálné okolní prostředí. V případě
          brýlí Hololens 2 je k dispozici svislý zorný úhel pouze cca 34°.
          space_ratio = 1, 1, 1 • Konstanty pro přepočet
          vnitřního souřadného systému scény do souřadného systému brýlí.
          Náhlavní sady obvykle poskytují souřadnice v metrech.picture_output = • Proměnná typu data,
          do které scéna ukládá výsledný stereoskopický obraz.background_transparency = false • Lze zadat, aby
          pozadí scény bylo inicializováno s průhledným alpha kanálem ( tj.
          nastaveným na hodnotu 0 ).depthmap_input = • Vstupní kanál typu data,
          na kterém scéna přijímá struktury polygonů hloubkové mapy pro
          rozšířenou realitu.tracking_input = • Vstupní kanál typu data,
          na kterém scéna přijímá aktuální pozici a natočení při pohybu
          headsetu v prostoru a rovněž případné pozice a aktivity prostorových
          ovladačů pro virtuální realitu.headset_instrument = • Unikátní jméno
          virtuálního přístroje, který zajišťuje propojení scény s
          headsetem.left_controller = true • Parametr určuje, je-li
          používán levý prostorový ovladač pro virtuální realitu nebo
          používána levá ruka v rozšířené realitě. right_controller = true • Parametr určuje, je-li
          používán pravý prostorový ovladač pro virtuální realitu nebo
          používána pravá ruka v rozšířené realitě. headset_tracking = true • Parametr určuje, je-li
          zpracovávána a používána pozice a natočení při pohybu
          headsetu.headset_depthmaps = true • Parametr určuje,
          jsou-li zpracovávána a používána data s hloubkovými mapami pro
          okluzi viditelnosti objektů v rozšířené realitě. Virtuální přístroj vr_headset pro komunikaci se
        systémem virtuální reality WMR Virtuální přístroj pro komunikaci s rozhraním a portálem
          Windows Mixed Reality. Portál WMR je spuštěn v samostatném procesu
          operačního systému. Virtuální přístroj má tyto parametry: 
          
          picture_input = 0 • Vstup stereoskopického
          obrazu.tracking_output = • Výstup trasování pozice
          headsetu. scene_instrument = • Jméno virtuálního přístroje
          3D scény. Virtuální přístroj hololens pro komunikaci se
        headsetem pro rozšířenou realitu Hololens 2 Tento virtuální přístroj zajišťuje spojení s headsetem
          Hololens. Jedná se o samostatné zařízení s vlastním procesorem a
          operačním systémem Windows pro procesory ARM. Headset je napájen
          baterií a komunikuje pomocí bezdrátového Wi-Fi adaptéru. Proto mezi
          parametry je také IP adresa a navíc je zde i výstup dat s
          hloubkovými mapami: 
          
          picture_input = 0 • Vstup stereoskopického
          obrazu.tracking_output = • Výstup trasování pozice
          náhlavní sady. depthmap_output = • Výstup trojúhelníkové sítě
          hloubkové mapy.scene_instrument = • Jméno virtuálního přístroje
          3D scény.headset_ip_address = • IP adresa
          headsetu. Headsety standardu WMR pro virtuální realitu Tyto headsety získávají obraz prostřednictvím HDMI kabely z
        počítače a obraz ze svých kamer posílají do počítače pomocí USB
        3.0. Systém má k dispozici počítač, je proto velmi výkonný.
          Meziprocesová komunikace mezi systémem Control Web a WMR portálem je
          rychlá a odezvy obrazu i trackingu hlavy jsou
          bezprostřední. 
          
          Přenos obrazu po HDMI z libovolného grafického kontextu je
          uměle zablokován, je možný jen prostřednictvím WMR portálu.Headset nemá možnost dioptrické korekce a ne každé dioptrické
          brýle se pod něj vejdou (měli jsme k dispozici několik headsetů zn.
          Acer). Fixní korekční čočky lze zakoupit od nezávislých
          výrobců. Tvorba aplikace je snadná a virtuální realita je působivá a
        pohlcující. Headsety pro rozšířenou realitu Microsoft Hololens
        2 Vývoj software pro tuto platformu probíhal na vzorku zařízení,
        který dosud není ve volném prodeji. A velmi dlouhá doba do uvedení do
        prodeje ukazuje, jak náročný je vývoj tohoto zařízení. Kdo čeká, že po nasazení těchto brýlí bude obklopen
          bezchybným renderovaným světem dokonale zasazeným do pozorované
          okolní reality, bude v některých ohledech asi zklamán. Je zde řada
          omezení, kdy některá jsou dána technickými nedokonalostmi, ale
          některá plynou již z principů: 
          
          Vidíme pouze obraz, který je světlejší než reálné okolí.
          Hologramy se proto na světlém pozadí ztrácejí až mizí. Nejlepší je
          decentní šero, při větším šeru zase již přestává fungovat tracking
          pohybů a detekce hloubkových map.Hloubkové mapy, které omezují viditelnost hologramů podle
          reálného prostředí jsou hodně nepřesné a prakticky jsou neustále
          modifikovány. Tvorba hloubkových map z obrazů z dvojice kamer je
          velmi náročná na výkon procesoru v headsetu a v šeru rovněž
          selhává.Generovaný obraz je zobrazován pouze v relativně malém zorném
          úhlu, vertikálně cca 34°. Přenosová kapacita mezi počítačem a headsetem je omezena
          možnostmi Wi-Fi. V našem případě samozřejmě nemůže celý Control Web
          běžet na relativně omezeném systému v headsetu. Zde běží pouze
          klientská aplikace, které čte a zpětně zasílá data do
          počítače.I při značné omezenosti systému přece jen máme bezprostředně
          na čele a na spáncích počítač s grafickým adaptérem a s Wi-Fi jako
          zdroj tepla a vysokofrekvenčního elektromagnetického pole. Asi to
          nelze zevšeobecňovat, ale některé jedince při používání hodně bolí
          hlava.Baterie udrží zařízení v provozu asi dvě hodiny, takže během
          dne střídavě používáte a nabíjíte. Navíc baterie, která je umístěna
          na zátylku vaší hlavy, se při provozu vybíjí natolik rychle, že
          znatelně hřeje. Teplo do zátylku také asi vesměs lidem nebude
          příjemné.Vzhledem k tomu, že volně vidíme reálné okolí, je systém
          velice náročný na přesnost a rychlost odezvy při udržování stabilní
          pozice hologramu při pohybech hlavy. Headset nemá možnost dioptrické korekce a ne každé dioptrické
          brýle se pod něj vejdou.  Koncepce samostatného zařízení, které nemá k dispozici výkon a
        potenciál současných počítačů, některé věci usnadňuje a některé naopak
        komplikuje. Headset je lehký a celkem pohodlný na nošení, a navíc bez
        kabelů. Jednoduché řešení v aplikacích systému Control Web Vytvoření aplikace s virtuální realitou je opravdu velice snadné.
        Pomocí několika parametrů můžeme jakoukoliv 3D scénu přizpůsobit pro
        generování stereoskopického obrazu pro náhlavní sadu. Ve virtuální
        realitě jsme zcela obklopeni uměle vykreslovaným prostředím, tedy i
        relativně široké rozsahy zorných úhlů, vzdálenosti očí od sebe a
        převodních poměrů mezi metry a jednotkami souřadného systému scény
        jsou naším mozkem bez problémů akceptovány a v prostředí scény se
        cítíme i pohybujeme velmi přirozeně. Při vlastním pohybu jsme sice
        omezeni přívodními kabely, ale pohybovat se prostorem scény můžeme i
        pomocí ovladačů. Lze se tak volně přemísťovat prostorem a být přitom
        pohodlně usazeni v křesle. Prostřednictvím prostorových ovladačů
        můžeme veškeré 3D virtuální přístroje ovládat stejně, jako v normální
        3D scéně myší. 
 Řídicí prvky ve scéně lze ve virtuální realitě ovládat
          pomocí controllerůTvorba aplikace pro rozšířenou realitu je již o poznání složitější.
        Scéna musí být vykreslována se shodným zorným úhlem, v jakém daný
        headset generuje obraz. V případě Hololens 2 je to 34 stupňů
        vertikálně při poměru šířky a výšky obrazu 3 : 2. Jen při dodržení
        těchto parametrů lze generované hologramy přesně usadit do reálného
        prostředí. Do skutečného prostoru musí být také velmi přesně umístěny
        tzv. hloubkové mapy, které nám zajišťují překrývání generovaných
        hologramů reálnými objekty v našem okolí. Pozici a měřítko hloubkových
        map v prostoru scény lze nastavit OCL procedurou SetDepthmapLocation( PositionX, PositionY, PositionZ, ScaleX, ScaleY, ScaleZ : real ).
        Parametry je možno zjistit interaktivně, uložit je do souboru a poté
        je vždy automaticky při startu aplikace pomocí této procedury do scény
        vložit. Přesnost a kvalitu polygonálních hloubkových map pak již
        příliš ovlivnit nedokážeme. Tvorba hloubkových map z obrazů dvou kamer
        headsetu rozhodně není triviální úlohou. Hloubkové mapy si můžeme
        nechat vykreslovat, např. za účelem jejich pozicování, pomocí plných
        trojúhelníkových síti nebo jako drátěné modely. Způsob vykreslování
        hloubkových map můžeme nastavovat procedurou scény DepthmapRenderingMode( Mode : integer ).
        Druhou podstatnou věcí je umístění generovaných 3D objektů do reálného
        prostoru. Po spuštění aplikace nám systém trvale vykresluje scénu v
        iniciální pozici kamery bez ohledu na aktuální pozici headsetu. Po
        přesném usazení objektů lze do normálního vykreslování přejít
        "dvojklikem" pomocí ukazováčku a palce ruky. Díky snímání pozic a gest
        rukou jsou zde možnosti ovládání aplikací oproti virtuální realitě
        bohatší. Máme zde rovněž k dispozici paprsek vycházející z ruky, kdy
        klik levým tlačítkem myši vytvoříme gestem ukazováčku a palce ruky, a
        navíc můžeme 3D virtuální přístroje přímo koncem ukazováčku v prostoru
        ovládat. V tomto prostředí nelze volně létat, k ovládacím prvkům
        musíme vždy přijít tak, abychom na ně rukou dosáhli. Virtuální přístroj gl_scene má také několik
        vlastností, které nám zjednodušují přesné usazení vykreslované scény
        do reálného prostoru. OCL procedurou PositionScene( Tracking : boolean )
        lze zapnout a vypnout mód, kdy je scéna trvale vykreslována z
        počáteční pozice kamery nezávisle na aktuální pozici headsetu. Ve
        zvolené pozici headsetu pak jednoduše tracking vypneme a pozice scény
        se v prostoru zafixuje. Vypnout tracking je možno i gestem dvojkliku
        ruky viditelné kamerami headsetu. K upravení pozice prostoru scény lze
        použít i metodu SetSceneLocation( ScenePositionX, ScenePositionY, ScenePositionZ, SceneRotationX, SceneRotationY, SceneRotationZ : real ).
        Zde jsou rotace pro pohodlnější práci prováděny kolem posunutého
        počátku souřadného systému, nikoliv podle původního. Jako vždy je třeba vážit přínosy a nevýhody Jako první jsou systémem Control Web podporovány technologie
        nativně integrované v operačním systému Windows. I tak zde existuje
        řada potíží, které jsou způsobeny např. uzamykáním přístupu před
        neregistrovaným používáním a vůbec trvalou a nepolevující snahou
        Microsoftu o silové prosazování vlastních technologií a potlačování
        ostatních, byť široce akceptovaných a otevřených standardů. Snaha
        udělat vše jinak, než je všeobecnou normou, občas komplikuje život i
        samotným autorům těchto "zlepšení". V podpoře virtuální a rozšířené
        reality byl opuštěn i opačný "levoruký" souřadný systém zavedený v
        D3D. Souřadný systém je již obvyklý pravotočivý, který se učí na všech
        školách, nicméně i v něm jsou přední povrchy polygonů navinuty opačně,
        tj. levotočivě po směru hodinových ručiček. Tyto problémy se naštěstí
        autorů aplikací netýkají, jsou to jen malé stížnosti vývojářů systému
        Control Web. Ale aby to nevypadalo, že tady popisujeme převážně nedostatky a
        problémy. Pro racionální hodnocení a rozhodování, kde virtuální a
        rozšířenou realitu použijeme a kde bude ziskem a přínosem, je dobré
        všechny tyto informace mít. Je totiž zřejmé, že se jedná o nesmírně
        atraktivní a působivé technologie, které, přes všechny problematické
        momenty, budou v budoucnu používány stále více. A nyní díky podpoře
        těchto technologií v programovém prostředí Control Web si můžete vše s
        vynaložením minimálního úsilí jednoduše vyzkoušet. Zkuste a uvidíte
        sami. 
 Každou scénu v prostředí lze snadno napojit na virtuální
          realituRoman Cagaš |