Differences

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

Link to this comparison view

irva:laboratoare:09 [2024/01/09 11:22]
andrei.lapusteanu
irva:laboratoare:09 [2024/01/09 11:33] (current)
andrei.lapusteanu
Line 37: Line 37:
 {{ :​irva:​laboratoare:​mq2_l9_waiting.jpg?​350 |}} {{ :​irva:​laboratoare:​mq2_l9_waiting.jpg?​350 |}}
  
-Este important de știut că elementele interactibile se pot regăsi intr-una din 4 stări posibile:+Este important de știut că elementele ​**interactibile** se pot regăsi intr-una din 4 stări posibile:
   * **Disabled** (inactiv)   * **Disabled** (inactiv)
   * **Normal**   * **Normal**
Line 43: Line 43:
   * **Select** (intracțiune)   * **Select** (intracțiune)
  
-În următorul GIF puteți observa interactibilul în stările **Normal**, **Hover** și **Select**.+În următorul GIF puteți observa ​**interactibilul** în stările **Normal**, **Hover** și **Select**.
  
 {{ :​irva:​laboratoare:​l9_mq2_states.gif?​300 |}} {{ :​irva:​laboratoare:​l9_mq2_states.gif?​300 |}}
  
-Pentru realizarea acestor **interacțiuni** este necesară configurarea ambelor părți. De exemplu, pentru o **interacțiune** de tip **Poke** folosing hand tracking-ul,​ obiectele de tip mână din ierarhie for avea atașate obiecte de tip **HandPokeInteractor**,​ iar elementele **interactibile** vor avea atașate o componentă de tip **HandPokeInteractible**.+Pentru realizarea acestor **interacțiuni** este necesară configurarea ambelor părți. De exemplu, pentru o **interacțiune** de tip **Poke** folosing hand tracking-ul,​ obiectele de tip mână din ierarhie for avea atașate obiecte de tip **HandPokeInteractor**,​ iar elementele **interactibile** vor avea atașate o componentă de tip **PokeInteractible** (care poate răspunde atât la poke-uri de la controller cât și de la mâini).
  
 ==== Sumar interacțiuni ==== ==== Sumar interacțiuni ====
  
-Un flow simplificat al Interaction SDK-ului poate fi următorul:​ +Un flow simplificat al **Interaction SDK**-ului poate fi următorul:​ 
-  * Se preia input-ului iar în urma procesării și filtrarii ​se randează controller-ele/​mâinile+  * Se preia input-ului iar în urma procesării și filtrării ​se randează controller-ele/​mâinile
   * Controller-ele/​mâinile sunt **interactori** care așteaptă/​ascultă **interacțiunea** cu elemente **interactibile**   * Controller-ele/​mâinile sunt **interactori** care așteaptă/​ascultă **interacțiunea** cu elemente **interactibile**
   * Dacă **interactorul** este în proximitatea unui **interactibil**,​ iar cele 2 elemente implementează o **interacțiune** comună (poke, grab), are loc evenimentul de **hover**   * Dacă **interactorul** este în proximitatea unui **interactibil**,​ iar cele 2 elemente implementează o **interacțiune** comună (poke, grab), are loc evenimentul de **hover**
   * **Interacțiunea** efectivă are loc atunci când **interactibilul** este selectat de către **interactor**   * **Interacțiunea** efectivă are loc atunci când **interactibilul** este selectat de către **interactor**
 +
 +==== Basic setup | Headset, controllers,​ hands ====
 +
 +Vom realiza în continuare cnfigurarea de bază prin care putem plasa în scenă un headset, precum și controller-e și mâini virtuale. Puteți urmări în detaliu pașii la [[https://​developer.oculus.com/​documentation/​unity/​unity-isdk-getting-started/​|acest link]], vom prezenta succint pașii și în continuare.
 +
 +  * Deschideți scena **Assets -> L9_MetaQuest -> Scenes -> L9_MQ2_BasicSetup**
 +  * Adăugați în scenă pregab-ul **OVRCameraRig**. Acesta este prefab-ul de bază ce permite tracking-ul atât al headset-ului cât și al interactorilor
 +  * Studiați setările din inspector. Asigurați-vă că tipul de input (**Hand Tracking Support**) este **Controllers and Hands**, iar **Hand Tracking Version** este **V2**
 +  * Atașați prefab-ul **OVRInteraction** ca și copil la **OVRCameraRig**. Acest prefab este cel de bază pentru controller-e sau mâini
 +  * **Setup controlller-e**:​ Adăgați prefab-ul **OVRControllers** ca și copil la **OVRInteraction**. Acesta se ocupă de inteacțiunile posibile precum și partea vizuală a controller-elor
 +  * **Realizați un build sau testați in-editor folosing Quest Link**. Ar trebui să apară controller-ele în scenă (și să fie tracked)
 +  * Setup hand tracking: Urmați pașii descriși [[https://​developer.oculus.com/​documentation/​unity/​unity-isdk-getting-started/​|aici]] în secțiunea **Set Up Hands**
 +    * ⚠️ **Atenție**,​ mâinile vor avea atașate niște physics capsules necesare interacțiunilor,​ dar implementarea din documentație este (încă) broken, așadar **nu faceți pasul 6**
 +    * Realizați, de asemenea, pașii descriși în subsecțiunea **Add OVRHands Prefab** – atașați prefab-ul **OVRHands** ca și copil la **OVRInteraction**
 +    * Pentru a repara problema cu physics capsules, navigați întâi în ierarhie la **OVRCameraRig -> OVRInteraction -> OVRInteraction**. Atât pe **LeftHand** cât și pe **RightHand** atașați script-ul **HandPhysicsCapsule** și asignați în inspector field-urile necesare (primele 3)
 +    * **Realizați un build sau testați in-editor folosing Quest Link**. Ar trebui să funcționeze atât controller-ele cât și hand tracking-ul și să puteți face switch între cele 2 la run-time
 +
 +{{ :​irva:​laboratoare:​mq2_l9_handsetup.png?​300 |}}
 +
 +==== Task-uri ====
 +
 +  - Implementați setup-ul descris în capitorul “**Basic setup | Headset, controllers,​ hands**”, pentru a implementa tracking-ul headset-ului,​ precum și suport pentru controller-e și hand tracking
 +  - Implementați o interacțiune de tip **Grab**. Întrucât pașii descriși în documentație sunt suficient de detaliați, urmăriți modelul prezentat la [[https://​developer.oculus.com/​documentation/​unity/​unity-isdk-create-hand-grab-interactions/​|acest link]]. Puteți lucra în scena curentă
 +  - **Bonus**: Fiți creativi și implementați un alt tip de interacțiune (altceva decât grab) – plecați tot de la exemplele din documentație. De exemplu, un buton care aprinde/​stinge o lumina, sau realizați un obiect pe care îl puteți arunca – sau orice alt exemplu relevant care vă ajută să înțelegi mai bine modul de funcționare interactor <-> interacțiune
 +
  
  
irva/laboratoare/09.1704792128.txt.gz · Last modified: 2024/01/09 11:22 by andrei.lapusteanu
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