Differences

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

Link to this comparison view

irva:laboratoarevr:02 [2024/10/15 00:19]
andrei.lapusteanu Updated tasks
irva:laboratoarevr:02 [2024/10/21 23:03] (current)
andrei.lapusteanu Update SteamVR quirk
Line 20: Line 20:
 De asemenea, **SteamVR** permite utilizarea a multiple headset-uri,​ câteva exemple ar fi: De asemenea, **SteamVR** permite utilizarea a multiple headset-uri,​ câteva exemple ar fi:
   * Meta Quest (2, 3, Pro)   * Meta Quest (2, 3, Pro)
-  * HTV Vive+  * HTC Vive
   * Valve Index   * Valve Index
  
Line 27: Line 27:
 ==== PC VR ==== ==== PC VR ====
  
-Ca și concept **PC VR** ar avantajul că se folosește de puterea ​suporioară de procesare a PC-urilor / laptop-urilor (comparativ cu cea a headset-urilor de tip all-in-one) pentru a procesa conținutul grafic, care este apoi redat pe headset. Acesta din urmă joacă și un rol de tracking, comunicându-i aplicației (ce rulează pe PC) informații legate de headtracking,​ controller-e,​ etc.+Ca și concept **PC VR** are avantajul că se folosește de puterea ​superioară de procesare a PC-urilor / laptop-urilor (comparativ cu cea a headset-urilor de tip all-in-one) pentru a procesa conținutul grafic, care este apoi redat pe headset. Acesta din urmă joacă și un rol de tracking, comunicându-i aplicației (ce rulează pe PC) informații legate de headtracking,​ controller-e,​ etc.
  
 ==== Meta Quest App ==== ==== Meta Quest App ====
