Leap Motion

Site: Virtuálna Univerzita Mateja Bela
Course: Tvorba hier a používateľského zážitku
Book: Leap Motion
Printed by: Hosťovský používateľ
Date: Friday, 5 June 2026, 12:22 PM

1. Leap Motion

Čo je to?

Leap Motion je technologické zariadenie, ktoré zmenilo spôsob, akým môžeme interagovať s digitálnym svetom. Tento kompaktný "motion controller" umožňuje ovládať počítačové aplikácie, virtuálnu realitu a ďalšie technológie pomocou gest a pohybov rúk. Senzor Leap Motion dokáže sledovať pohyby rúk a prstov s veľkou presnosťou, prevádzajúc gestá do digitálneho priestoru. To umožňuje rôznorodé spôsoby interakcie, ktoré sú prirodzené a intuitívne.


Na čo sa používa?

Leap Motion našiel svoje uplatnenie vo viacerých oblastiach, ako napríklad:

  • Vývoj softvéru a aplikácií: Pre vývojárov je Leap Motion inšpiratívnym nástrojom. Umožňuje im vytvárať nové aplikácie a rozhrania, ktoré reagujú na gestá a pohyby rúk. Týmto spôsobom môžu tvorcovia vytvárať unikátne a inovatívne zážitky pre užívateľov.

  • Virtuálna realita a rozšírená realita: Leap Motion je vynikajúcim doplnkom pre headsety pre virtuálnu realitu (VR) a rozšírenú realitu (AR). Pomocou gest a pohybov rúk umožňuje užívateľom interagovať s virtuálnymi objektmi a prostredím bez potreby fyzických ovládacích prvkov.

  • Digitálne umenie a tvorba obsahu: Pre umelcov a kreatívcov ponúka Leap Motion nový spôsob tvorby digitálneho umenia. Možnosť písania, kreslenia a modelovania vo virtuálnom priestore otvára nové kreatívne možnosti.

  • Vzdelávanie a tréning: Vzdelávacie a tréningové aplikácie môžu využívať Leap Motion na interaktívne a praktické učebné zážitky. Napríklad je možné simulovať vedecké experimenty, architektonické modely alebo históriu.

  • Zdravotná starostlivosť a rehabilitácia: V medicínskej oblasti môže Leap Motion slúžiť na rehabilitačné cvičenia a monitorovanie pohybov pacientov. Jeho precízna detekcia pohybov môže pomáhať pri obnovení motorických schopností.


1.1. História

História sledovania pohybu rúk sa začala rozvíjať spolu s technologickým pokrokom a potrebami interakcie medzi človekom a strojom. Tento vývoj sa stal kľúčovým pre vytvorenie zariadení ako Leap Motion.

  1. Prvopočiatky a senzory: Prvé pokusy sledovať pohyb rúk sa objavili v 20. storočí s vývojom mechanických a optických senzorov. Tieto senzory však boli obmedzené technologickými možnosťami a nedokázali spracovať pohyb s dostatočnou presnosťou.
  2. Inframerané kamery: S nástupom digitálnej technológie sa začali používať inframerané kamery, ktoré dokázali zachytiť pohyby rúk na základe teplotných zmien. Tieto kamery umožnili zlepšiť presnosť a spoľahlivosť sledovania pohybu.
  3. 3D senzory a kamery: V 21. storočí sa začali vyvíjať pokročilé 3D senzory a kamery, ktoré mohli sledovať pohyb rúk v trojrozmernom priestore. Tieto technológie umožnili oveľa presnejšiu a komplexnejšiu detekciu gest a pohybov.
  4. Leap Motion: V roku 2010 sa predstavilo zariadenie Leap Motion, ktoré prinieslo revolučný prístup k sledovaniu pohybu rúk. S jeho kompaktným senzorom a výkonným softvérom sa stal prelomovým nástrojom v oblasti interakcie a technológie

1.2. Ako funguje

Fungovanie Leap Motion je založené na pokročilých senzoroch a softvéri, ktoré dokážu presne sledovať pohyby rúk a prstov v trojrozmernom priestore. Táto technológia umožňuje prevádzať fyzické gestá a pohyby do digitálneho sveta bez potreby fyzických ovládacích prvkov.


