Differences

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

Link to this comparison view

irva:laboratoarevr:04 [2024/10/14 12:32]
andrei.lapusteanu WIP adding text about building blocks
irva:laboratoarevr:04 [2024/11/12 12:28] (current)
andrei.lapusteanu
Line 5: Line 5:
 ===== Dispozitive ===== ===== Dispozitive =====
  
-În mod curent, în seria Quest, regăsim ​astfel de dispozitive ce oferă suport activ pentru dezvoltarea aplicațiilor VR, anume:+În mod curent, în seria Quest, regăsim ​astfel de dispozitive ce oferă suport activ pentru dezvoltarea aplicațiilor VR, anume:
  
-  * **Meta Quest 2** (pe care le veți folosi și voi) reprezintă încă o alegere bună pentru dezvoltarea (și consumul de content) VR+  * **Meta Quest 2** reprezintă încă o alegere bună pentru dezvoltarea (și consumul de content) VR
   * **Meta Quest 3** vine cu o serie de îmbunătățiri față de **Meta Quest 2** precum o rezoluție mai bună, o nouă generație de chipset (SD XR2 Gen1 vs Gen2) și suport sporit pentru realitate mixtă   * **Meta Quest 3** vine cu o serie de îmbunătățiri față de **Meta Quest 2** precum o rezoluție mai bună, o nouă generație de chipset (SD XR2 Gen1 vs Gen2) și suport sporit pentru realitate mixtă
   * **Meta Quest 3S** este o variantă mai puțin performantă decât Meta Quest 3, având o rezoluție mai mică și alt tip de lentile   * **Meta Quest 3S** este o variantă mai puțin performantă decât Meta Quest 3, având o rezoluție mai mică și alt tip de lentile
Line 44: Line 44:
 ==== Cerințe pentru setup ==== ==== Cerințe pentru setup ====
  
-  * Dispozitiv Meta Quest 2, 3 sau Pro+  * Dispozitiv Meta Quest 2, 3, 3S, sau Pro
   * **Meta Quest App**   * **Meta Quest App**
   * Configurare **Quest Link** wired sau wireless   * Configurare **Quest Link** wired sau wireless
Line 92: Line 92:
 ==== Oculus XR Plugin ==== ==== Oculus XR Plugin ====
  
-Acest plugin ​este backend-ul ​necesare ​pentru a dezvolta și face build-uri folosind Meta XR.+Acest plugin ​include ​backend-ul ​necesar ​pentru a dezvolta și face build-uri folosind Meta XR.
  
   * Din **Package Manager** apăsați pe (+), selecați **Add package from git URL**, introduceți ''​com.unity.xr.oculus''​   * Din **Package Manager** apăsați pe (+), selecați **Add package from git URL**, introduceți ''​com.unity.xr.oculus''​
