Zoeken…


Invoering

Controllers zijn van vitaal belang om mensen onder te dompelen in een VR-toepassing. Het potentieel van VR wordt zonder hen niet benut, namelijk controllers die zes vrijheidsgraden bieden (6DoF). Met controllers kunnen mensen de scène bereiken en met hun handen communiceren over objecten.

A-Frame biedt componenten voor controllers in het hele spectrum zoals ondersteund door hun respectieve WebVR-browsers via de Gamepad Web API. Er zijn componenten voor Vive-, Oculus Touch-, Daydream- en GearVR-controllers.

Opmerkingen

Het is mogelijk dat u gamepadextentions moet inschakelen. U kunt dat doen met behulp van deze stappen:

  • Op Chrome: blader naar chrome://flags
  • Op Firefox: blader naar about:config
  • Op IE: Ga naar Groepsbeleid-editor op uw bureaublad
  • Op Opera: blader naar opera:config
  • On Edge: blader naar about:flags

Wasd-bedieningselementen

De component wasd-controls bestuurt een entiteit met de W , A , S en D of pijltoetsen. De component wasd-controls wordt meestal aan een entiteit gekoppeld met de camera-component.

<a-entity camera look-controls wasd-controls></a-entity>

Voor azerty-toetsenborden kunt u de toetsen Z , Q , S en D gebruiken

Kijk controles

De component look-controls:

  • Roteert de entiteit wanneer we een VR-display op het hoofd draaien (HMD).
  • Roteert de entiteit wanneer we met de muis klikken en slepen.
  • Roteert de entiteit wanneer we het touchscreen aanraken / slepen.

De component look-controls wordt meestal naast de cameracomponent gebruikt.

<a-entity camera look-controls></a-entity>

Voorbehoud

Als u uw eigen component voor uiterlijkbesturingselementen wilt maken, moet u de HMD-trackingbits in uw component kopiëren en plakken. In de toekomst hebben we misschien een systeem waarmee mensen gemakkelijker hun besturingselementen kunnen maken.

Een blik aan de cursor toevoegen

Hiervoor moet u een cursorcomponent toevoegen aan uw camera

<a-scene>
  <a-camera>
    <a-cursor></a-cursor>
    <!-- Or <a-entity cursor></a-entity> -->
  </a-camera>
</a-scene>

Meer informatie over het onderwerp van de cursor (component) .

Handbediening

A-frame 0.x 0.3

A-Frame biedt een implementatie voor ondersteuning van meerdere typen 6DoF-controllers (Vive, Oculus Touch) via de component handbediening. De component handbediening is primair bedoeld voor 6DoF-controllers, omdat deze is gericht op interacties op ruimteschaal, zoals het grijpen van objecten. Het handbedieningsonderdeel werkt bovenop Vive- en Oculus Touch-controllers door:

  • Zowel de component vive-controls als oculus-touch-controls instellen

  • De controller-modellen vervangen door een eenvoudig handmodel

  • Vive-specifieke en Oculus Touch-specifieke gebeurtenissen toewijzen aan handgebeurtenissen en gebaren (bijvoorbeeld gripdown en triggerdown voor thumbup)

De component handbediening toevoegen:

<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>

Helaas is er nog geen 3DoF-controllercomponent die alle soorten 3DoF-controllers (dwz Daydream, GearVR) goed samenvat. We kunnen een aangepaste controller maken die met beide controllers werkt. Het zou vrij eenvoudig te dekken zijn, omdat 3DoF-controllers niet veel mogelijkheden bieden voor interactie (dwz alleen rotatie-tracking met een touchpad).

De handbediening geeft getraceerde handen (met een voorgeschreven model) met geanimeerde gebaren. handbedieningen wikkelt de componenten vive-controls en oculus-touch-controls, die op hun beurt de component met gevolgde controles omwikkelen. De component geeft extra evenementen en verwerkt handanimaties en poses.

<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>

Bijgehouden controles

A-frame 0.x 0.3

De component met tracked controls is de basiscontrollercomponent van A-Frame die de basis vormt voor alle controllercomponenten van A-Frame. Het onderdeel Tracked Controls:

  • Grijpt een Gamepad-object uit de Gamepad API met een ID of voorvoegsel.

  • Past pose (positie en oriëntatie) van de Gamepad API toe om de controllerbeweging te lezen.

  • Zoekt naar wijzigingen in de knopwaarden van het Gamepad-object om gebeurtenissen te bieden wanneer knoppen worden ingedrukt of aangeraakt en wanneer assen en touchpads worden gewijzigd (bijv. axischanged , buttonchanged , buttondown , buttonup , touchstart , touchend ).

Alle controllercomponenten van A-Frame zijn gebouwd bovenop de component met tracked-controls door:

  • De component met trackingscontroles instellen op de entiteit met de juiste Gamepad-ID (bijvoorbeeld Oculus Touch (rechts)). De component vive-controls bijvoorbeeld

    el.setAttribute('tracked-controls', {idPrefix: 'OpenVR'})
    

    tracked-controls zullen dan verbinding maken met het juiste Gamepad-object om pose en gebeurtenissen voor de entiteit te bieden.

  • Het abstraheren van de gebeurtenissen verzorgd door tracked-controls. gebeurtenissen met bijgehouden controles zijn van laag niveau; het zou moeilijk voor ons zijn om te bepalen welke knoppen werden ingedrukt op basis van die gebeurtenissen alleen, omdat we van tevoren de knoptoewijzingen moesten kennen. Controlleronderdelen kunnen vooraf de toewijzingen voor hun respectieve controllers kennen en zorgen voor meer semantische gebeurtenissen zoals triggerdown of xbuttonup .

  • Een model aanleveren. tracked-controls alleen biedt geen uiterlijk. Controllercomponenten kunnen een model bieden dat visuele feedback, gebaren en animaties toont wanneer knoppen worden ingedrukt of aangeraakt. De volgende controllercomponenten worden alleen geactiveerd als ze detecteren dat de controller wordt gevonden en gezien wordt als verbonden in de Gamepad API.

