Differences

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

Link to this comparison view

irva:laboratoarevr:03 [2024/10/12 21:19]
andrei.lapusteanu Finished V1
irva:laboratoarevr:03 [2024/10/29 12:34] (current)
andrei.lapusteanu typos
Line 1: Line 1:
 ====== Laborator VR 03. SteamVR. Advanced input ====== ====== Laborator VR 03. SteamVR. Advanced input ======
  
-În acest laborator vom studia câteva aspecte mai avansate legate de input - cum îl putem citi în cod, cum ne putem defini acțiuni ​noi / custom - veți reuni aceste aspecte în implementarea unui gravity gun!+În acest laborator vom studia câteva aspecte mai avansate legate de input - cum îl putem citi în cod, cum ne putem defini acțiuni custom - veți reuni aceste aspecte în implementarea unui gravity gun!
  
 <note warning> <note warning>
Line 46: Line 46:
   * **MovementOnFoot** pentru mișcare pedestră (WASD pe tastatură sau joystick pe un controller)   * **MovementOnFoot** pentru mișcare pedestră (WASD pe tastatură sau joystick pe un controller)
   * **MovementInCar** pentru condusul unei mașini (**aceleași taste WASD** pe tastatură sau joystick pe un controller, dar într-un alt context!)   * **MovementInCar** pentru condusul unei mașini (**aceleași taste WASD** pe tastatură sau joystick pe un controller, dar într-un alt context!)
-  * **MovementInBoat** pentru navigarea cu o barcă.+  * **MovementInBoat** pentru navigarea cu o barcă
  
 O **acțiune** reprezintă o interacțiune definită de utilizator care poate fi activată prin diverse tipuri de input-uri. Acțiunile se pot lega la una sau mai multe intrări fizice printr-un **binding**. O **acțiune** reprezintă o interacțiune definită de utilizator care poate fi activată prin diverse tipuri de input-uri. Acțiunile se pot lega la una sau mai multe intrări fizice printr-un **binding**.
Line 95: Line 95:
 ===== Import schelet laborator ===== ===== Import schelet laborator =====
  
-  * Importați ultima versiune a pachetului ''​WIP_NAME''​ care se găsește în folder-ul **UnityPackages** din folder-ul root al proiectului+  * Importați ultima versiune a pachetului ''​IRVA_L3_VR_SteamVR_Skeleton''​ care se găsește în folder-ul **UnityPackages** din folder-ul root al proiectului
   * Folder-ul **Assets -> L3_VR_SteamVR_Advanced** conține asset-urile suport pentru acest laborator. Deschideți scena ''​L3_VR_SteamVR_GravityGun''​   * Folder-ul **Assets -> L3_VR_SteamVR_Advanced** conține asset-urile suport pentru acest laborator. Deschideți scena ''​L3_VR_SteamVR_GravityGun''​
  
Line 129: Line 129:
         //  - `SteamVR_Input_Sources` can be used to set a specific device to read from. In this case any device which has this action.         //  - `SteamVR_Input_Sources` can be used to set a specific device to read from. In this case any device which has this action.
         var grabPinchState = SteamVR_Actions._default.GrabPinch.GetState(SteamVR_Input_Sources.Any);​         var grabPinchState = SteamVR_Actions._default.GrabPinch.GetState(SteamVR_Input_Sources.Any);​
-        Debug.Log($"​[SteamVRInputActionsTesting] grabPinchState = {grabPinchState}"​);​+        Debug.Log($"​[SteamVRInputActionsTesting] ​Polling: ​grabPinchState = {grabPinchState}"​);​
     }     }
 } }
Line 141: Line 141:
 </​note>​ </​note>​
  
-<​GIF_WIP>​+{{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_l3_1.gif?​500 |}}
  
 ==== Citire input folosind evenimente (metodă recomandată) ==== ==== Citire input folosind evenimente (metodă recomandată) ====
Line 158: Line 158:
     ​     ​
     // Method called when `onChange` from the `GrabPinch` is invoked.     // Method called when `onChange` from the `GrabPinch` is invoked.