Line 110: Line 110:
 <note tip> <note tip>
   * Aveți [[https://​developers.meta.com/​horizon/​documentation/​unity/​unity-project-setup/​|aici]] detalii legate de cum trebuie configurat proiectul de Unity   * Aveți [[https://​developers.meta.com/​horizon/​documentation/​unity/​unity-project-setup/​|aici]] detalii legate de cum trebuie configurat proiectul de Unity
-  * Este probabil ca setări ulterioare și alte integrări să ridice probleme în acest tool, așadar reveniți și rezolvați probleme de câte ori este nevoie ​+  * Este probabil ca setări ulterioare și alte integrări să ridice probleme în acest tool, așadar reveniți și rezolvați probleme de ori câte ori este nevoie ​
 </​note>​ </​note>​
  
Line 136: Line 136:
 Sistemul de operare al acestor device-uri se bazează pe **Android**,​ așadar, procesul de build al unei aplicații este similar cu cel prezentat în [[irva:​laboratoarevr:​01|laboratorul de Cardboard XR]]. Sistemul de operare al acestor device-uri se bazează pe **Android**,​ așadar, procesul de build al unei aplicații este similar cu cel prezentat în [[irva:​laboratoarevr:​01|laboratorul de Cardboard XR]].
  
-Puteți realiza build-uri în cel mai simplu mod prin opțiunea de **Build And Run** din meniul de **Build Settings** din Unity Editor. La finalul build-ului, aplicația este instalată pe headset și pornită în mod automat. Aplicația se poate apoi regăsi în următorul submeniu:+Puteți realiza build-uri în cel mai simplu mod folosiți ​opțiunea de **Build And Run** din meniul de **Build Settings** din Unity Editor. La finalul build-ului, aplicația este instalată pe headset și pornită în mod automat. Aplicația se poate apoi regăsi în următorul submeniu:
  
 {{ :​irva:​laboratoare:​mq2_tutorial_5_findbuiltapp.gif?​500 |}} {{ :​irva:​laboratoare:​mq2_tutorial_5_findbuiltapp.gif?​500 |}}
  
 Pentru alte variante de build, în urma creării APK-ului din Unity (așadar **Build** simplu, nu **Build And Run**), se pot folosi **Meta Quest Developer Hub** sau **SideQuest** pentru instalarea acestor aplicații pe headset (proces cunsocut ca și **sideloading**). Pentru alte variante de build, în urma creării APK-ului din Unity (așadar **Build** simplu, nu **Build And Run**), se pot folosi **Meta Quest Developer Hub** sau **SideQuest** pentru instalarea acestor aplicații pe headset (proces cunsocut ca și **sideloading**).
 +  * Task-ul vostru implică să realizați și să testați un build pentru oricare din scenele demo prezentate anterior
  
 <​note>​ Aveți [[https://​developer.oculus.com/​documentation/​unity/​ts-odh-deploy-build/​|aici]] un ghid pentru folosirea MQDH. <​note>​ Aveți [[https://​developer.oculus.com/​documentation/​unity/​ts-odh-deploy-build/​|aici]] un ghid pentru folosirea MQDH.
Line 153: Line 154:
 ===== Setup laborator ===== ===== Setup laborator =====
  
-Veți învăța în continuare cum se pot integrare ​diverse componente ale SDK-ului ​pentru a integra în aplicația voastră headset-ul virtual, controller-ele,​ hand tracking-ul,​ funcționalitatea de passthrough,​ etc.+==== Import schelet laborator ==== 
 + 
 +  * Importați ultima versiune a pachetului ''​IRVA_L4_VR_MetaXR_Skeleton''​ care se găsește în folder-ul **UnityPackages** din folder-ul root al proiectului 
 + 
 +==== Building Blocks ===== 
 + 
 +Veți învăța în continuare cum se pot integra ​diverse componente ale SDK-ului aplicația voastrăheadset-ul virtual, controller-ele,​ hand tracking-ul,​ funcționalitatea de passthrough,​ etc.
  
 SDK-ul a introdus recent o nouă modalitate de setup a acestor elemente printr-un meniu de **Building Blocks**. SDK-ul a introdus recent o nouă modalitate de setup a acestor elemente printr-un meniu de **Building Blocks**.
-  * Acest nou meniu prezintă funcționalități care se pot adăga prin drag-and-drop în oricare scenă+  * Acest nou meniu prezintă funcționalități care se pot adăga prin **drag-and-drop** în oricare scenă ​din Unity
   * Pentru a-l deschide aveți două variante   * Pentru a-l deschide aveți două variante
     * De la iconița Meta din dreapta jos a ferestrei de editor     * De la iconița Meta din dreapta jos a ferestrei de editor
Line 163: Line 170:
 {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_metaxrbuildingblocks.png?​500 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_metaxrbuildingblocks.png?​500 |}}
  
-  * Înainte de introducerea acestor **Building Blocks**, elementele necesare ale unui scene trebuiau incluse manual - în esență acest meniu abstractizează procesul de căutare de prefab-uri, adăugare și parentare corectă a acestora în scenă+  * Înainte de introducerea acestor **Building Blocks**, elementele necesare ale unei scene trebuiau incluse manual - în esențăacest meniu abstractizează procesul de căutare de prefab-uri, adăugare și parentare corectă a acestora în scenă
   * Totuși, rețineți că acest meniu **nu este comprehensiv**,​ întrucât abtractizează includerea elementelor pe care Meta le consideră cele mai utile; unele funcționalități tot vor necesita setup manual   * Totuși, rețineți că acest meniu **nu este comprehensiv**,​ întrucât abtractizează includerea elementelor pe care Meta le consideră cele mai utile; unele funcționalități tot vor necesita setup manual
   * Pentru acest laborator ne este suficient acest meniu    * Pentru acest laborator ne este suficient acest meniu 
 +
 +În continuare vom configura, explica și integra o serie de funcționalități ale SDK-ului folosind acest meniu.
 +
 +<note warning>
 +Vă recomandăm să faceți drag-and-drop pentru **building block-uri** din meniul dedicat către **ierarhia scenei** și nu către **Scene View**, întrucât unele elemente s-ar putea parenta greșit.
 +</​note>​
  
 ==== Camera Rig ==== ==== Camera Rig ====
  
-În continuare vom configura, explica și o serie de funcționalități ale SDK-ului folosing acest meniu: +  ​* Deschideți scena suport a laboratorului. Aceasta momentan nu conține niciun element care permite rularea ​folosind ​Quest Link
-  ​* Deschideți scena suport a laboratorului. Aceasta momentan nu conține niciun element care permite rularea ​folosit ​Quest Link+
   * Includeți în primul rând în scenă prin drag-and-drop building block-ul **Camera Rig**   * Includeți în primul rând în scenă prin drag-and-drop building block-ul **Camera Rig**
-  * În scenă ar trebui să vă apară obiectul **[BuildingBlock] Camera Rig**. Acesta ​conține ​toată logica necesară camerei virtuale și head tracking-ului ​în scenă+  * În scenă ar trebui să vă apară obiectul **[BuildingBlock] Camera Rig**. Acesta ​include în scenă ​toată logica necesară camerei virtuale și head tracking-ului
  
 {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_camerarig.png?​400 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_camerarig.png?​400 |}}
  
-De interest ​(pentru voi pe viitor dacă veți crea aplicații ​folosing ​acest SDK) este script-ul atașat **OVR Maanger**, care conține numeroase setări ce țin de headset, tracking, suport pentru hand, body, eye tracking, etc.+  * De interes ​(pentru voi pe viitor dacă veți crea aplicații ​folosind ​acest SDK) este script-ul atașat **OVR Manager**, care conține numeroase setări ce țin de headset, tracking, suport pentru hand, body, eye tracking, etc.
   * Conectați-vă headset-ul în modul **Link** și dați **Play** din editor - ar trebui să vă puteți roti în scena virtuală, fapt ce indică o funcționare corectă   * Conectați-vă headset-ul în modul **Link** și dați **Play** din editor - ar trebui să vă puteți roti în scena virtuală, fapt ce indică o funcționare corectă
  
Line 187: Line 199:
 {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_controllertracking.png?​400 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_l4_controllertracking.png?​400 |}}
  
-==== Camera Rig ====+  * Conectați-vă headset-ul în modul **Link** și dați **Play** din editor - ar trebui să vă apară controller-ele în mână, să le puteți roti, etc., fapt ce indică o funcționare corectă
  
-==== Tasks ====+==== Hand Tracking ​====
  
-  ​**Realizați pașii necesari setup-ului**:​ Download repo (sau configurare proiect propriu cu SDK-ul necesar + samples), instalare software adițional, pairing prin Quest Link, testare ​scenă ​demo +  * Includeți în scenă ​building block-ul **Hand Tracking** 
-  ​În urma testării cu succes a scenei demo folosind ​**Quest Link**, realizați un **build** pe headset cu aceasta. În mod ideal, testați multiple variante de deployment (**Build And Run**, **sideloading** folosind MQDH sau SideQuest) +  * Acesta va include în scenă ​elementele necesare activării funcționalității de tracking a mâinilor 
-  ​**Creați-vă o scenă ​nouă** (organizați-vă fișierele cum doriți în proiect, vă recomandăm să aveți un folder separat pentru ce lucrați custom) și urmăriți pașii din [[https://​developer.oculus.com/​documentation/​unity/​unity-tutorial-hello-vr/​|acest tutorial]] ​de tip Hello World – săriți peste pașii care sunt deja configurați,​ extrageți informația din etapele relavante din tutorial. În final, testați aplicația atât pe Quest Link cât și într-un build+  * Observați cum a fost modificată ierarhia
  
-=== ✨ Bonus ===+{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_handtracking.png?​400 |}}
  
-  ​Studiați documentația relevantă a celor de la Meta (porniți de la link-ul de la pasul 3) șintegrați în scena de la pasul 3 suport ​pentru ​controller-e; este sufficient dacă acestea apar în mediul virtual ​și sunt tracked ​în mod corect – setări avansate / hand tracking / gathering ​de input facem în următorul laborator+<note important>​ 
 +Acest building block introduce un mod de **vizualizare** al hand tracking-ului precum și modalitatea de comunicare cu backend-ul SDK-ului pentru a capta informațiile șa le randa. Pentru a putea interacționa cu diverse elemente interactibile va trebui să extindem această funcționalitate prin **mâini sintetice**. 
 +</​note>​ 
 + 
 +  * Conectați-vă headset-ul în modul **Link** și dați **Play** din editor - ar trebui să vă apară modele pentru mâini care urmăresc mișcările voastre, fapt ce indică o funcționare corectă 
 + 
 +==== Virtual ​(Synthetic) Hands ==== 
 + 
 +  * Includeți în scenă building block-ul **Virtual Hands** 
 +  * Acesta va include în scenă elementele necesare extinderii funcționalității ​de tracking a mâinilor prin adăugarea unor mâini sintetice 
 +  * Observațcum a fost modificată ierarhia 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_synhands.png?​400 |}} 
 + 
 +  * A fost introdus un nou obiect **[BuildingBlock] Interaction**,​ care va fi părintele obiectelor ce vor defini diversele tipuri de interacțiuni posibile. Script-ul atașat acestuia, ''​OVRCameraRigRef'',​ realizează o referință către **Camera Rig-ul** creat anterior 
 +  * Obiectele **[BuildingBlock] Synthetic Left Hand** ș**[BuildingBlock] Synthetic Right Hand** reprezintă noile mâini virtuale / sintetice, un model pentru acestea se poate observa ​în scenă 
 +  * Obiectele **LeftHand** și **RightHand** implementează script-ul ''​Hand'',​ o clasă de bază ce se ocupă de prelucrearea datelor ​de la headset și transformarea acestei informații în date relevante developer-ului 
 +  * Observați ​pentru ​moment faptul că obiectele **HandInteractorsLeft** și **HandInteractorsRight** nu au nici un copil 
 +  * Conectați-vă headset-ul ​în modul **Link** ​și dați **Play** din editor - ar trebui să vă apară mâinile sintetice 
 + 
 +==== Grab Interaction ==== 
 + 
 +  * Includeți ​în scenă building block-ul **Grab Interaction** 
 +  * Acesta va include în scenă: 
 +    * Un nou obiect **interactibil** (cub). Plasați-l pe masă 
 +    * **Intractorii** necesari pentru a **interacționa** cu acest tip de obiect 
 +  * Observați elementele noi adăugate în ierarhie 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_grabinteraction_2.png?​400 |}} 
 + 
 +=== Interacțiuni,​ interactor, interactibil === 
 + 
 +Vom învăța despre acestea în detaliu ​în următorul laborator, ce este esențial de știut pe moment este: 
 +  * Un **interactibil** (ex. cubul tocmai adăugat) răspunde evenimentelor unui **interactor** (controller,​ mâini) 
 +  * **Interacțiunea** reprezintă comunicarea **interactor <-> interactibil** 
 +  * Există diverse tipuri de interacțiuni:​ grab, distance grab, touch, etc. 
 + 
 +=== Interactorii adăugați === 
 + 
 +  * Observați noii **interactori** adăgați în scenă (4 în total): 
 +    * Câte un **HandGrabInteractor** pentru fiecare mână sintentică și câte un **GrabInteractor** pentru fiecare controller 
 + 
 +=== Interactibilul adăugat (cubul) === 
 + 
 +  * Observați script-urile atașate obiectului **[BuildingBlock] HandGrab**:​ 
 +    * ''​Grabbable''​ reprezintă o clasă de bază ce indică faptul că acest obiect răspunde interacțiunilor de tip **grab** 
 +    * ''​GrabInteractable''​ indică faptul că acesta poate răspune unui **interactor** de tip **grab** al **controller-ului** (anume acei interactori **GrabInteractor** menționați anterior) 
 +    * ''​HandGrabInteractable''​ indică faptul că acesta poate răspune unui **interactor** de tip **grab** al **mâinii** (anume acei interactori **HandGrabInteractor** menționați anterior) 
 + 
 +GIF-ul de mai jos prezintă acese funcționalități. Pentru a face switch între controller-e și hand tracking, pur și simplu lăsați din mână controller-ele,​ întindeți mâinile în fața headset-ului și așteptați câteva secunde. 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_metaxr_l4_1.gif?​400 |}} 
 + 
 +==== Tasks ====
  
 +  - Urmăriți pașii desciși în laborator pentru a face **setup** SDK-ului **Meta XR**: Meta Quest App, Quest Link, Meta XR Unity package
 +  - Importați și testați în modul **Quest Link** scenele sample
 +  - Realizați și testați un **build pe headset** al uneia dintre aceste scene sample
 +  - Implementați în scena suport din laborator **building block-urile** prezentate:
 +    * Camera Rig
 +    * Controller Tracking
 +    * Hand Tracking
 +    * Virtual (Synthetic) Hands
 +    * Grab Interaction
  
irva/laboratoarevr/04.1728898320.txt.gz · Last modified: 2024/10/14 12:32 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