Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 fructePentru 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ă “iați” ​(distrugețitoate fructele ​instanțiate în acel moment în scena. Nu folosiți direct Destroy() ​pe eleexistă 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 buildCitiț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 (distrugereatuturor fructelor ​instanțiate în acel moment în scenă. Nu folosiți direct ​funcția ​Destroy(). Pentru un efect mai spectaculosfolosiț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.
  
  
irva/laboratoare/05.1698015079.txt.gz · Last modified: 2023/10/23 01:51 by maria_anca.balutoiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0