Line 43: Line 43:
   * Va trebui să aveți să aveți un cont pe [[ https://​store.steampowered.com|Steam]].   * Va trebui să aveți să aveți un cont pe [[ https://​store.steampowered.com|Steam]].
   * Instalați [[https://​store.steampowered.com/​app/​250820/​SteamVR/​|SteamVR]].   * Instalați [[https://​store.steampowered.com/​app/​250820/​SteamVR/​|SteamVR]].
-  * Luați ultima variantă a repo-ului ​de VR <​LINK_VR>​, deschideți proiectul de Unity.+  * Luați ultima variantă a [[https://​github.com/​UPB-Graphics/​IRVA|repo-ului]], deschideți proiectul de Unity.
   * În continuare va trebui să instalați **SteamVR Plugin** pentru Unity. Îl puteți accesa de [[https://​assetstore.unity.com/​packages/​tools/​integration/​steamvr-plugin-32647?​srsltid=AfmBOoqauVQrCs1Pf_rKe3_SsgniooI_GMEj8ARqyR0ET5YHJDHb3gIt|aici]].   * În continuare va trebui să instalați **SteamVR Plugin** pentru Unity. Îl puteți accesa de [[https://​assetstore.unity.com/​packages/​tools/​integration/​steamvr-plugin-32647?​srsltid=AfmBOoqauVQrCs1Pf_rKe3_SsgniooI_GMEj8ARqyR0ET5YHJDHb3gIt|aici]].
   * După finalizarea instalării,​ o să vă apară un pop-up legat de anumite setări necesare - acceptați prompt-ul   * După finalizarea instalării,​ o să vă apară un pop-up legat de anumite setări necesare - acceptați prompt-ul
  
 {{ :​irva:​laboratoarevr:​irva_2024_vr_l2_steamvrprompt.png?​200 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_l2_steamvrprompt.png?​200 |}}
 +
 +<note important>​Dacă după import primiți în consolă în mod repetat eroare de tipul //​InvalidOperationException:​ Insecure connection not allowed// mergeți în **Edit -> Project Settings -> Player -> (platforma target, prima in acest caz, Windows) -> Other Settings** și selectați pentru opțiunea **Allow downloads over HTTP** varianta **Always allow**.</​note>​
  
 ==== Meta Quest App ==== ==== Meta Quest App ====
Line 91: Line 93:
  
 <​note>​Găsiți [[https://​www.meta.com/​help/​quest/​articles/​headsets-and-accessories/​oculus-link/​connect-with-air-link/​|aici]] pașii oficial pentru configurarea Quest Link-ului în caz că întâmpinați probleme.</​note>​ <​note>​Găsiți [[https://​www.meta.com/​help/​quest/​articles/​headsets-and-accessories/​oculus-link/​connect-with-air-link/​|aici]] pașii oficial pentru configurarea Quest Link-ului în caz că întâmpinați probleme.</​note>​
 +
 +<​note>​
 +Air Link necesită o conexiune destul de bună via WiFi. În mod ideal, dacă este disponibilă,​ optați pentru conectarea la o rețea pe 5GHz.
 +</​note>​
  
 <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>​ <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>​
Line 107: Line 113:
  
  
-  * **SteamVR** necesită configurarea unor setări de input. În cazul în care acestea nu au fost realizate, deschideți tool-ul ​dela **Window -> SteamVR Input** și apăsați pe butonul **Save and Generate**+  * **SteamVR** necesită configurarea unor setări de input. În cazul în care acestea nu au fost realizate, deschideți tool-ul ​de la **Window -> SteamVR Input** și apăsați pe butonul **Save and Generate**
   * Intrați în modul **Link** pe headset - așteptați până când se încarcă un nou environment virtual   * Intrați în modul **Link** pe headset - așteptați până când se încarcă un nou environment virtual
   * Deschideți **SteamVR** pe PC / laptop. Pe cască ar trebui să vă apară un mesaj "​Loading SteamVR",​ urmat de încărcarea unui alte scene virtuale   * Deschideți **SteamVR** pe PC / laptop. Pe cască ar trebui să vă apară un mesaj "​Loading SteamVR",​ urmat de încărcarea unui alte scene virtuale
Line 121: Line 127:
 ==== Testare scene sample ==== ==== Testare scene sample ====
  
-  * Deschideți scena **Assets -> SteamVR -> Simple ​Scene**+  * Deschideți scena **Assets -> SteamVR -> Simple ​Sample**
   * Dați **Play** în editor - ar trebui să pornească rularea pe headset - dacă vi se încarcă scena pe care ați văzut-o în editor, puteți să va rotiți capul, iar în loc de controller-e vă apar mâini virtuale, configurarea până în prezent a avut loc cu succes   * Dați **Play** în editor - ar trebui să pornească rularea pe headset - dacă vi se încarcă scena pe care ați văzut-o în editor, puteți să va rotiți capul, iar în loc de controller-e vă apar mâini virtuale, configurarea până în prezent a avut loc cu succes
  
-  * Have some fun în scena **Assets -> SteamVR -> InteractionSystem -> Interactions_Example**. Încercați diversele tipuri de interacțiuni posibile, observați cum funcționează mecanica de teleportare - o să aveți câteva instrucțiuni și în scenă+  * Have some fun în scena **Assets -> SteamVR -> InteractionSystem ​-> Samples ​-> Interactions_Example**. Încercați diversele tipuri de interacțiuni posibile, observați cum funcționează mecanica de teleportare - o să aveți câteva instrucțiuni și în scenă
  
 {{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_1_gif.gif?​400 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_1_gif.gif?​400 |}}
Line 150: Line 156:
 </​note>​ </​note>​
  
-Implementarea acestui ​mecasism ​folosind **SteamVR** este se poate realiza ușor, avem nevoie în esență de două tipuri de prefab-uri pe care să le punem în scenă+Implementarea acestui ​mecanism ​folosind **SteamVR** este se poate realiza ușor, avem nevoie în esență de două tipuri de prefab-uri pe care să le punem în scenă:
   * Prefab-ul **Teleporting** (**Assets -> SteamVR -> InteractionSystem -> Teleport -> Prefabs**), care are deja implementată toată logica aferentă teleportării   * Prefab-ul **Teleporting** (**Assets -> SteamVR -> InteractionSystem -> Teleport -> Prefabs**), care are deja implementată toată logica aferentă teleportării
   * Prefab-ul **TeleportPoint** (**Assets -> SteamVR -> InteractionSystem -> Teleport -> Prefabs**), care reprezintă un punct fix la care user-ul se poate teleporta   * Prefab-ul **TeleportPoint** (**Assets -> SteamVR -> InteractionSystem -> Teleport -> Prefabs**), care reprezintă un punct fix la care user-ul se poate teleporta
Line 156: Line 162:
 {{ :​irva:​laboratoare:​htcviveteleportpoint.png?​300 |}} {{ :​irva:​laboratoare:​htcviveteleportpoint.png?​300 |}}
  
-  * Așdar, adăugați în scenă un prefab **Teleporing** precum și mai multe **TeleporPoint**-uri+  * Așadar, adăugați în scenă un prefab **Teleporing** precum și mai multe **TeleporPoint-uri**
   * Poziționați-vă punctele de teleportare după plac, dar adăugați cel puțin unul pe platorma superioară (între mese)   * Poziționați-vă punctele de teleportare după plac, dar adăugați cel puțin unul pe platorma superioară (între mese)
  
 Înainte de a testa mecanica de teleporare, veți avea nevoie de un **Player**. **SteamVR** include un atfel de prefab (**Assets -> SteamVR -> InteractionSystem -> Core -> Prefabs**) care e deja configurat cu tot ce ține de logica de cameră, tracking, controller-e,​ etc. Înainte de a testa mecanica de teleporare, veți avea nevoie de un **Player**. **SteamVR** include un atfel de prefab (**Assets -> SteamVR -> InteractionSystem -> Core -> Prefabs**) care e deja configurat cu tot ce ține de logica de cameră, tracking, controller-e,​ etc.
  
-  * Adăugați prefab-ul **Player** la o poziție dorită în scenă.+  * Adăugați prefab-ul **Player** la o poziție dorită în scenă
   * Testați scena și punctele de teleportare setate   * Testați scena și punctele de teleportare setate
  
Line 169: Line 175:
  
   * Plasați prefab-ul la o locație dorită în scenă - adaugați, de asemenea, un nou teleporting point în vecinătatea acestuia   * Plasați prefab-ul la o locație dorită în scenă - adaugați, de asemenea, un nou teleporting point în vecinătatea acestuia
-  * Puteți testa interacțiunile prin a lovi cu pumnii obiectul - dacă tineți apăsate în același timp ambele trigger-e ​și butonul A puteți face din mâinile virtuale un pumn (nu e obligatoriu,​ doar în scop de //​imersiune//​)+  * Puteți testa interacțiunile prin a lovi cu pumnii obiectul - dacă tineți apăsate în același timp ambele trigger-e puteți face din mâinile virtuale un pumn (nu e obligatoriu,​ doar în scop de //​imersiune//​)
   * Componenta copil **BoxingBagRigidbody** are atașat script ''​BoxingBagPunchStrengthController''​ pe care va trebui să-l completați pentru a adauga câteva funcționalități (citiți si ''​TODO''​-urile din cod):   * Componenta copil **BoxingBagRigidbody** are atașat script ''​BoxingBagPunchStrengthController''​ pe care va trebui să-l completați pentru a adauga câteva funcționalități (citiți si ''​TODO''​-urile din cod):
     * Pe metoda ''​OnCollisionEnter'',​ calculați cât de puterică este lovitura - moduri sunt multiple - pentru o variantă simplă folosiți-vă de lungimea vectorului ''​relativeVelocity'',​ pe care-l puteți citi de pe componenta ''​Collider''​ primită ca parametru în metodă     * Pe metoda ''​OnCollisionEnter'',​ calculați cât de puterică este lovitura - moduri sunt multiple - pentru o variantă simplă folosiți-vă de lungimea vectorului ''​relativeVelocity'',​ pe care-l puteți citi de pe componenta ''​Collider''​ primită ca parametru în metodă
Line 193: Line 199:
   - Urmăriți pașii descriși în laborator pentru a vă face setup-ul - rezolvarea task-ului este marcată prin testarea folosind SteamVR a celor două scene sample   - Urmăriți pașii descriși în laborator pentru a vă face setup-ul - rezolvarea task-ului este marcată prin testarea folosind SteamVR a celor două scene sample
   - Implementați mecanica de **teleportare** în scena oferită ca suport pentru laborator ​   - Implementați mecanica de **teleportare** în scena oferită ca suport pentru laborator ​
-    * Adăugați prefab-ul **Player** la o poziție dorită în scenă.+    * Adăugați prefab-ul **Player** la o poziție dorită în scenă
     * Integrați în scenă un obiect de tip **Teleporting**     * Integrați în scenă un obiect de tip **Teleporting**
-    *  Integrați în scenă mai multe obiecte de tiă **TeleportPoint**,​ poziționate după plac, dar cel puțin unul pe platforma superioară (între mese)+    *  Integrați în scenă mai multe obiecte de tip **TeleportPoint**,​ poziționate după plac, dar cel puțin unul pe platforma superioară (între mese)
   - Implementați mecanicile aferente **sacului de box** în scena oferită ca suport pentru laborator   - Implementați mecanicile aferente **sacului de box** în scena oferită ca suport pentru laborator
     * Adăugați prefab-ul **[BoxingBag]** (plus un **TeleportPoint** în proximitatea acestuia)     * Adăugați prefab-ul **[BoxingBag]** (plus un **TeleportPoint** în proximitatea acestuia)
     * Completați ''​TODO''​-urile din script-ul ''​BoxingBagPunchStrengthController''​     * Completați ''​TODO''​-urile din script-ul ''​BoxingBagPunchStrengthController''​
       * Calculați cât de puternică este lovitura       * Calculați cât de puternică este lovitura
-      * Afișați rezultatul pe world space canvas-ul atașat obiectului 
       * Actualizați world space canvas-ul cu valoarea calculată anterior       * Actualizați world space canvas-ul cu valoarea calculată anterior
       * Adăugați un sunet de punch și modulați-i volumul în funcție de valoarea calculată anterior       * Adăugați un sunet de punch și modulați-i volumul în funcție de valoarea calculată anterior
   - Implementați mecanica de lansare a unui mingi folosind butoanele interactibile   - Implementați mecanica de lansare a unui mingi folosind butoanele interactibile
     * Adăugați-vă pe mesele din scenă cel puțin un buton (aveți deja prefab-ul **[InteractableButton]**)     * Adăugați-vă pe mesele din scenă cel puțin un buton (aveți deja prefab-ul **[InteractableButton]**)
-    * Legați acțiunea de apăsare a butonului cu logica de lansare a unui proiectil (definită script-ul ''​ProjectileCannonController''​)+    * Legați acțiunea de apăsare a butonului cu logica de lansare a unui proiectil (definită ​în script-ul ''​ProjectileCannonController''​)
     * Hint: Script-ul ''​HoverButton''​ de pe prefab-ul de buton expune în inspector evenimentele ''​OnButtonDown''​ și ''​OnButtonUp''​     * Hint: Script-ul ''​HoverButton''​ de pe prefab-ul de buton expune în inspector evenimentele ''​OnButtonDown''​ și ''​OnButtonUp''​
-  - **[✨Bonus✨]** Implementați un obiect pe care să-l puteți lua în mână și care să interacționeze cu proiectilele lansate - de exemplu, o bâtă de baseball! Studiați scena suport sau cele sample pentru a determina ce tip de obiect interactibil aveți nevoie. Adăgați sunete la coliziuni. După nevoie, folosiți-vă de **Physics Materials**,​ aveți deja câteva predefinite în asset-urile importate.+  - **[✨Bonus✨]** Implementați un obiect pe care să-l puteți lua în mână și care să interacționeze cu proiectilele lansate - de exemplu, o bâtă de baseball! Studiați scena suport sau cele sample pentru a determina ce tip de obiect interactibil aveți nevoie. Adăgați sunete la coliziuni. După nevoie, folosiți-vă de **Physics Materials**,​ aveți deja câteva predefinite în asset-urile importate
  
 {{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_3_gif.gif?​400 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_3_gif.gif?​400 |}}
irva/laboratoarevr/02.1728940771.txt.gz · Last modified: 2024/10/15 00:19 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