Patria sem:

  • Optické a inframerané kamery: Na základe princípu sledovania viditeľného svetla a infračerveného žiarenia, Leap Motion obsahuje viacero malých kamier umiestnených na jeho povrchu. Tieto kamery sú schopné zaznamenávať pohyby rúk a prstov pomocou detekcie zmien vo svetelných vzoroch.

  • Infračervené diódy: Zariadenie je vybavené infračervenými diódami, ktoré vytvárajú infračervené svetelné lúče. Keď sa vaše ruky a prsty pohybujú cez tento svetelný vzor, kamery zaznamenávajú tieto zmeny a vytvárajú 3D mapu vašich pohybov.

  • Senzory pohybu: Softvér Leap Motion následne spracováva tieto zaznamenané pohyby a transformuje ich na digitálny priestor. Senzory pohybu sa využívajú na vytváranie trojrozmerných modelov rúk a prstov, čím sa vytvára presný obraz vašich pohybov.

  • Rozpoznávanie gest a interakcií: Na základe zachytených dát a modelov pohybov je softvér schopný rozpoznať rôzne gestá a interakcie. Môže rozpoznať otváranie a zatváranie dlane, pohyby prstami, zdvíhanie a spúšťanie objektov a ďalšie akcie.

  • Integrácia s aplikáciami: Zaznamenané pohyby sú potom prevedené do digitálneho priestoru a môžu byť použité na ovládanie rôznych aplikácií, virtuálnych svetov alebo herných prostredí. Leap Motion poskytuje vývojárom API, ktoré im umožňuje vytvárať aplikácie a rozhrania, ktoré využívajú jeho schopnosti sledovania pohybu.

1.3. Najbežnejšie metriky

Pri hodnotení a analýze pohybov a gest sledovaných pomocou Leap Motion sa využívajú rôzne metriky a parametre. Tieto metriky pomáhajú posúdiť presnosť, účinnosť a kvalitu sledovania pohybov, čo je dôležité pre vývoj aplikácií, virtuálnej reality a ďalších technológií. 

Tu sú niektoré z najbežnejších metrík používaných pri hodnotení Leap Motion:

  • Presnosť pohybu: Táto metrika sa zameriava na to, ako presne Leap Motion zachytáva pohyby rúk a prstov v porovnaní s ich skutočným pohybom. Presnosť sa môže meriať v milimetroch alebo iných jednotkách a posudzuje sa, do akej miery je digitálny záznam zhodný s reálnym pohybom.

  • Lag a odozva: Lag alebo oneskorenie medzi skutočným pohybom a jeho zobrazením v digitálnom priestore je dôležitým faktorom. Menšie oneskorenie zabezpečuje plynulý a prirodzený pocit interakcie. Odozva sa meria v milisekundách.

  • Rýchlosť sledovania: Táto metrika hodnotí, akú rýchlosť pohybu dokáže Leap Motion sledovať a interpretovať. Je dôležitá pre rýchle interakcie, napríklad v hrách.

  • Rozpoznávanie gest: Metrika zameraná na to, do akej miery dokáže Leap Motion spoľahlivo rozpoznávať rôzne gestá a pohyby. Skúma sa presnosť identifikácie konkrétnych akcií na základe pohybu rúk.

  • Robustnosť voči rušeniu: Leap Motion by mal byť schopný zachytiť pohyby aj v rôznych podmienkach prostredia, ako je osvetlenie alebo rušenie. Metrika sa zaoberá schopnosťou zariadenia fungovať spoľahlivo aj za týchto podmienok.

  • Rozsah detekcie: Táto metrika sa týka toho, aký veľký priestor je schopný Leap Motion pokrývať a detekovať pohyby. Rozsah môže zohrávať úlohu pri interakcii vo virtuálnych svetoch.

2. Leap Motion - softvér na vývoj

Súpravy vývojárskych nástrojov (SDK) uľahčujú integráciu do aplikácií a hier. Spoločnosť Leap Motion poskytuje podporu a dokumentáciu pre Unity a Unreal Engine, takže vývojári môžu využívať výhody Leap Motion meraní bez ohľadu na zvolenú platformu, sú ale medzi nimi určité rozdiely.

Unity vs Unreal: Which Game Engine Is Best For You | Xsolla


Unity:

SDK pre Unity je ideálny pre projekty, ktoré si vyžadujú rýchlu iteráciu a vytváranie prototypov. Unity je obzvlášť dobrý pri vývoji 2D a mobilných hier. Ak je teda vaša aplikácia zameraná na tieto oblasti, SDK pre Unity môže byť najlepšou voľbou. Unity je napísané v jazyku C#. Tento jazyk sa vo všeobecnosti považuje za jednoduchší a prístupnejší jazyk, čo je výhodné pre tých, ktorí sa práve učia programovať.


Unreal Engine:

Unreal Engine je známy svojou schopnosťou vytvárať vysokokvalitné 3D prostredia a má skvelé nástroje na vizualizáciu údajov. V tomto Engine sa používa jazyku C++, ktorý sa všeobecne považuje za sofistikovanejší jazyk. Ponúka však výhody v oblasti výkonu a ovládania, ktoré sú dôležité pre najnáročnejšie aplikácie.

2.1. Unity - import Emotiv SDK

Príprava Unity

Po nainštalovaní Unity si v Unity Hub vytvoríme nový projekt


V zozname šablón zvolíme 3D, projekt si pomenujeme a vytvoríme




Po vytvorení projektu stiahneme Leap Motion plugin cez Edit -> Project Settings -> Package Manager kde vložíme:

o    Name: Ultraleap

o    URL: https://package.openupm.com/

o    Scope(s): com.ultraleap



Prejdeme do ďalšieho Package Manager cez Window -> Package Manager kde v hornej časti prepneme Packages: na My Registries



