aframe
Kontroller (komponent)
Sök…
Introduktion
Styrenheter är viktiga för att fördjupa människor i en VR-applikation. VR: s potential uppnås inte utan dem, nämligen styrenheter som ger sex frihetsgrader (6DoF). Med controllers kan människor nå ut och runt scenen och interagera med föremål med händerna.
A-Frame tillhandahåller komponenter för styrenheter över hela spektrumet som stöds av deras respektive WebVR-webbläsare genom Gamepad Web API. Det finns komponenter för Vive-, Oculus Touch-, Daydream- och GearVR-kontroller.
Anmärkningar
Det är möjligt att du måste aktivera gamepadextentions. Du kan göra det med de här stegen:
- På Chrome: bläddra till
chrome://flags
- På Firefox: bläddra till
about:config
- På IE: Gå till Group Policy Editor på skrivbordet
- På Opera: bläddra till
opera:config
- On Edge: bläddra till
about:flags
Wasd kontrollerar
Komponenten wasd-kontroller styr en enhet med tangenterna W , A , S och D eller piltangenterna. wasd-controls
är vanligtvis kopplad till en enhet med kamerakomponenten.
<a-entity camera look-controls wasd-controls></a-entity>
För azerty-tangentbord kan du använda Z- , Q- , S- och D- tangenter
Titta kontroller
Look-control-komponenten:
- Roterar enheten när vi roterar en VR-huvudmonterad display (HMD).
- Roterar enheten när vi klickar och dra musen.
- Roterar enheten när vi pekar och drar pekskärmen.
Look-kontrollkomponenten används vanligtvis tillsammans med kamerakomponenten.
<a-entity camera look-controls></a-entity>
förbehåll
Om du vill skapa din egen komponent för look-kontroller måste du kopiera och klistra in HMD-spårningsbitarna i din komponent. I framtiden kan vi ha ett system för att människor lättare kan skapa sina kontroller.
Lägger blicken till markören
För detta måste du lägga till en markörkomponent till din kamera
<a-scene>
<a-camera>
<a-cursor></a-cursor>
<!-- Or <a-entity cursor></a-entity> -->
</a-camera>
</a-scene>
Mer information kan du hitta om markören (komponent) ämnet.
Handkontroller
A-Frame tillhandahåller en implementering för att stödja flera typer av 6DoF-styrenheter (Vive, Oculus Touch) via handkontrollkomponenten. Handkontrollkomponenten är främst för 6DoF-styrenheter eftersom den är inriktad på rumsskalainteraktioner som att ta tag i föremål. Handkontrollkomponenten fungerar ovanpå både Vive- och Oculus Touch-styrenheter av:
Ställa in både vive-kontroller och oculus-touch-kontroller-komponenten
Överstyr kontrollmodellerna med en enkel handmodell
Kartlägga Vive-specifika och Oculus Touch-specifika händelser för händelsehändelser och gester (t.ex. gripdown och triggerdown till thumbup)
Så här lägger du till handkontrollkomponenten:
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Tyvärr finns det ännu inte en 3DoF-kontrollkomponent som abstraherar bra alla typer av 3DoF-styrenheter (dvs. Daydream, GearVR). Vi kan skapa en anpassad controller som fungerar med båda kontrollerna. Det skulle vara ganska lätt att täcka eftersom 3DoF-kontroller inte erbjuder mycket potential för interaktion (dvs. endast rotationsspårning med en pekplatta).
Handkontrollerna ger spårade händer (med en föreskriven modell) med animerade gester. handkontroller lindrar komponenterna för vive-kontroller och oculus-touch-kontroller, som i sin tur lindar komponenten med spårade kontroller. Komponenten ger extra händelser och hanterar handanimationer och poser.
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Spårade kontroller
Spårningskontrollkomponenten är A-Frames baskontrollkomponent som ger grunden för alla A-Rams styrenhetskomponenter. Spårningskontrollkomponenten:
Tar ett Gamepad-objekt från Gamepad-API: et med ett ID eller prefix.
Tillämpar pose (position och orientering) från Gamepad API för att läsa kontrollerens rörelse.
Letar efter förändringar i Gamepad-objektets knappvärden för att tillhandahålla händelser när knapparna trycks in eller vidröras och när axel och pekplattor ändras (dvs
axischanged
,buttonchanged
,buttondown
,buttonup
,touchstart
,touchend
).
Alla A-Frames styrenhetskomponenter bygger ovanpå tracked-controls
komponenten av:
Ställa in den spårade-kontrollkomponenten på enheten med rätt Gamepad-ID (t.ex. Oculus Touch (höger)). Till exempel gör vive-kontrollkomponenten det
el.setAttribute('tracked-controls', {idPrefix: 'OpenVR'})
tracked-controls
kommer sedan att ansluta till rätt Gamepad-objekt för att tillhandahålla posering och händelser för enheten.Abstraherar händelserna tillhandahållna av spårade kontroller. spårade kontroller händelser är låg nivå; Det hade svårt för oss att berätta vilka knappar som tryckts in baserat på dessa händelser ensamma eftersom vi skulle behöva veta knappkartläggningarna i förväg. Controllerkomponenter kan känna till kartorna i förväg för sina respektive styrenheter och ge mer semantiska händelser som
triggerdown
ellerxbuttonup
.Tillhandahålla en modell.
tracked-controls
ensam ger inte utseende. Controller-komponenter kan tillhandahålla en modell som visar visuell feedback, gester och animationer när knapparna trycks in eller vidrörs. Följande styrenhetskomponenter aktiveras endast om de upptäcker att styrenheten hittas och ses som ansluten i Gamepad API.
De tracked-controls
komponent gränssnitt med spårade styrenheter. spårade kontroller använder Gamepad API för att hantera spårade kontroller, och abstraheras av komponenten handkontroller såväl som komponenterna vive-kontroller och oculus-touch-kontroller. Denna komponent väljer lämplig styrenhet, tillämpar pose på enheten, observerar knapptillstånd och avger lämpliga händelser.
Observera att på grund av de senaste webbläsarspecifika förändringarna kan Vive-kontroller returneras av Gamepad API med ID-värden för antingen "OpenVR Gamepad" eller "OpenVR Controller" , så att använda idPrefix
för Vive / OpenVR-kontroller rekommenderas.
<a-entity tracked-controls="controller: 0; idPrefix: OpenVR"></a-entity>
3Dof- och 6Dof-kontroller
Lägga till 3DoF-kontroller
Styrenheter med 3 frihetsgrader (3DoF) är begränsade till rotationsspårning. 3DoF-kontroller har ingen positionsspårning vilket betyder att vi inte kan nå ut eller flytta handen fram och tillbaka eller upp och ner. Att ha en styrenhet med endast 3DoF är som att ha en hand och handled utan en arm. Läs mer om frihetsgrader för VR.
Komponenterna i 3DoF-kontrollen ger rotationsspårning, en standardmodell som matchar den verkliga hårdvaran och händelser för att abstrahera knappkartläggningarna. Styrenheterna för Google Daydream och Samsung GearVR har 3DoF, och båda har endast en kontroller för en hand.
Dagdrömkontrollanter
Dagdrömkontrollkomponenten gränssnitt med Google Daydream-kontroller. Den lindar spårade kontroller-komponenten medan du lägger till knappkartläggningar, händelser och en Daydream-kontrollmodell som belyser de berörda och / eller tryckta knapparna (styrplattan).
Matcha Daydream-kontrollen om den finns, oavsett hand.
<a-entity daydream-controls></a-entity>
Matcha Daydream-kontrollenheten om den finns och för den angivna handen.
<a-entity daydream-controls="hand: left"></a-entity>
<a-entity daydream-controls="hand: right"></a-entity>
GearVR-regulatorer
Gearvr-kontrollkomponenten gränssnitt med Samsung / Oculus Gear VR-styrenheter. Den lindar spårade kontroller-komponenten medan du lägger till knappkartläggningar, händelser och en Gear VR-kontrollmodell som belyser de berörda och / eller tryckta knapparna (styrplatta, 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>
Lägga till 6DoF-kontroller
Styrenheter med 6 frihetsgrader (6DoF) har både rotations- och positionsspårning. Till skillnad från styrenheter med 3DoF som är begränsade till orientering, kan styrenheter med 6DoF röra sig fritt i 3D-utrymme. 6DoF tillåter oss att räcka framåt, bakom ryggen, flytta händerna över vår kropp eller nära vårt ansikte. Att ha 6DoF är som verklighet där vi har både händer och armar. 6DoF gäller också headsetet och extra spårare (t.ex. fötter, rekvisita). Att ha 6DoF är ett minimum för att ge en verkligt uppslukande VR-upplevelse.
6DoF-styrenhetens komponenter ger full spårning, en standardmodell som matchar den verkliga hårdvaran och händelser för att abstrahera knappkartläggningarna. HTC Vive och Oculus Rift med Touch ger 6DoF och styrenheter för båda händerna. HTC Vive tillhandahåller också spårare för att spåra ytterligare objekt i den verkliga världen till VR.
Vive-kontroller
Komponenten vive-kontroller gränssnitt med HTC Vive-styrenheter / trollstavar. Den lindar spårade kontroller-komponenten medan du lägger till knappkartläggningar, händelser och en Vive-kontrollmodell som belyser de tryckta knapparna (trigger, grepp, meny, system) och trackpad.
<a-entity vive-controls="hand: left"></a-entity>
<a-entity vive-controls="hand: right"></a-entity>
Oculus touch-kontroller
Komponenterna för oculus-touch-kontroller gränssnitt med Oculus Touch-kontrollerna. Den lindar spårade kontroller-komponenten medan du lägger till knappkartläggningar, händelser och en Touch-kontrollmodell.
<a-entity oculus-touch-controls="hand: left"></a-entity>
<a-entity oculus-touch-controls="hand: right"></a-entity>
Muskontroll
Muskontroller stöds endast utanför VR-modus och kan användas för spel utan HMD. För mer information om muskontroller kan du hitta i musmarkörsexemplet .
<a-scene>
<a-entity camera look-controls mouse-cursor>
</a-scene>