-    private void OnGrabPinchChanged(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState)+    private void OnGrabPinchChanged(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool grabPinchState)
     {     {
-        Debug.Log($"​[SteamVRInputActionsTesting] ​fromAction ​= {fromAction},​ fromSource = {fromSource},​ newState = {newState}");+        Debug.Log($"​[SteamVRInputActionsTesting] ​Events: grabPinchState ​= {grabPinchState}");
     }     }
 } }
Line 172: Line 172:
 </​note>​ </​note>​
  
-<​GIF_WIP>​+{{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_l3_2.gif?​500 |}}
  
 ==== Task-ul vostru ==== ==== Task-ul vostru ====
Line 195: Line 195:
  
 <note tip> <note tip>
-  * Ca să legăm informația învățată:​ Acest **Grab Pinch** este o **acțiune** binded pe butonul de **Trigger**,​ conținută în **action set-ul default** +  * Ca să legăm informația învățată:​ Acest **Grab Pinch** este o **acțiune** binded pe butonul de **Trigger**,​ conținută în **action set-ul default** 
-  * În spate, SteamVR va genera cod care ne permite să referențiem în script-urile noastre aceste elemente.+  * În spate, SteamVR va genera cod care ne permite să referențiem în script-urile noastre aceste elemente
   * Pe scurt, acesta este motivul pentru care putem referenția în cod ''​SteamVR_Actions._default.GrabPinch''​   * Pe scurt, acesta este motivul pentru care putem referenția în cod ''​SteamVR_Actions._default.GrabPinch''​
 </​note>​ </​note>​
Line 235: Line 235:
  
 {{ :​irva:​laboratoarevr:​irva_2024_vr_l3_steamvrbindings6.png?​400 |}} {{ :​irva:​laboratoarevr:​irva_2024_vr_l3_steamvrbindings6.png?​400 |}}
- 
-<​GIF_WIP>​ 
  
 Awesome 🎉! În acest moment toată logica necesară acestei acțiuni (și al binding-ului) este finalizată. Awesome 🎉! În acest moment toată logica necesară acestei acțiuni (și al binding-ului) este finalizată.
Line 245: Line 243:
   * Puteți utilza oricare din cele două metode prezentate (polling via ''​Update''​ sau folosind evenimente)   * Puteți utilza oricare din cele două metode prezentate (polling via ''​Update''​ sau folosind evenimente)
  
-<​GIF_WIP>​+{{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_l3_3.gif?​500 |}}
  
 ===== Rendering stereo ===== ===== Rendering stereo =====
Line 266: Line 264:
 Pentru a aplica cunoștințele pe care le-ați învățat pe parcursul acest laborator, va trebuie să finalizați implementarea unui **gravity gun**. Pentru a aplica cunoștințele pe care le-ați învățat pe parcursul acest laborator, va trebuie să finalizați implementarea unui **gravity gun**.
  
-Logic de funcționare a acestui **gravity gun** este deja implimentată,​ voi va trebui să configurați și să legați input-ului necesar folosind **acțiuni** și **binding-uri**.+Logica ​de funcționare a acestui **gravity gun** este deja implimentată,​ voi va trebui să configurați și să legați input-ului necesar folosind **acțiuni** și **binding-uri**.
  
-Obiectul **[GracityGun]** din scena suport este de tip **Throwable**,​ așadar îi puteți face grab. +Obiectul **[GravityGun]** din scena suport este de tip **Throwable**,​ așadar îi puteți face grab. 
  
 <note tip> <note tip>
Line 282: Line 280:
   * Dacă un obiect este snapped, iar butonul de **trigger** este **apăsat (click)**, obiectul este **propulsat (throw)**   * Dacă un obiect este snapped, iar butonul de **trigger** este **apăsat (click)**, obiectul este **propulsat (throw)**
  
-<​GIF_WIP>​+{{ :​irva:​laboratoarevr:​irva_2024_vr_steamvr_l3_4.gif?​500 |}}
  
 ==== Detalii implementare ==== ==== Detalii implementare ====
irva/laboratoarevr/03.1728757192.txt.gz · Last modified: 2024/10/12 21: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