aframe
Controlli (componente)
Ricerca…
introduzione
I controller sono fondamentali per immergere le persone in un'applicazione VR. Il potenziale della VR non viene soddisfatto senza di essi, ovvero i controller che forniscono sei gradi di libertà (6DoF). Con i controller, le persone possono raggiungere e circondare la scena e interagire con gli oggetti con le loro mani.
A-Frame fornisce componenti per i controller di tutto lo spettro supportati dai rispettivi browser WebVR tramite l'API Web di Gamepad. Ci sono componenti per i controller Vive, Oculus Touch, Daydream e GearVR.
Osservazioni
È possibile che tu debba abilitare gamepadextentions. Potresti farlo seguendo questa procedura:
- Su Chrome: passa a
chrome://flags
- Su Firefox: vai a
about:config
- Su IE: vai a Editor criteri di gruppo sul desktop
- Su Opera: vai
opera:config
- On Edge: naviga per
about:flags
Controlli Wasd
Il componente wasd-controls controlla un'entità con i tasti della tastiera W , A , S e D o delle frecce. Il componente wasd-controls
è comunemente associato a un'entità con il componente della videocamera.
<a-entity camera look-controls wasd-controls></a-entity>
Per le tastiere azerty, puoi usare i tasti Z , Q , S e D
Guarda i controlli
Il componente look-controls:
- Ruota l'entità quando ruotiamo un display VR montato sulla testa (HMD).
- Ruota l'entità quando si fa clic-trascinare il mouse.
- Ruota l'entità quando si tocca e trascina il touchscreen.
Il componente look-controls viene solitamente utilizzato insieme al componente della videocamera.
<a-entity camera look-controls></a-entity>
Avvertenze
Se si desidera creare il proprio componente per i controlli look, sarà necessario copiare e incollare i bit di tracciamento HMD nel componente. In futuro, potremmo avere un sistema che consente alle persone di creare più facilmente i loro controlli.
Aggiungere lo sguardo al cursore
Per questo è necessario aggiungere un componente del cursore alla fotocamera
<a-scene>
<a-camera>
<a-cursor></a-cursor>
<!-- Or <a-entity cursor></a-entity> -->
</a-camera>
</a-scene>
Ulteriori informazioni che è possibile trovare sull'argomento del cursore (componente) .
Comandi a mano
A-Frame fornisce un'implementazione per supportare più tipi di controller 6DoF (Vive, Oculus Touch) tramite il componente di controllo manuale. Il componente di controllo manuale è principalmente per i controller 6DoF poiché è orientato verso interazioni a livello di spazio, come ad esempio l'acquisizione di oggetti. Il componente di controllo manuale funziona su entrambi i controller Vive e Oculus Touch:
Impostazione del componente vive-controls e oculus-touch-controls
Sovrascrivere i modelli di controller con un modello di mano semplice
Mappatura degli eventi specifici Vive-specifici e Oculus Touch per passare eventi e gesti (ad esempio, gripdown e triggerdown a thumbup)
Per aggiungere il componente di controllo manuale:
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Sfortunatamente, non esiste ancora un componente controller 3DoF che estrae bene tutti i tipi di controller 3DoF (es. Daydream, GearVR). Potremmo creare un controller personalizzato che funzioni con entrambi i controller. Sarebbe abbastanza facile da coprire poiché i controller 3DoF non offrono molte possibilità di interazione (cioè, solo il tracking rotazionale con un touchpad).
I comandi manuali danno le mani tracciate (usando un modello prescritto) con gesti animati. i controlli manuali avvolgono i componenti vive-controls e oculus-touch-controls, che a loro volta avvolgono il componente dei controlli tracciati. Il componente offre eventi extra e gestisce animazioni e pose a mano.
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Controlli tracciati
Il componente dei controlli tracciati è il componente del controller di base di A-Frame che fornisce le basi per tutti i componenti del controller di A-Frame. Il componente dei controlli tracciati:
Afferra un oggetto Gamepad dall'API Gamepad con un ID o prefisso.
Applica la posizione (posizione e orientamento) dall'API del gamepad per leggere il movimento del controller.
Cerca i cambiamenti nei valori dei pulsanti dell'oggetto Gamepad per fornire eventi quando i pulsanti vengono premuti o toccati e quando gli assi ei touchpad vengono modificati (ad esempio, a
buttonchanged
axischanged
,buttonchanged
,buttondown
,buttonup
,touchstart
,touchend
-touchend
).
Tutti i componenti del controller di A-Frame si basano sul componente dei controlli tracked-controls
da:
Impostare il componente dei controlli tracciati sull'entità con l'ID gamepad appropriato (ad es. Oculus Touch (a destra)). Ad esempio, il componente vive-controls lo fa
el.setAttribute('tracked-controls', {idPrefix: 'OpenVR'})
tracked-controls
verranno quindi collegati all'oggetto Gamepad appropriato per fornire pose ed eventi per l'entità.Astrazione degli eventi forniti dai controlli tracciati. gli eventi dei controlli tracciati sono di basso livello; sarebbe stato difficile per noi dire quali pulsanti erano premuti basandoci su quegli eventi, perché dovevamo conoscere in anticipo le mappature dei pulsanti. I componenti del controller possono conoscere in anticipo i mapping per i rispettivi controller e fornire più eventi semantici come
triggerdown
oxbuttonup
.Fornire un modello.
tracked-controls
soli non forniscono alcun aspetto. I componenti del controller possono fornire un modello che mostra feedback visivo, gesti e animazioni quando i pulsanti vengono premuti o toccati. I componenti del controller che seguono vengono attivati solo se rilevano che il controller viene rilevato e visto come connesso nell'API del gamepad.
I tracked-controls
interfacce a componenti con controller cingolati. tracked-controls utilizza l'API Gamepad per gestire i controller tracciati, ed è astratto dal componente dei controlli manuali, nonché dai componenti vive-controls e oculus-touch-controls. Questo componente sceglie il controller appropriato, applica la posa all'entità, osserva lo stato dei pulsanti ed emette gli eventi appropriati.
Si noti che a causa di recenti modifiche specifiche del browser, i controller Vive possono essere restituiti dall'API Gamepad con valori ID di "OpenVR Gamepad" o "OpenVR Controller" , quindi è consigliabile utilizzare idPrefix
per i controller Vive / OpenVR.
<a-entity tracked-controls="controller: 0; idPrefix: OpenVR"></a-entity>
Controller 3Dof e 6Dof
Aggiunta di controller 3DoF
I controller con 3 gradi di libertà (3DoF) sono limitati al tracciamento rotazionale. I controller 3DoF non hanno tracciamento posizionale, il che significa che non possiamo raggiungere o muovere la mano avanti e indietro o su e giù. Avere un controller con solo 3DoF è come avere una mano e un polso senza un braccio. Maggiori informazioni sui gradi di libertà per la realtà virtuale.
I componenti del controller 3DoF forniscono il tracciamento rotazionale, un modello predefinito che combacia con l'hardware reale e gli eventi per astrarre le mappature dei pulsanti. I controller per Google Daydream e Samsung GearVR hanno 3DoF e supportano entrambi un controller per una sola mano.
Controller Daydream
Il componente di controllo daydream si interfaccia con i controller Daydream di Google. Comprende il componente dei controlli tracciati aggiungendo mappature dei pulsanti, eventi e un modello di controller Daydream che evidenzia i pulsanti toccati e / o premuti (trackpad).
Abbina il controller Daydream se presente, indipendentemente dalla mano.
<a-entity daydream-controls></a-entity>
Abbina il controller Daydream se presente e per la mano specificata.
<a-entity daydream-controls="hand: left"></a-entity>
<a-entity daydream-controls="hand: right"></a-entity>
GearVR-controllori
Il componente gearvr-controls si interfaccia con i controller VR Samsung / Oculus Gear. Comprende il componente dei controlli tracciati aggiungendo mappature dei pulsanti, eventi e un modello di controller Gear VR che evidenzia i pulsanti toccati e / o premuti (trackpad, trigger).
<!-- Match Gear VR controller if present, regardless of hand. -->
<a-entity gearvr-controls></a-entity>
<!-- Match Gear VR controller if present and for specified hand. -->
<a-entity gearvr-controls="hand: left"></a-entity>
<a-entity gearvr-controls="hand: right"></a-entity>
Aggiunta di controller 6DoF
I controller con 6 gradi di libertà (6DoF) hanno entrambi il tracking rotazionale e posizionale. A differenza dei controller con 3DoF che sono vincolati all'orientamento, i controller con 6DoF sono in grado di muoversi liberamente nello spazio 3D. 6DoF ci permette di raggiungere in avanti, dietro le nostre spalle, muovere le mani sul nostro corpo o vicino al nostro viso. Avere 6DoF è come la realtà in cui abbiamo mani e braccia. 6DoF si applica anche alle cuffie e ai tracker aggiuntivi (ad es. Piedi, puntelli). Avere 6DoF è un minimo per fornire un'esperienza VR veramente immersiva.
I componenti del controller 6DoF forniscono un monitoraggio completo, un modello predefinito che combacia con l'hardware reale e gli eventi per astrarre i mapping dei pulsanti. HTC Vive e Oculus Rift con Touch forniscono 6DoF e controller per entrambe le mani. HTC Vive fornisce anche tracker per il tracciamento di oggetti aggiuntivi nel mondo reale in VR.
Controller Vive
Il componente vive-controls si interfaccia con i controller / bacchette HTC Vive. Incorpora il componente dei controlli tracciati aggiungendo mappature dei pulsanti, eventi e un modello di controller Vive che evidenzia i pulsanti premuti (trigger, grip, menu, sistema) e il trackpad.
<a-entity vive-controls="hand: left"></a-entity>
<a-entity vive-controls="hand: right"></a-entity>
Controller tattili Oculus
Il componente oculus-touch-controls si interfaccia con i controller Oculus Touch. Comprende il componente dei controlli tracciati durante l'aggiunta di mappature dei pulsanti, eventi e un modello di controller Touch.
<a-entity oculus-touch-controls="hand: left"></a-entity>
<a-entity oculus-touch-controls="hand: right"></a-entity>
Controllo del mouse
I controlli del mouse sono supportati solo al di fuori del modus VR e potrebbero essere utilizzati per i giochi senza HMD. Per ulteriori informazioni sui controlli del mouse, è possibile trovare nell'esempio del cursore del mouse .
<a-scene>
<a-entity camera look-controls mouse-cursor>
</a-scene>