This shows you the differences between two versions of the page.
irva:laboratoarevr:04 [2024/10/14 13:55] andrei.lapusteanu Lab text mostly done - tasks WIP |
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 |}} | ||
Line 154: | 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 164: | 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 | ||
- | ==== Camera Rig ==== | + | În continuare vom configura, explica și integra o serie de funcționalități ale SDK-ului folosind acest meniu. |
- | + | ||
- | În continuare vom configura, explica și o serie de funcționalități ale SDK-ului folosing acest meniu | + | |
<note warning> | <note warning> | ||
Line 176: | Line 180: | ||
</note> | </note> | ||
- | * Deschideți scena suport a laboratorului. Aceasta momentan nu conține niciun element care permite rularea folosit Quest Link | + | ==== 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** | * 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 217: | Line 223: | ||
{{ :irva:laboratoarevr:irva_2024_vr_l4_synhands.png?400 |}} | {{ :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 | + | * 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 **[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 | * 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 | ||
Line 231: | Line 237: | ||
* Observați elementele noi adăugate în ierarhie | * Observați elementele noi adăugate în ierarhie | ||
- | {{ :irva:laboratoarevr:irva_2024_vr_l4_grabinteraction.png?400 |}} | + | {{ :irva:laboratoarevr:irva_2024_vr_l4_grabinteraction_2.png?400 |}} |
=== Interacțiuni, interactor, interactibil === | === Interacțiuni, interactor, interactibil === | ||
Line 248: | Line 254: | ||
* Observați script-urile atașate obiectului **[BuildingBlock] HandGrab**: | * Observați script-urile atașate obiectului **[BuildingBlock] HandGrab**: | ||
- | * ''Grabbable'' reprezintă o clasă de bază de indică faptul că acest obiect răspunde interacțiunilor de tip **grab** | + | * ''Grabbable'' reprezintă o clasă de bază ce indică faptul că acest obiect răspunde interacțiunilor de tip **grab** |
- | * ''GrabInteractable'' indică faptul că aceșta poate răspune unui **interactor** de tip **grab** al **controller-ului** (anume acei interactori **GrabInteractor** menționați anterior) | + | * ''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ă aceșta poate răspune unui **interactor** de tip **grab** al **mâinii** (anume acei interactori **HandGrabInteractor** 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) |
- | În GIF-ul următor se 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, îintindeți mâinile în fața headset-ului și așteptați câteva secunde. | + | 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 |}} | {{ :irva:laboratoarevr:irva_2024_vr_metaxr_l4_1.gif?400 |}} | ||
Line 258: | Line 264: | ||
==== Tasks ==== | ==== Tasks ==== | ||
- | - **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 | + | - 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 |
- | - Î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) | + | - Importați și testați în modul **Quest Link** scenele sample |
- | - **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 | + | - 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: | |
- | === ✨ Bonus === | + | * Camera Rig |
- | + | * Controller Tracking | |
- | * 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 | + | * Hand Tracking |
+ | * Virtual (Synthetic) Hands | ||
+ | * Grab Interaction | ||