Leap Motion
| Portál: | Virtuálna Univerzita Mateja Bela |
| Kurz: | Tvorba hier a používateľského zážitku |
| Kniha: | Leap Motion |
| Vytlačil(a): | Hosťovský používateľ |
| Dátum: | piatok, 5 júna 2026, 00:38 |
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.- 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.
- 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.
- 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.
- 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:
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, Rotation a Scale.

V 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).

V Hierarchy presunieme všetky vytvorené InteractionCapsule do Cones

V 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 Cones v Hierarchy

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

V 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

V 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