Zvolíme Ultraleap Tracking a dáme inštalovať. Po nainštalovaní importujeme Examples.



2.2. Bowling

Vyhľadáme service desktop (slúži na prepojenie Leap Motion a Unity assets) v All (kvôli prehľadnosti súborov si môžeme cez pravý dolný scrollbar zmeniť veľkosť zobrazenia) a presunieme ho do Hierarchy.




Taktiež pridáme CapsuleHands (samotné ruky, ktoré budeme môcť ovládať) a Interaction Manager (slúži na interakciu objektov – možnosť s nimi pohybovať)



Skontrolujeme u Service Provider, CapsuleHands, Interaction Manager či majú default nastavené hodnoty pre Position, RotationScale.



Main Camera nastavíme Transform hodnoty podľa obrázku nižšie


Keď si v hornej časti prepneme Game a nastavíme scale na 1x, mali by sme vidieť ruky.



Pridanie platformy – v Hierarchy cez pravé tlačidlo pridáme 3D Object -> Plane



Pridanie objektu – v súboroch vyhľadáme objekt InteractionSphere, ktorý následne presunieme priamo do scény tak, aby bol v malej vzdialenosti od rúk.



Pridanie kužeľov – v Hierarchy vytvoríme empty objekt (Create Empty), ktorý pomenujeme napríklad Cones



Následne si vyhľadáme objekt InteractionCapsule a postupne budeme pridávať tento objekt priamo do scény (tak ako vidieť na obrázku).



Hierarchy presunieme všetky vytvorené InteractionCapsule do Cones


Assets vytvoríme C# Script, pomenujeme ho Bowling a otvoríme.


Na začiatku si pridáme knižnicu TMPro

using TMPro;

Do class Bowling pridáme:

private int score = 0;
private int counter = 0;
public TMP_Text ScoreText;

// List, do ktoreho sa bude vkladat position kuzelov
private List<Vector3> objects = new List<Vector3>();

// Premenna, do ktorej bude position bowlingovej gule
private Vector3 ballVector = new Vector3();

Do funkcie Start vložíme:

// zapise position bowlingovej gule
ballVector = GameObject.Find("InteractionSphere").transform.position;

// vyhlada vsetky kuzele a ulozi do Listu ich position
for(int i = 0; i < gameObject.transform.childCount; i++) {
    objects.Add(gameObject.transform.GetChild(i).position);
}

ScoreText.text = "Skóre: 0\nPokusov: 0";
score = 0;

Do funkcie Update vložíme:

// stlacenie medzernika
if (Input.GetKeyDown("space"))
{
    counter++;

    for(int i = 0; i < gameObject.transform.childCount; i++)
    {   
        // kontrola rotacie kuzelov (ci spadli alebo nie) 
        if (gameObject.transform.GetChild(i).rotation.x > 0.40 ||
            gameObject.transform.GetChild(i).rotation.x < -0.40 ||
            gameObject.transform.GetChild(i).rotation.z > 0.40 ||
            gameObject.transform.GetChild(i).rotation.z < -0.40
        ) {
            score++;
        }

        // vylistuje vsetky kuzele a nastaví im prvotnú position
        // nastavi aj default velocity a rotation
        gameObject.transform.GetChild(i).position = objects[i];
        gameObject.transform.GetChild(i).GetComponent<Rigidbody>().velocity = Vector3.zero;
        gameObject.transform.GetChild(i).GetComponent<Rigidbody>().angularVelocity  = Vector3.zero;
        gameObject.transform.GetChild(i).rotation = Quaternion.Euler(0, 0, 0);
    }

    // nastavi text na obrazovke
    ScoreText.text = "Skóre: " + score + "\nPokusov: " + counter;

    // vyhlada bowlingovu gulu nastaví jej prvotnú position
    // nastavi aj default velocity a rotation
    GameObject.Find("InteractionSphere").transform.position = ballVector;
    GameObject.Find("InteractionSphere").transform.GetComponent<Rigidbody>().velocity = Vector3.zero;
    GameObject.Find("InteractionSphere").transform.GetComponent<Rigidbody>().angularVelocity  = Vector3.zero;
    GameObject.Find("InteractionSphere").transform.rotation = Quaternion.Euler(0, 0, 0);
}

Celý kód:



Script uložíme a presunieme do ConesHierarchy



Pridanie textu – v Hierarchy vytvoríme Text cez UI -> Text - TextMeshPro



Hierarchy klikneme na Text (TMP) a nastavíme:

  • Súradnice X, Z: 0
  • Y: 70
  • Width: 300
  • Text Input: Skóre: 0\nPokusov: 0
  • Vertex Color napríklad: 2BC13B (hexadecimal)
  • Alignment: Flush



Hierarchy klikneme na Cones a do Score Text (pod scriptom) vložíme z Hierarchy Text (TMP).



Typy:

  • Reštart sa vyvolá medzerníkom
  • Najlepšie je „bowlingovú“ guľu odrážať päsťou

 

Hru už len otestujeme