This shows you the differences between two versions of the page.
irva:laboratoare:05 [2023/10/23 01:51] maria_anca.balutoiu [Detalii proiect laborator] |
irva:laboratoare:05 [2023/11/14 15:05] (current) maria_anca.balutoiu [Task-uri] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 05. ManoMotion. Hand tracking & gesture detection în AR ===== | + | ===== Laboratorul 05. ManoMotion ===== |
ManoMotion este un SDK ce permite dezvoltarea de aplicații în AR, unde **modalitatea de input este determinată de hand tracking**. | ManoMotion este un SDK ce permite dezvoltarea de aplicații în AR, unde **modalitatea de input este determinată de hand tracking**. | ||
Line 8: | Line 8: | ||
<note tip>Versiunea de SDK implementată în framework-ul de laborator utilizează ARFoundation. Ne vom folosi de algoritmii de plane detection oferiți de către ARFoundation – similar implementărilor din laboratoarele precedente.</note> | <note tip>Versiunea de SDK implementată în framework-ul de laborator utilizează ARFoundation. Ne vom folosi de algoritmii de plane detection oferiți de către ARFoundation – similar implementărilor din laboratoarele precedente.</note> | ||
- | ==== Working Demo ==== | ||
- | |||
- | Un preview asupra aplicației la care veți lucra în acest laborator îl puteți viziona în următorul videoclip. | ||
- | |||
- | <html> | ||
- | <p style="text-align:center;margin:auto;"> | ||
- | <iframe width="560" height="315" src="https://www.youtube.com/embed/35mzT9UAPd0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
- | </p> | ||
- | </html> | ||
==== Setup ManoMotion în Unity ==== | ==== Setup ManoMotion în Unity ==== | ||
Line 150: | Line 141: | ||
* **[TODO] FruitSpawner** – Coordonează procesul de spawning al fructelor | * **[TODO] FruitSpawner** – Coordonează procesul de spawning al fructelor | ||
* **[TODO] HandGestureController** – Detectează o serie de gesturi diferite și modifică logica jocului pe baza acestora | * **[TODO] HandGestureController** – Detectează o serie de gesturi diferite și modifică logica jocului pe baza acestora | ||
+ | |||
+ | ==== Demo Laborator ==== | ||
+ | <html> | ||
+ | <p style="text-align:center;margin:auto;"> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/35mzT9UAPd0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
+ | </p> | ||
+ | </html> | ||
+ | |||
==== Task-uri ==== | ==== Task-uri ==== | ||
- | **1.** Înainte de a lucra la joculețul propus, vă recomandăm mai întâi să testați scena demo oferită de către cei de la ManoMotion. Aceasta se găsește în **Assets > ManoMotion ARFoundation > Scenes > ManoMotion SDK CE ARFoundation Features** | + | Înainte de a lucra la joculețul propus, vă recomandăm mai întâi să testați scena demo oferită de către cei de la ManoMotion. Aceasta se găsește în **Assets -> ManoMotion ARFoundation -> Scenes -> ManoMotionSDKProFeatures**. |
<note important>Nu uitați să adăugați scena și s-o setați activă în Build Settings!</note> | <note important>Nu uitați să adăugați scena și s-o setați activă în Build Settings!</note> | ||
Line 163: | Line 162: | ||
{{ :irva:laboratoare:mano-demoscene.gif?500 |}} | {{ :irva:laboratoare:mano-demoscene.gif?500 |}} | ||
- | **2.** În cazul în care nu au fost probleme, faceți switch la scena de laborator (**L6_Scene**) și realizați un build. Citiți cu atenție etapele de inițializare – pasul acesta este încheiat dacă instațiați scena de joc iar fructele încep să se spawneze. | ||
- | **3.** Pentru a tăia fructele, vă este oferit un obiect care ar trebui să urmărească poziția mâinii (mai exact, acest obiect de tip cursor este numit “**Spikeball_Cursor**” și se găsește în prefab-ul “**GameScene**” din **Assets > Prefabs > L6_ManoMotion**). Implementarea va trebui realizată în script-ul **CursorPositionController**. Rezultat corect: Obiectul cursor urmărește poziția mâinii și poate tăia fructele instanțiate în scenă. Urmăriți todo-urile din script. | ||
- | **4.** Va trebui să implementați diverse gesturi pentru a altera logica jocului. De exemplu, în frame-urile în care este detectat podul palmei, opriți spawning de fructe. Pentru detalii, urmăriți todo-urile din script-ul **HandGestureController** | + | <note tip>Vom folosi scena **Fruit Ninja** din scheletul de laborator. Acesta poate fi descărcat de [[https://github.com/Maria-Anca-Balutoiu/IRVA_AR|aici]].</note> |
- | **5.** Pentru fiecare frame în care se detectează gestul de tip continuu **CLOSED_HAND_GESTURE**, creșteți spawn rate-ul de 20 de ori. Pentru detalii, urmăriți todo-urile din script-ul **HandGestureController** | ||
- | **6.** Când este detectat gestul de trigger de tip **PICK**, realizați o implementare prin care să “tăiați” (distrugeți) toate fructele instanțiate în acel moment în scena. Nu folosiți direct Destroy() pe ele, există o funcție deja implementată în controller-ul de fructe (use that!). Pentru detalii, urmăriți todo-urile din script-ul **HandGestureController** | + | - În cazul în care nu au fost probleme, faceți switch la scena de laborator (**Fruit Ninja**) și realizați un build. Citiți cu atenție etapele de inițializare – pasul acesta este încheiat dacă instațiați scena de joc, iar fructele încep să se spawneze. |
+ | - Pentru a tăia fructele, vă este oferit un obiect care ar trebui să urmărească poziția mâinii (mai exact, acest obiect de tip cursor este numit **Spikeball_Cursor** și se găsește în prefab-ul **GameScene** din **Assets -> Prefabs -> ManoMotion**). Implementarea va trebui realizată în scriptul **CursorPositionController**. Rezultat corect: Obiectul cursor urmărește poziția mâinii și poate tăia fructele instanțiate în scenă. | ||
+ | - Implementați diverse gesturi pentru a altera logica jocului. De exemplu, în frame-urile în care este detectat podul palmei, opriți generarea de fructe. Hint! Folosiți-vă de scriptul **HandGestureController**. | ||
+ | - Pentru fiecare frame în care se detectează gestul de tip continuu **CLOSED_HAND_GESTURE**, creșteți spawn rate-ul de 20 de ori. Folosiți-vă de scriptul **HandGestureController**. | ||
+ | - Când este detectat gestul trigger de tip **PICK**, realizați tăierea (distrugerea) tuturor fructelor instanțiate în acel moment în scenă. Nu folosiți direct funcția Destroy(). Pentru un efect mai spectaculos, folosiți funcția deja implementată în controllerul de fructe. Folosiți-vă de scriptul **HandGestureController**. | ||
+ | - **Bonus.** Adăugați un scor pe ecran. De fiecare dată când tăiați un fruct, scorul va crește cu 1. | ||