Skip to content

CGVGroup/sa-readiness-unity

 
 

Repository files navigation

Progetto di Tesi - Sense of Agency [Applicazione VR]

Progetto di tesi per la laurea magistrale di ingegneria informatica (Grafica e Multimedia) del Politecnico di Torino.

Il progetto, sviluppato in collaborazione con il ContExp Lab dell'Università di Torino, dal titolo Sense of Agency and ERP correlates on delayed VR si pone come obiettivo quello di studiare il Sense of Agency tramite l'ERP all'interno di un ambiente virtuale nel quale viene introdotto un delay.

All'interno di questo repository vi è il codice sorgete dell'ambiente virtuale, sviluppato utilizzando il game engine Unity. È possibile utilizzarlo su un qualsiasi visore di VR immersivo che supporti lo standard OpenXR (come ad esempio il Meta Quest 2 utilizzato in questa sperimentazione).

Info utili

Gestione connessioni

Le richieste inviate dal software di gestione vengono processate dal componente NetworkManager, il quale inizializza un server TCP sulla porta 8080 e rimane in ascolto di eventuali richieste.

Sessione sperimentale

La sessione sperimentale viene gestite dal componente SessionManager (singleton). Questo si occupa di gestire la pressione del pulsante, i tempi di attesa e lo spawn dei target. Si occupa di applicare i parametri specificati per il blocco sperimentale attualmente in esecuzione (delay e mirroring).

Applicazione delay e mirroring

Nell'ambiente virtuale è presente il game object HandVisualizer (MainScene > XR Origin > HandVisualizer) con il componente script HandVisualizer. Questo aggiunge alla scena gli oggetti mano, andando ad applicarne posizione e rotazione basandosi sui dati di tracking del visore. Gli oggetti mano sono i prefab RighHand e LeftHand che vengono aggiunti alla scena ma senza la mesh.

I prefab RighHand e LeftHand possiedono lo script HandTrackedController che ha il compito di gestire il buffer utilizzato per l'applicazione del delay, inserendo le nuove posizione e recuperando i dati sulla posizione affetta da delay e dai possibili mirroring abilitati. La posizione e rotazione definitiva, recuperata e processata dal buffer, viene poi applicata agli oggetti mano visibili all'interno della scena. Questi si trovano in (MainScene > XR Origin > HandVisualizer > LeftHand / RightHand).

Gli oggetti mano vengono recuperati del HandTrackedController tramite i tag specificati come parametri dello script.

Rissumendo

  1. Il componente HandVisualizer recupera POS e ROT ad ogni frame dal sistema handtracking e li applica ai prefab RightHand e LeftHand non visibili all'interno della scena (opzione draw mesh disabilitata)
  2. I prefab RightHand e LeftHand gestiscono il buffer, processano posizione e rotazione in base ai mirroring abilitati
  3. Gli oggetti mano visibili nella scena (children del game object XR Origin > HandVisualizer) vengono recuperati tramite il tag e ad essi viene applicata posizione e rotazione processata nel passaggio precedente

About

Applicazione ambiente VR per il progetto di tesi "Sense of Agency and ERP correlates on delayed VR"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 87.5%
  • C 12.4%
  • Other 0.1%