This shows you the differences between two versions of the page.
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 3 astfel de dispozitive ce oferă suport activ pentru dezvoltarea aplicațiilor VR, anume: | + | În mod curent, în seria Quest, regăsim 4 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) ș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 | + | <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 | ||