Differences

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

Link to this comparison view

irva:laboratoarevr:htcvive [2025/09/30 11:14]
maria_anca.balutoiu [Adăugarea unui Tracker]
irva:laboratoarevr:htcvive [2025/09/30 11:55] (current)
maria_anca.balutoiu
Line 1: Line 1:
-===== Laboratorul ​Bonus. HTC Vive =====+===== Laborator VR Bonus. HTC Vive =====
 **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. **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.
 +
 +**HTC Vive** este cunoscut pentru acuratețea sistemului său de **tracking** pe bază de **base stations**, care oferă o precizie și stabilitate net superioare multor alte căști VR. Aceste stații emit fascicule laser care sunt detectate de senzori integrați în cască și controllere,​ permițând reconstrucția poziției și orientării în spațiu cu o eroare minimă, chiar și în mișcări foarte rapide sau complexe. În comparație,​ multe căști VR standalone se bazează pe **inside-out tracking** (cum este și cazul **Meta Quest**), adică pe camerele integrate în dispozitiv, care pot fi influențate de iluminare, de lipsa reperelor vizuale sau de poziționarea mâinilor în afara câmpului vizual. Astfel, HTC Vive reușește să asigure o urmărire constantă, fluidă și de înaltă acuratețe, motiv pentru care este preferat în aplicații unde fiabilitatea mișcărilor este esențială — de la simulări profesionale până la cercetare și gaming competitiv.
   
 ==== Hardware ==== ==== Hardware ====
Line 17: Line 19:
     
 {{ :​irva:​laboratoare:​htcviveaccessories.png?​700 |}} {{ :​irva:​laboratoare:​htcviveaccessories.png?​700 |}}
- 
 ==== Software ==== ==== Software ====
 === SteamVR === === SteamVR ===
Line 61: Line 62:
  
 {{ :​irva:​laboratoare:​htcvivetrackerindex.png?​300 |}} {{ :​irva:​laboratoare:​htcvivetrackerindex.png?​300 |}}
-===== Tasks =====  +==== Tasks ==== 
-<note important>​Setup-ul pentru SteamVR in Unity a fost deja facut in proiectul suport (https://​github.com/​Andrei-Lapusteanu/​IRVA_VR). Nu uitati sa luati ultimele update-uri!</​note>​ +
-  - Realizați setup-ul necesar rularii proiectului in VR: Update repository, instalare SteamVR (pachet in Unity), conexiune hardware intre casca si calculator. Veti avea de implementat 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: +
- +
-  * Folosind oricare dintre cele doua butoane portocalii de pe mese puteti instantia un proiectil care este lansat in directia voastra. Implementati si adaugati in scena 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. +
- +
-<​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.   - 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 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 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ă.   - Adăugați o reprezentare vizuală a tracker-ului HTC Vive. Observați cum se mișcă în scenă.
--------- +  ​- Realizați ​un setup în care să puteți compara tracking-ul în HTC Vive (foarte precis datorită base station-urilor) în comparație cu Meta Quest (care nu necesită hardware extern)Pentru asta puteți crea 2 scene: scena care va rula pe căști (și va trimite ​poziția și orientarea ​headset-ului) și scena în care se va putea vizualiza live mișcarea căștilorPentru ușurințăputeți realiza o conexiune UDP (dacă atât căștile, cât și PC-ul se află în aceiași rețea), astfel: 
-  ​- Realizați ​conexiunea UDP dintre aplicația VR șaplicația AR. + 
-  ​Reprezentați axele obiectului din aplicația Desktop ​care reprezintă dispozitivul mobil. +<note warning>​Dacă în cazul **Meta Quest** este necesar un build de **Android**,​ în cazul **HTC Vive** (care este în permanență conectat la calculator) build-ul care va trebui făcut este de **Windows**.</note> 
-  - 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. +<​code>​ 
-  - Pe aplicația Desktopmodificați poziția ​și orientarea obiectului ​care reprezintă telefonul mobil. +using System.Net;​ 
-</hidden>+using System.Net.Sockets;​ 
 +using System.Threading;​ 
 + 
 +public class UDPReceive : MonoBehaviour 
 +
 +    Thread receiveThread;​ 
 +    UdpClient client; 
 +    private int port; 
 + 
 +    public void Start() 
 +    { 
 +        /* Set a port to listen to (same port you will use on the headset) */ 
 +        port = 0; 
 +        /* Setup UDP for receiving data */ 
 +        receiveThread = new Thread(new ThreadStart(ReceiveData));​ 
 +        receiveThread.IsBackground = true; 
 +        receiveThread.Start();​ 
 +    } 
 + 
 +    /* Receive messages via UDP */ 
 +    private void ReceiveData() 
 +    { 
 +        client = new UdpClient(port);​ 
 + 
 +        while (true) 
 +        { 
 +            try 
 +            { 
 +                IPEndPoint anyIP = new IPEndPoint(IPAddress.Any,​ 0); 
 +                byte[] data = client.Receive(ref anyIP); 
 + 
 +                string text = Encoding.UTF8.GetString(data);​ 
 +                ParseText(text);​ 
 + 
 +            } 
 +            catch (Exception err) 
 +            { 
 +                print(err.ToString());​ 
 +            } 
 +        } 
 +    } 
 + 
 +    void OnDisable() 
 +    { 
 +        if (receiveThread != null) 
 +            receiveThread.Abort();​
  
-<​hidden>​ +        client.Close();​ 
-<note important>​Nu s-a reușit portarea în întregime a feature-urilor ce țin de Google Cardboard în proiectul nostru încă :). Pagina are caracter temporar.</note>+    } 
 +} 
 +</code>
  
