This shows you the differences between two versions of the page.
irva:laboratoare:08 [2023/12/06 15:21] andrei.lapusteanu |
irva:laboratoare:08 [2024/01/08 23:11] (current) andrei.lapusteanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 08. Oculus Quest 2 ===== | + | ===== Laboratorul 08. Meta Quest | Overview & Setup ===== |
- | **HTC Vive** este unul dintre cele mai populare sisteme de realitate virtuală. Este considerat un standard al realității virtuale. Acesta asigură tracking cât mai exact atât al HMD-ului (head mounted display) și al controllerelor, cât și al multiplelor accesorii care pot fi adăugate în plus, precum trackere. | + | |
- | + | ||
- | ===== Hardware ===== | + | |
- | Pentru a fi funcțional, HTC Vive presupune o serie de componente de bază: | + | |
- | * HMD | + | |
- | * 2 x controller | + | |
- | * 2 x base station (stații care emit raze infraroșu pentru a detecta casca VR și controllerele aferente) | + | |
- | + | ||
- | {{ :irva:laboratoare:htcvive.png?700 |}} | + | |
- | În plus, sistemului îi pot fi adăugate o serie de accesorii, în funcție de aplicație: | + | |
- | * Trackers | + | |
- | * Tracker facial | + | |
- | * Tracker pentru încheietură | + | |
- | * Adaptor wireless | + | |
- | + | ||
- | {{ :irva:laboratoare:htcviveaccessories.png?700 |}} | + | |
- | ===== Software ===== | + | |
- | ==== SteamVR ==== | + | |
- | Pentru a putea dezvolta aplicații pentru HTC Vive, folosind Unity, putem folosi **SteamVR**. [[https://store.steampowered.com/app/250820/SteamVR/|SteamVR]] este o aplicație propietară Steam, care este folosită atât de utilizatorii obișnuiți care doresc să se joace jocuri VR, cât și de dezvoltatori în dezvoltarea acestor jocuri. SteamVR oferă suport pentru multiple HMD-uri, precum Valve Index, HTC Vive, Oculus Rift sau Windows Mixed Reality. | + | |
- | + | ||
- | Pentru a putea folosi SteamVR, este necesar să avem un cont pe [[https://store.steampowered.com/|Steam]] și să aveam Steam instalat pe calculator. Pe urmă, putem instala SteamVR. | + | |
- | + | ||
- | {{ :irva:laboratoare:steamvrdetection.png?300 |}} | + | |
- | ==== Setup Unity ==== | + | |
- | Odată instalat SteamVR, putem să ne jucăm orice joc VR. Cu toate astea, ca să putem crea propriile aplicații, este nevoie și de un plugin pentru Unity. Din **Unity Asset Store** trebuie să importăm [[https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647|SteamVR Plugin]]. | + | |
- | Odată instalat pluginul, acceptăm setările default pentru SteamVR. Pe urmă, setăm proiectul pentru un proiect VR, nu AR: **Edit -> Project Settings -> XR Plug-in Management -> PC -> OpenVR Loader**. | + | ====⚠️ Update-uri / Fixes ⚠️==== |
+ | [[https://github.com/Andrei-Lapusteanu/IRVA_VR/tree/master|Repo-ul]] a fost updatat pentru a rezolva probleme ce țineau de testarea Quest Link-ului în editor și (unele) erori de Gradle. | ||
- | {{ :irva:laboratoare:openvr.png?600 |}} | + | === Erori build Gradle === |
- | Ultimul pas în configurarea proiectului este să generăm acțiunile specifice pentru input-ul VR:**Window -> SteamVR Input**. Acceptăm setările default și le salvăm (**Save and Generate**). | + | 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+. |
- | {{ :irva:laboratoare:steamvrinput.png?600 |}} | + | === Problemă pornire SteamVR cu Quest Link | Loading screen stuck pe aplicația instalată pe cască === |
- | ==== Player. Camera ==== | + | Până în prezent, în proiectul suport au fost integrate diverse SDK-uri, precum Cardboard XR, SteamVR și Meta XR. Fiecare dintre acestea rulează pe un anumit target (Windows, Android, etc.), și necesită configurarea corectă a unui **XR Plug-in provider**. |
- | Pentru a putea avea control asupra HMD-ului si a controllerelelor, trebuie să adăugăm în scena default Unity prefab-ul **Player**. Acesta conține printre altele, componentele specifice mâinilor (controllerelelor) și ale HMD-ului. Cum orice joc VR este first person, jucătorul are o cameră asociată. Drept urmare, camera default din Unity nu este necesară. Aceasta trebuie ștearsă. Odată adăugat prefab-ul, putem testa aplicația. Observăm cum jucătorul din VR se mișcă în funcție de mișcările noastre. | + | |
- | {{ :irva:laboratoare:htcviveplayer.png?400 |}} | + | Un **XR plug-in provider** este o componentă software ce permite interfațarea dintre Unity și hardware-ul VR -- așadar, fiecare headset comunică printr-un provider diferit. Acest provider se poate configura în **Project Settings -> XR Plug-in Management -> Plug-in Providers**. |
- | ==== Deplasare în VR ==== | + | Așadar, în funcție de headset-ul target, trebuie să setați provider-ul corect -- acest proces a fost automatizat în proiect prin implementarea script-ului ''XRPluginProviderController'', care setează provider-ul corect în funcție de un VR target atât în testarea în editor cât și la realizarea unui build. |
- | O problemă importantă în aplicațiile VR este deplasarea. Pe de o parte, dacă în lumea reală ne deplasăm, ne deplasăm automat și în VR. Pe de altă parte, de obicei este indicat să nu facem acest lucru mai mult de câțiva pași, deoarece este foarte ușor să ne rănim. Drept urmare, deplasarea în VR pe distanțe mai mari trebuie făcută din cod. | + | |
- | Dacă am implementa deplasarea în mod clasic, ca în orice joc pe calculator (cât timp țin apăsat pe tasta W merg înainte), utilizatorul ar suferi de rău de mișcare (corpul nu se mișcă; cu toate astea ochii percep mișcare). Așadar, această soluție nu este fezabilă. În schimb, în aplicațiile VR s-a încetățenit ideea de teleportare pentru a parcurge distanțe mari. | + | == "Ce trebuie eu să fac?" == |
- | Pentru a implementa teleportarea, în primul rând este necesar să adăugăm prefab-ul **Teleporting**. Acest prefab conține toată logica din spatele conceptului de teleportare. Cu toate acestea, dacă testăm acum aplicația, o să vedem că încă nu ne putem teleporta. Asta pentru că, pentru a ne putea teleporta, avem nevoie să definim zonele în care avem voie să mergem. Acest lucru se poate face în 2 moduri: | + | În fiecare scenă VR pe care doriți s-o testați: |
- | - Teleport Points | + | |
- | - Teleport Area | + | |
- | Un **teleport point** este un punct în spațiul 3D în care ne putem teleporta. Jucătorul este limitat strict la coordonatele acelui punct. Pentru a implementa mișcarea folosind astfel de puncte de teleportare, adăugăm în scenă prefab-ul **TeleportingPoint** de câte ori avem nevoie. Pe urmă, poziționăm fiecare instanță la poziția la care jucătorul se poate teleporta. | + | * Includeți oriunde în ierarhia scenei la care lucrați prefab-ul **Assets -> Project Setup -> CustomXRPluginProvider -> Prefabs -> [XRPluginProviderController]** |
+ | * Setați din inspector de pe script-ul atașat target-ul VR corespunzător | ||
- | {{ :irva:laboratoare:htcviveteleportpoint.png?400 |}} | + | {{ :irva:laboratoare:image_2024-01-08_230109515.png?300 |}} |
- | Un **teleport area** este o suprafață în care jucătorul se poate teleporta. De data aceasta, jucătorul nu mai este limitat să se teleporteze într-un singur punct, ci se poate teleporta oriunde pe acea suprafață. Pentru a adăuga o astfel de zonă de teleportare, mai întâi trebuie să adaăugam un plan simplu în scenă, căruia îi setăm ce poziție și dimensiune dorim. Pe urmă, pe acest plan, adăugăm scriptul **Teleport Area**, care va transforma întregul plan într-o zonă de teleportare. | + | ==== Introducere ==== |
- | {{ :irva:laboratoare:htcviveteleportarea.png?400 |}} | + | Dispozitivele dezvoltate de către Meta (în trecut, cunoscute ca și Oculus) sunt soluții `all-in-one` ce permit dezvoltarea aplicațiilor de realitate virtuală și oferă suport pentru cele mai recente funcționalități din acest domeniu, precum hand tracking, realitate mixtă (MR), audio spațializat, eye și body tracking. |
- | ==== Interacțiunea cu Obiectele în VR ==== | + | ==== Dispozitive ==== |
- | Pentru a interacționa cu obiectele în VR (să le luăm în mână de exemplu), este suficient să atașăm scriptul **Interactable** pe ele. Mai mult, dacă vrem să aplicăm legile fizice pe aceste obiecte sau dacă vrem să le putem arunca, putem atașa și scriptul **Throwable**, care automat atașează obiectului un **RigidBody**. | + | |
- | ==== Adăugarea unui Tracker ==== | + | |
- | Dacă dorim să folosim și accesorii HTC Vive, este suficient să le facem pair din SteamVR. Odată setate, avem acces la oricând la ele în Unity. Ca să le putem vizualiza în aplicație, trebuie să atașăm scriptul **Steam VR_Tracked Object** pe obiectul 3D care va reprezenta tracker-ul (de exemplu, un cub). Odată atașat, trebuie specificat ce device vrem să reprezinte obiectul 3D. Astfel, vom modifica parametrul **Index** al scriptului. | + | |
- | {{ :irva:laboratoare:htcvivetrackerscript.png?500 |}} | + | În mod curent, în seria Quest, regăsim 3 astfel de dispozitive ce oferă suport activ pentru dezvoltarea aplicațiilor VR, anume: |
- | Pentru a știi ce valoare dăm acestui index, ne uităm la device-urile conectate din SteamVR. Primul device, este HMD-ul în sine, deci acestuia îi va corespunde index-ul 1; al doilea device este un controller, deci indexul 2 este pentru unul din controollere; etc. Astfel, observăm că pentru tracker, trebuie să setăm index-ul 5. | + | * **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 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 Pro** are un display panel mai bun, un upgrade de memorie RAM, dar avantajele principale sunt reprezentate de suport pentru face și eye tracking, precum și un design mai ergonomic. În plus, **Meta Quest 3** și **Meta Quest Pro** vin cu controller-e ce au suport pentru feedback haptic mai avansat | ||
- | {{ :irva:laboratoare:htcvivetrackerindex.png?300 |}} | + | {{ :irva:laboratoare:mq2_img_1_devices.png?500 |}} |
- | ===== Tasks ===== | + | |
- | - Realizați setup-ul necesar rularii proiectului in VR: Update repository, instalare SteamVR, conexiune hardware intre casca si calculator. Veti avea de implementa cateva functionalitati in scena **Assets -> L7_HTCVive -> Scenes -> HTCViveLab** | + | |
- | - Adaugati in scena prefab-ul **Player**. Testati head tracking-ul si controller-ele prin rularea proiectului (play din Unity Editor) | + | |
- | - Adaugati cateva zone de teleportare pentru a putea urca treptele. Plasati ultima zona de teleportare intre mesele de pe platforma superioara. Nu uitati sa va adaugati prefab-ul **Teleporting** pentru a putea folosi functia de teleportare intre obiectele **TeleportPoint** | + | |
- | - Adaugati mai multe obiecte de tip **throwable** (optional, testati diferite scale-uri, setari de rigidbody, etc. pentru acestea) | + | |
- | Bonus: | + | <note>O comparație mai detaliată o puteți studia [[https://developer.oculus.com/quest/|aici]].</note> |
- | * Folosind oricare dintre cele doua butoane portocalii de pe mese puteti instantia un proiectil care este lansat in directia voastra. Implementati si adaugati in scene un obiect (baseball bat, o paleta, etc.) pe care o puteti tine (ancora) de mana, cu ajutorul careia sa loviti proiectilul. Puteti studia diverse obiecte interactibile in scena **Assets -> SteamVR -> InteractionSystem - > Samples -> Interactions_Example** pentru a vedea pentru ce tipuri de obiecte exista suport. | + | ==== Integrări ==== |
+ | |||
+ | Pentru dezvoltarea aplicațiilor de VR, există suport pentru **OpenXR** (aplicații native), sau SDK-uri ce oferă integrare cu game engine-urile standard, precum **Unity** și **Unreal Engine**. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_img_2_integrations.png?500 |}} | ||
+ | |||
+ | <note tip>Vom lucra folosind [[https://developer.oculus.com/documentation/unity/|integrarea din Unity]]. Cel mai probabil puteți lucra pe oricare platformă, în următoarele link-uri aveți informații despre integrările folosind [[https://developer.oculus.com/documentation/native/|OpenXR ]]sau [[https://developer.oculus.com/documentation/unreal/|Unreal Engine]].</note> | ||
+ | |||
+ | ==== Tehnologii disponibile ==== | ||
+ | |||
+ | Integrarea SDK-ului vine cu suport pentru diverse feature-uri pe care le putem utiliza, în funcție de necesitățile aplicației pe care dorim s-o dezvoltăm: | ||
+ | |||
+ | * **Meta XR Code SDK**: Funcționalități esențiale precum headset tracking, hand tracking, passthrough, ancore spațiale, etc. | ||
+ | * **Interaction SDK**: Funcționalități de interacțiune cu controller-ele sau mâinile, precum ray, poke, grab, etc. | ||
+ | * **Meta XR Audio SDK**: Suport pentru sunet spațializat | ||
+ | * **Voice SDK** | ||
+ | * **Platform SDK**: Aspecte `sociale` / networking: Matchmaking, In-App Purchasing (IAP), Cloud Storage, etc. | ||
+ | * **Meta XR Simulator** | ||
+ | |||
+ | ==== Setup mediu de dezvoltare ==== | ||
+ | |||
+ | În imaginea de mai jos puteți studia un flow generalizat al dezvoltării aplicațiilor de VR folosind dispozitivele celor de la Meta. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_img_3_workflow.png?500 |}} | ||
+ | |||
+ | === Cerințe pentru setup === | ||
+ | |||
+ | * Minim **Unity 2021.3.26f1** cu modulul pentru Android instalat | ||
+ | * Dispozitiv **Meta Quest 2** (se poate folosi și **Meta Quest 3** sau **Meta Quest Pro**) | ||
+ | * **Proiect Unity**, [[https://github.com/Andrei-Lapusteanu/IRVA_VR|link repo]] | ||
+ | * Acesta are deja SDK-urile necesare integrate și configurate pentru voi 😁 | ||
+ | * **Oculus desktop app** ([[https://www.oculus.com/download_app/?id=1582076955407037|download]]) | ||
+ | * **Meta Quest Developer Hub** (opțional, [[https://developer.oculus.com/downloads/package/oculus-developer-hub-win/|download]]) | ||
+ | * **SideQuest** (opțional, [[https://sidequestvr.com/setup-howto|download page]]) | ||
+ | |||
+ | === Meta Quest Developer Hub (MQDH) === | ||
+ | |||
+ | Aplicația vă oferă setări adiționale pentru un dispozitiv Quest conectat la calculator. Folosind MQDH puteți să: | ||
+ | * Vizualizați log-uri ale dispozitivului pentru a face debugging | ||
+ | * Screen cast, screen recording | ||
+ | * Instalare/deploy aplicații pe cască | ||
+ | |||
+ | ==== Integrare pachete Meta XR în Unity | Testare în VR folosind Quest Link ==== | ||
+ | |||
+ | Această secțiune este dedicată învățării workflow-ului de testare al unei aplicații direct în Unity Editor, fără a fi necesară realizarea unui build | ||
+ | * **SDK-urile de interes pentru dezvoltare au fost deja integrate în proiectul suport**, vă vom prezenta foarte pe scurt modalitatea de setup + câteva detalii | ||
+ | * Veți învăța să folosiți **Oculus Link** pentru testare în editor | ||
+ | |||
+ | === Setup SDK | Meta XR All-in-One SDK (UPM) === | ||
+ | |||
+ | <note important>Pașii prezentați în acest subcapitol nu sunt necesari dacă folosiți [[https://github.com/Andrei-Lapusteanu/IRVA_VR|proiectul suport din repo]].</note> | ||
+ | |||
+ | <note important>Până în Octombrie 2023, pachetul oficial, care se putea descărca de pe Unity Asset Store era Oculus Integration SDK. Atenție, acesta a fost **deprecated** începând cu versiunea 57. Nu o să-l folosim pe acesta, dar pentru **suport legacy** acesta se poate încă descărca de pe Asset Store de [[https://assetstore.unity.com/packages/tools/integration/oculus-integration-deprecated-82022|aici]].</note> | ||
+ | |||
+ | Începând cu versiunea 59, pachetul de integrare se folosește de **UPM (Unity Package Manager)**, oferind astfel o modalitate mai ușoară de integrare, realizarea rapidă a upgrade-urilor, iar probabil cel mai important, un management ușor în alegerea pachetelor esențiale de folosit (Core, Integration, Audio, etc.). | ||
+ | |||
+ | * **Link către Meta docs pentru [[https://developer.oculus.com/downloads/package/meta-xr-sdk-all-in-one-upm/|download]] SDK**, iar pentru cei curioși, link către [[https://developer.oculus.com/blog/unity-package-manager-sdk-updates-v59-meta-quest/|announcement-ul oficial UPM]] precum și detalii legate de [[https://developer.oculus.com/documentation/unity/unity-package-manager/|import-ul pachetelor]] și modalități de [[https://developer.oculus.com/documentation/unity/unity-xr-plugin/|update ]]a acestora | ||
+ | * Pentru setup SDK într-un proiect Unity, **accesați link-ul de download de mai sus**, iar de pe Asset Store puteți alege să importați pachetul. Pachetul instalat îl veți găsi apoi în **Package Manger** în Unity (**Window -> Package Manager**, iar din noua fereastră, din stânga sus, nu uitați să setați filtrul necesar) | ||
+ | * Pentru a realiza un build pe dispozitiv va trebui să schimbați target platform-ul pe Android | ||
+ | * Un tool util în puteți găsi în editor (**Oculus -> Tools -> Project Setup Tool**), care vă oferă indicații legate de setările optime pentru build | ||
+ | |||
+ | <note tip>Pașii detaliați ai setup-ului complet într-un proiect nou îi puteți studia [[https://developer.oculus.com/documentation/unity/unity-tutorial-hello-vr/|aici]].</note> | ||
+ | |||
+ | === Import scene demo | Meta XR Interaction SDK OVR Samples === | ||
+ | |||
+ | <note important>Pașii prezentați în acest subcapitol nu sunt necesari dacă folosiți [[https://github.com/Andrei-Lapusteanu/IRVA_VR|proiectul suport din repo]].</note> | ||
+ | |||
+ | * Pentru a accelera testarea în acest setup inițial, în proiect a fost integrat pachet-ul de samples ([[https://assetstore.unity.com/packages/tools/integration/meta-xr-interaction-sdk-ovr-samples-268521|download]]). Într-un proiect nou, după instalarea pachetului, din **Package Manager** puteți importa câteva scene demo. | ||
+ | * Aceste scene demo prezintă în mod detaliat diverse feature-uri posibile cu aceste headset-uri. Sunt un punct bun de plecare dacă doriți să integrați aceste funcționalități în alte proiecte ale voastre. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_img_4_ovrsamplespng.png?500 |}} | ||
+ | |||
+ | === Configurare Quest Link === | ||
+ | |||
+ | **Quest Link** (înainte cunoscut ca **Oculus Link**) este un feature disponibil pe device-uri ce permite folosirea acestora ca dispozitive de tip **PC-VR** – mai exact, vă puteți bucura de content VR care rulează pe PC și este streamed pe headset. | ||
+ | |||
+ | <note tip>🎮 Dacă doriți să vă jucați pe căști, recomandăm să utilizați aplicația **Virtual Desktop** (trebuie plătit), oferă o experiență și configurabilitate superioară Quest Link-ului!</note> | ||
+ | |||
+ | Puteți realiza conexiunea de tip Link între cască și PC prin două moduri: Prin **cablu** sau wireless (**Air Link**). Pentru **Air Link** trebuie să aveți headset-ul conectat la aceeași rețea locală ca și PC-ul la care vreți să conectați casca. | ||
+ | |||
+ | <note important>Asigurați-vă ca aveți instalat pe calculator **Quest (desktop app)**. Va trebui să realizați pairing-ul folosind acest program. For safety, porniți-l (și configurați-l) înainte să urmați pașii prezentați mai jos.</note> | ||
+ | |||
+ | Setup-ul aferent **Air Link**-ului este prezentat în GIF-urile următoare. Întâi, asigurați-vă că **toggle-ul de Quest Link** este activ în setările headset-ului. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_gif_tutorial_1_enablelink.gif?500 |}} | ||
+ | |||
+ | În continuare, puteți accesa **Quest Link** din meniul principal al căștii – de aici puteți să activați și funcția de **Air Link**. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_gif_tutorial_2_pairlink.gif?500 |}} | ||
+ | |||
+ | Pe **Quest (desktop app)** confirmați codul de conectare. | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_img_5_questlinkcode.png?500 |}} | ||
+ | |||
+ | Dacă totul s-a realizat cu succes ar trebui să fie interactibil butonul de **Pair** din meniul de** Quest Link** de pe headset. | ||
+ | |||
+ | <note important>În caz că întâmpinați probleme, studiați pașii prezetați în detaliu din următoarele link-uri: [[https://www.meta.com/help/quest/articles/headsets-and-accessories/oculus-link/connect-link-with-quest-2/|Quest Link (caz general)]] și [[https://www.meta.com/help/quest/articles/headsets-and-accessories/oculus-link/connect-with-air-link/|Air Link]].</note> | ||
+ | |||
+ | === Play-test scenă demo prin Quest Link === | ||
+ | |||
+ | <note important>În cazul în care ați lucrat într-un proiect nou / diferit de cel suport, trebuie să aveți pachetul **Meta XR All-in-One SDK (UPM)** precum și **Meta XR Interaction SDK OVR Samples** + **scenele demo** importate în proiect pentru a realiza următorii pași.</note> | ||
+ | |||
+ | - În proiectul suport, deschideți scena de la următoarea cale: **Assets -> Samples -> Meta XR Interaction SDK OVR Samples -> 59.0.0 -> Example Scenes -> HandGrabExamples** | ||
+ | - Porniți **Oculus Link** pe headset | ||
+ | - Rulați proiectul (**Play** din editor) | ||
+ | |||
+ | <note>În următorul GIF este prezentat feature-ul de tip **desktop virtual** – puteți astfel controla PC-ul pe care l-ați conecat cu casca. În GIF proiectul este rulat din Unity prin acest desktop virtual.</note> | ||
+ | |||
+ | {{ :irva:laboratoare:mq2_gif_tutorial_3_playlink.gif?500 |}} | ||
+ | |||
+ | === 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. | ||
+ | |||
+ | 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). | ||
+ | |||
+ | {{ :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). | ||
+ | |||
+ | <note>[[https://developer.oculus.com/documentation/unity/ts-odh-deploy-build/|Guide ]] pentru folosirea MQDH.</note> | ||
+ | |||
+ | ==== 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 | ||
+ | - Î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) | ||
+ | - **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 | ||
+ | |||
+ | === ✨ Bonus === | ||
+ | |||
+ | * 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 | ||
- | <hidden> | ||
- | <note tip>În acest laborator, pe lângă HTC Vive, vom folosi și funcția de tracking a telefonului mobil pe care o pune la dispoziție ARCore. Astfel, vom avea 2 aplicații: | ||
- | * Phone Movement - aplicație mobile în care vom calcula poziția telefonului. | ||
- | * HTC Vive - aplicație VR în care vom vedea real time traiectoria telefonului și o vom compara cu HTC Vive. De asemenea, vom implementa și funcționalități de bază HTC VIVE. | ||
- | Cele două aplicații vor comunica între ele prin UDP. Scheletul de cod poate fi descărcat de [[https://github.com/Maria-Anca-Balutoiu/IRVA.git|aici]]. Scripturile necesare pentru rezolvarea laboratorului se află în **Assets->Scripts**: **UDPSend.cs** și **UDPReceive.cs**. | ||
- | </note> | ||
- | - Realizați toate setările pentru a putea vizualiza scena în VR. | ||
- | - Adăugați cel puțin 3 puncte de teleportare și o zonă de teleportare. | ||
- | - Adăugați cel puțin un cub, pe care să îl puteți arunca. | ||
- | - Adăugați o reprezentare vizuală a tracker-ului HTC Vive. Observați cum se mișcă în scenă. | ||
- | -------- | ||
- | - Realizați conexiunea UDP dintre aplicația VR și aplicația AR. | ||
- | - Reprezentați axele obiectului din aplicația Desktop care reprezintă dispozitivul mobil. | ||
- | - Trimiteți poziția și orientarea camerei de la telefon mobil la calculator. | ||
- | - Afișați datele primite de la telefonul mobil, dar și poziția și orientarea tracker-ului pe ecran în aplicația Desktop. | ||
- | - Pe aplicația Desktop, modificați poziția și orientarea obiectului care reprezintă telefonul mobil. | ||
- | </hidden> | ||