De tracked-controls componentinterfaces met tracked controllers. tracked-controls maakt gebruik van de Gamepad API om tracked-controllers te verwerken en wordt geabstraheerd door de componenten handbediening, alsmede de componenten vive-controls en oculus-touch-controls. Deze component kiest de juiste controller, past pose toe aan de entiteit, observeert de knoppenstatus en zendt passende gebeurtenissen uit.

Merk op dat vanwege recente browserspecifieke wijzigingen Vive-controllers kunnen worden geretourneerd door de Gamepad API met id-waarden van "OpenVR Gamepad" of "OpenVR Controller" , dus het gebruik van idPrefix voor Vive / OpenVR-controllers wordt aanbevolen.

<a-entity tracked-controls="controller: 0; idPrefix: OpenVR"></a-entity>

3Dof en 6Dof controllers

3DoF-controllers toevoegen

Controllers met 3 vrijheidsgraden (3DoF) zijn beperkt tot rotatietracking. 3DoF-controllers hebben geen positionele tracking, wat betekent dat we niet kunnen reiken of onze hand heen en weer of op en neer kunnen bewegen. Het hebben van een controller met alleen 3DoF is als het hebben van een hand en pols zonder arm. Lees meer over vrijheidsgraden voor VR.

De 3DoF-controllercomponenten bieden rotatietracking, een standaardmodel dat overeenkomt met de real-life hardware en gebeurtenissen om de knoptoewijzingen samen te vatten. De controllers voor Google Daydream en Samsung GearVR hebben 3DoF en beide ondersteunen slechts één controller voor één hand.

A-frame 0.x 0.6

Dagdroom controllers

De daydream-besturingscomponenten interfaces met de Google Daydream-controllers. Het verpakt het onderdeel met volgbesturing terwijl knoptoewijzingen, evenementen en een Daydream-controllermodel worden toegevoegd dat de aangeraakte en / of ingedrukte knoppen markeert (trackpad).

Match de Daydream-controller indien aanwezig, ongeacht de hand.

<a-entity daydream-controls></a-entity>

Match de Daydream-controller indien aanwezig en voor de opgegeven hand.

<a-entity daydream-controls="hand: left"></a-entity>
<a-entity daydream-controls="hand: right"></a-entity>

GearVR-controllers

De gearvr-besturingscomponenten interfaces met de Samsung / Oculus Gear VR-controllers. Het verpakt het onderdeel met volgbesturing terwijl knoptoewijzingen, gebeurtenissen en een Gear VR-controllermodel worden toegevoegd dat de aangeraakte en / of ingedrukte knoppen markeert (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>

6DoF-controllers toevoegen

Controllers met 6 vrijheidsgraden (6DoF) hebben zowel rotatie- als positionele tracking. In tegenstelling tot controllers met 3DoF die beperkt zijn tot oriëntatie, kunnen controllers met 6DoF vrij bewegen in 3D-ruimte. Met 6DoF kunnen we naar voren reiken, achter onze rug, onze handen over ons lichaam of dicht bij ons gezicht bewegen. Het hebben van 6DoF is als realiteit waarbij we beide handen en armen hebben. 6DoF is ook van toepassing op de headset en extra trackers (bijv. Voeten, rekwisieten). Het hebben van 6DoF is een minimum voor een echt meeslepende VR-ervaring.

De 6DoF-controllercomponenten bieden volledige tracking, een standaardmodel dat overeenkomt met de real-life hardware en gebeurtenissen om de knoptoewijzingen samen te vatten. HTC Vive en Oculus Rift met Touch bieden 6DoF en controllers voor beide handen. HTC Vive biedt ook trackers voor het volgen van extra objecten in de echte wereld naar VR.

A-frame 0.x 0.3

Vive-controllers

De componenten van vive-controls zijn gekoppeld aan de HTC Vive-controllers / -wands. Het omhult het onderdeel met volgbesturing terwijl knoptoewijzingen, gebeurtenissen en een Vive-controllermodel worden toegevoegd dat de ingedrukte knoppen (trigger, grip, menu, systeem) en trackpad markeert.

<a-entity vive-controls="hand: left"></a-entity>
<a-entity vive-controls="hand: right"></a-entity>
A-frame 0.x 0.5

Oculus touch-controllers

De oculus-touch-controls component-interfaces met de Oculus Touch-controllers. Het omhult het onderdeel met volgregelingen terwijl knoptoewijzingen, gebeurtenissen en een Touch-controllermodel worden toegevoegd.

<a-entity oculus-touch-controls="hand: left"></a-entity>
<a-entity oculus-touch-controls="hand: right"></a-entity>

Muisbesturing

Muisbedieningen worden alleen ondersteund buiten de VR-modus en kunnen worden gebruikt voor games zonder een HMD. Voor meer informatie over muisbesturing, kunt u vinden in het voorbeeld van de muiscursor .

<a-scene>
  <a-entity camera look-controls mouse-cursor>
</a-scene>


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow