Differences

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

Link to this comparison view

irva:laboratoarevr:04 [2024/10/14 11:49]
andrei.lapusteanu Created page, started rewriting text
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>​
  
-=== Import scene demo ===+==== Import scene demo ====
  
 În continuare vom importa câteva scene demo din SDK-ul de **interacțiuni** pentru a vă prezenta și familiariza cu feature-urile incluse. În continuare vom importa câteva scene demo din SDK-ul de **interacțiuni** pentru a vă prezenta și familiariza cu feature-urile incluse.
Line 121: Line 121:
   * Instalați (cel puțin) **Example Scenes** din tab-ul de sample-uri   * Instalați (cel puțin) **Example Scenes** din tab-ul de sample-uri
  
-=== Play-test scene demo prin Quest Link ===+==== Play-test scene demo prin Quest Link ====
  
   * Intrați în modul **Link** pe headset   * Intrați în modul **Link** pe headset
Line 132: Line 132:
 {{ :​irva:​laboratoare:​mq2_gif_tutorial_3_playlink.gif?​500 |}} {{ :​irva:​laboratoare:​mq2_gif_tutorial_3_playlink.gif?​500 |}}
  
-=== Realizare build-uri ===+==== Realizare build-uri ​====
  
-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 laboratoarele precedente.+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 ​(vezi GIF).+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 construirii ​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>​[[https://​developer.oculus.com/​documentation/​unity/​ts-odh-deploy-build/​|Guide ]] pentru folosirea MQDH.</​note>​+<​note> ​Aveți ​[[https://​developer.oculus.com/​documentation/​unity/​ts-odh-deploy-build/​|aici]] un ghid pentru folosirea MQDH. 
 +</​note>​
  
-==== Tasks ====+=== Erori build Gradle ​=== 
  
-  - **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 +<note important>​ 
-  Î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) +S-ar putea ca setarea ​**Project Settings → Player → Other Settings → Target API Level**, care în mod implicit este pe **Automatic ​(highest installed)**, să nu fie suficientă, așadar recomandăm să testați API Level-uri 31+ (setați-le manual). 
-  - **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+</note>
  
-=== ✨ Bonus ===+===== Setup laborator =====
  
-  ​Studiați documentația relevantă a celor de la Meta (porniți de la link-ul de la pasul 3) și 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+==== 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 ​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ă din Unity 
 +  * Pentru a-l deschide aveți două variante 
 +    * De la iconița ​Meta din dreapta jos a ferestrei de editor 
 +    * Din toolbar, **Meta -> Tools -> Building Blocks** 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_metaxrbuildingblocks.png?​500 |}} 
 + 
 +  * Î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 ș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 
 +  * 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 ==== 
 + 
 +  * Deschideți scena suport a laboratorului. Aceasta momentan nu conține niciun element care permite rularea folosind Quest Link 
 +  * 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 include în scenă toată logica necesară camerei virtuale și head tracking-ului 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_camerarig.png?​400 |}} 
 + 
 +  * De interes (pentru voi pe viitor dacă veți crea aplicații folosind acest SDKeste 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ă 
 + 
 +==== Controller Tracking ==== 
 + 
 +  * Includeți în scenă building block-ul **Controller Tracking** 
 +  * Acesta va include în scenă elementele necesare activării funcționalității ​de tracking a controller-elor 
 +  * Observați cum a fost modificată ierarhia - au fost adăgate obiectele și script-urile necesare în mod automat. În scenă ar trebui să vă apară și câteva modele 3D ce reprezintă controller-ele 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_controllertracking.png?​400 |}} 
 + 
 +  * 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ă 
 + 
 +==== Hand Tracking ==== 
 + 
 +  * Includeți în scenă building block-ul **Hand Tracking** 
 +  * Acesta va include în scenă elementele necesare activării funcționalității de tracking a mâinilor 
 +  * Observați cum a fost modificată ierarhia 
 + 
 +{{ :​irva:​laboratoarevr:​irva_2024_vr_l4_handtracking.png?​400 |}} 
 + 
 +<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 și 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ți 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** și **[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.1728895774.txt.gz · Last modified: 2024/10/14 11:49 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