-Link catre proiect VR (de portat): https://​github.com/​Andrei-Lapusteanu/​3D-UPB-2021-XR-Workshop+<​code>​ 
 +using System.Net; 
 +using System.Net.Sockets;​ 
 +using System.Threading;​
  
-Explicații și todo-uri sunt prezentate aicihttps://​github.com/​Andrei-Lapusteanu/​3D-UPB-2021-XR-Workshop/​tree/​master/​3D-UPB-2021-VirtualReality+public class UDPSend ​MonoBehaviour 
 +
 +    private string IP; 
 +    private int port; 
 +    IPEndPoint remoteEndPoint;​ 
 +    UdpClient client;
  
-<​note>​Este posibil ca unele todo-uri să fie modificate ​(simplificate)</note>+    public void Start() 
 +    { 
 +        ​/* Set the IP of your computer */ 
 +        IP = "​127.0.0.1";​ 
 +        /* Set a port to send messages to. You can use 1098 */ 
 +        port = 0; 
 +        /* Setup UDP connection for sending messages */ 
 +        remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP),​ port); 
 +        client = new UdpClient();​ 
 +    }
  
-Totuși, puteți vizuaiza work in progress-ul pentru portare aici: https://github.com/​Maria-Anca-Balutoiu/​IRVA/​tree/​L7-VR-GoogleCardboard, (branch "​**L7-VR-GoogleCardboard**"​)+    ​/* Send data via UDP */ 
 +    private void SendMessage(string message) 
 +    { 
 +        try 
 +        { 
 +            byte[] data = Encoding.UTF8.GetBytes(message);​ 
 +            client.Send(datadata.Length,​ remoteEndPoint);​ 
 +        } 
 +        catch (Exception err) 
 +        { 
 +            print(err.ToString())
 +        } 
 +    }
  
-<​note>​ Din link-ul de explicații nu funcționează încă realizarea cu succes a build-ului pe telefon ​(așadar secțiunile 8 și 9)</note> +    public void Update() 
-</hidden>+    { 
 +        ​/* Send data to the tracking app */ 
 +        SendMessage("​Hello world!"​);​ 
 +    } 
 +} 
 +</code>
  
irva/laboratoarevr/htcvive.1759220099.txt.gz · Last modified: 2025/09/30 11:14 by maria_anca.balutoiu
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