Table of Contents

Laborator VR 02. SteamVR. Setup și interacțiuni de bază

În acest laborator vom folosi SteamVR împreună cu headset-urile celor de la Meta (Quest 2, Quest 3), reunind totul în Unity pentru a vă introduce în dezvoltarea unei aplicații de tip PC VR.

Tehnologii utilizate. Scurt overview

Vom folosi o serie de programe și plugin-uri pentru a ne configura environment-ul de dezvoltare. Acestea sunt prezentate pe scurt în următoarele subcapitole.

  • Subcapitolele Meta Quest App și Quest Link există întrucât noi vom folosi headset-urile celor de la Meta. Alte headset-uri vor folosi alte software-uri pentru configurare.
  • Vom vorbi mai detaliat despre ecosistemul Meta în laboratoarele dedicate acestuia

SteamVR

SteamVR este un framework dezvoltat de către Valve ce permite utilizarea headset-urilor de realitate virtuală să ruleze conținut de tip PC VR, anume permite utilizarea calculatorului ca unitate de procesare iar headset-urile ca dispozitive de tracking și streaming.

Runtime-ul SteamVR rulează prin platforma Steam, care oferă acces la sute de jocuri ce pot fi rulate în modul PC VR.

De asemenea, SteamVR permite utilizarea a multiple headset-uri, câteva exemple ar fi:

Nu în utlimul rând, SDK-ul se bucură de o integrare de calitate cu diverse medii de dezoltare, precum Unity.

PC VR

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 este un software al celor de la Meta, de tip “companion”, ce permite conectarea unui headset de tip Meta la PC / laptop via Quest Link. Programul în trecut se numea Oculus App.

Quest Link este tehnologia ce permite headset-urilor Meta să de comporte precum un headset PC VR. Se poate configura atât prin cablu cât și wireless (Air Link).

Setup laborator

SteamVR runtime și plugin Unity

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.

Meta Quest App

Utilizarea headset-urilor Meta implică faptul că acestea au fost configurate (setup-ul căștii în sine) și că au conectat un cont valid de Meta. Headset-urile din laborator ar trebui să fie deja configurate în acest sens. În caz contrar, următorii pași din setup necesită configurarea în prelabil a headset-ului.

Găsiți aici pașii oficial pentru configurarea Quest Link-ului în caz că întâmpinați probleme.

Pașii pentru configurarea Air Link-ului nu sunt obligatorii. Puteți folosi Quest Link la fel de bine în oricare din cele 2 moduri (cablu, wireless).

Găsiți aici pașii oficial pentru configurarea Quest Link-ului în caz că întâmpinați probleme.

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.

🎮 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!

Configurare Unity

În cazul în care nu vă apare acest meniu, sau dacă sunt actualizări ale acestuia, stergeți din proiect folder-ul Assets → Project Setup → CustomXRPluginProvider si reimportați ultima versiune a pachetului IRVA_ProjectSetup_XRPluginProviderController, care se găsește în folder-ul UnityPackages din folder-ul root al proiectului, după care restartați Unity.

Petru a confirma comunicarea corectă între Meta Quest App / Quest Link / Steam VR, verificați dacă în fereastra de SteamVR vă apar cele 3 iconițe colorate.

Nice work 🎉! Sunteți acum în modul PC VR!

Testare scene sample

Setup laborator

În continuare veți lucra într-o scenă dedicată în care veți învăța elementele de bază utilizate în acest SDK, anume veți face setup unui mecanism de teleportare, veți integra obiecte interactibile precum și câteva interacțiuni fizice care se pot realiza cu acestea.

Import schelet laborator

Această scenă conține un set de platorme, mese pe care sunt plasate deja câteva interactibile, precum și un lansator de mingi, pe care-l va trebui să-l folosiți în continuare.

Mecanica de teleportare

Deplasarea în spațiile VR este o problemă care poate fi destul de ușor rezolvată destul de ușor prin teleportarea la anumite puncte fixe - în general spațiul fizic de care dispunem nu este în concordanță cu dimeniunea spațiului virtual, așadar deplasarea (prin mers) nu reprezintă de cele mai multe ori o soluție fezabilă.

Pe lângă motivul prezentat anterior, de ce credeți că deplasarea în VR (de ex. prin folosirea movement stick-urilor de pe controller) nu este o opțiune favorabilă?

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ă:

Î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.

Boxing bag

În prefab-urile include în scheletul de laborator veți găsi [BoxingBag], un sac de box configurat pentru a răspunde interacțiunilor fizice.

Aveți deja câteva sunete incluse în scheletul de laborator.

Obiecte interactible. Butoane

În prefab-urile include în scheletul de laborator veți găsi [InteractableButton], care este deja configurat pentru a răspunde input-ului de la user.

Task-uri

  1. 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
  2. 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ă
    • Integrați în scenă un obiect de tip Teleporting
    • Integrați în scenă mai multe obiecte de tip TeleportPoint, poziționate după plac, dar cel puțin unul pe platforma superioară (între mese)
  3. 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)
    • Completați TODO-urile din script-ul BoxingBagPunchStrengthController
      • Calculați cât de puternică este lovitura
      • 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
  4. 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])
    • 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
  5. [✨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