Suche…


Einführung

Controller sind für das Eintauchen von Personen in eine VR-Anwendung unerlässlich. Das Potenzial von VR wird nicht ohne sie erfüllt, nämlich Controller mit sechs Freiheitsgraden (6DoF). Mit den Controllern können Personen die Szene erreichen und mit den Händen interagieren.

A-Frame bietet Komponenten für Controller im gesamten Spektrum, die von den jeweiligen WebVR-Browsern über die Gamepad-Web-API unterstützt werden. Es gibt Komponenten für Vive-, Oculus Touch-, Daydream- und GearVR-Controller.

Bemerkungen

Es ist möglich, dass Sie Gamepadextentions aktivieren müssen. Sie können dies mit diesen Schritten tun:

  • In Chrome: Navigieren Sie zu chrome://flags
  • Unter Firefox: Navigieren Sie zu " about:config
  • Unter IE: Wechseln Sie auf Ihrem Desktop zum Gruppenrichtlinien-Editor
  • Auf Opera: navigieren Sie zu opera:config
  • Am Rand: navigieren Sie zu about:flags

Wasd steuert

Die WASD-Steuerelemente steuern eine Entität mit den Tasten W , A , S und D oder den Pfeiltasten. Die Komponente wasd-controls mit der Kamerakomponente an eine Entität angehängt.

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

Für Azerty-Tastaturen können Sie die Tasten Z , Q , S und D verwenden

Siehe Steuerelemente

Die Look-Control-Komponente:

  • Dreht das Objekt, wenn wir ein VR-Display (HMD) drehen.
  • Dreht das Objekt, wenn Sie die Maus mit gedrückter Maustaste ziehen.
  • Dreht die Entität, wenn Sie den Touchscreen per Tastendruck ziehen.

Die Look-Control-Komponente wird normalerweise zusammen mit der Kamerakomponente verwendet.

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

Vorsichtsmaßnahmen

Wenn Sie eine eigene Komponente für Look-Steuerelemente erstellen möchten, müssen Sie die HMD-Tracking-Bits kopieren und in Ihre Komponente einfügen. In der Zukunft haben wir möglicherweise ein System, mit dem die Benutzer ihre Steuerelemente leichter erstellen können.

Blick zum Cursor hinzufügen

Dazu müssen Sie Ihrer Kamera eine Cursor-Komponente hinzufügen

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

Weitere Informationen finden Sie unter Cursor (Komponente) .

Handsteuerungen

A-Frame 0.x 0.3

A-Frame bietet eine Implementierung für die Unterstützung mehrerer Arten von 6DoF-Controllern (Vive, Oculus Touch) über die Handsteuerungskomponente. Die Handsteuerungskomponente ist in erster Linie für 6DoF-Steuerungen gedacht, da sie auf Interaktionen im Raummaßstab wie z. B. das Ergreifen von Objekten ausgerichtet ist. Die Handsteuerungskomponente funktioniert auf den Controllern von Vive und Oculus Touch durch:

  • Einstellen der Vive-Controls und der Oculus-Touch-Control-Komponente

  • Überschreiben der Controller-Modelle mit einem einfachen Handmodell

  • Zuordnen von vive-spezifischen und Oculus Touch-spezifischen Ereignissen zu Handereignissen und Gesten (z. B. Griffabzug und Triggerdown nach Daumen)

So fügen Sie die Handsteuerungskomponente hinzu:

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

Leider gibt es noch keine 3DoF-Controller-Komponente, die alle Arten von 3DoF-Controllern (z. B. Daydream, GearVR) gut abstrahiert. Wir könnten einen benutzerdefinierten Controller erstellen, der mit beiden Controllern funktioniert. Es wäre ziemlich einfach abzudecken, da 3DoF-Controller kein großes Interaktionspotenzial bieten (dh nur Rotationsverfolgung mit einem Touchpad).

Die Handsteuerung gibt nachverfolgte Hände (mit einem vorgeschriebenen Modell) mit animierten Gesten. Handsteuerungen umschließen die Komponenten für die vive-Steuerelemente und die Oculus-Touch-Steuerelemente, die wiederum die Komponente für die nachverfolgte Steuerelemente umschließen. Die Komponente bietet zusätzliche Ereignisse und behandelt Handanimationen und Posen.

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

Verfolgte Steuerelemente

A-Frame 0.x 0.3

Die Tracked-Control-Komponente ist die Basis-Controller-Komponente von A-Frame, die die Grundlage für alle Controller-Komponenten von A-Frame bildet. Die Tracked-Control-Komponente:

  • Ruft ein Gamepad-Objekt aus der Gamepad-API mit einer ID oder einem Präfix ab.

  • Wendet die Position (Position und Ausrichtung) der Gamepad-API an, um die Controller-Bewegung zu lesen.

  • Sucht nach Änderungen in den Schaltflächenwerten des Gamepad-Objekts, um Ereignisse anzuzeigen, wenn Schaltflächen gedrückt oder berührt werden und Achsen und Touchpads geändert werden ( axischanged . buttonchanged buttondown , buttonup , touchstart , touchend , buttonup , touchstart , touchend ).

Alle Controller-Komponenten von A-Frame bauen auf der tracked-controls Komponente auf:

  • Festlegen der Tracked-Control-Komponente für die Entität mit der entsprechenden Gamepad-ID (z. B. Oculus Touch (Right)). Zum Beispiel macht die vive-controls-Komponente dies

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

    tracked-controls dann eine Verbindung zum entsprechenden Gamepad-Objekt her, um Pose und Ereignisse für die Entität bereitzustellen.

  • Zusammenfassung der Ereignisse, die von nachverfolgten Steuerelementen bereitgestellt werden. Tracked-Control-Ereignisse sind auf niedrigem Niveau. Es wäre schwierig für uns zu erkennen, welche Schaltflächen aufgrund dieser Ereignisse alleine gedrückt wurden, da wir die Tastenzuordnungen vorher kennen mussten. Controller-Komponenten können die Zuordnungen für ihre jeweiligen Controller im Voraus kennen und mehr semantische Ereignisse wie triggerdown oder xbuttonup .

  • Modell zur Verfügung stellen. tracked-controls allein bieten kein Erscheinungsbild. Controller-Komponenten können ein Modell bereitstellen, das visuelles Feedback, Gesten und Animationen anzeigt, wenn Tasten gedrückt oder berührt werden. Die folgenden Controller-Komponenten werden nur aktiviert, wenn sie feststellen, dass der Controller in der Gamepad-API gefunden wurde und als verbunden erscheint.

Die tracked-controls Komponentenschnittstellen mit nachgeführt Controllern. Tracked-Controls verwenden die Gamepad-API zur Verarbeitung von Tracked-Controllern und werden von der Handsteuerungskomponente sowie den Komponenten Vive-Controls und Oculus-Touch-Controls abstrahiert. Diese Komponente wählt den geeigneten Controller aus, wendet die Position an die Entität an, überwacht den Status der Schaltflächen und gibt entsprechende Ereignisse aus.

Beachten Sie, dass aufgrund aktueller browserspezifischer Änderungen Vive-Controller möglicherweise von der Gamepad-API mit den ID-Werten "OpenVR Gamepad" oder "OpenVR Controller" zurückgegeben werden. idPrefix Verwendung von idPrefix für Vive / OpenVR-Controller empfohlen.

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

3Dof- und 6Dof-Controller

Hinzufügen von 3DoF-Controllern

Controller mit 3 Freiheitsgraden (3DoF) sind auf die Rotationsverfolgung beschränkt. 3DoF-Controller haben keine Positionsverfolgung, was bedeutet, dass wir die Hand weder hin- und herbewegen noch auf und ab bewegen können. Einen Controller mit nur 3DoF zu haben, ist wie eine Hand und ein Handgelenk ohne Arm. Lesen Sie mehr über die Freiheitsgrade für VR.

Die 3DoF-Controllerkomponenten bieten eine Rotationsverfolgung, ein Standardmodell, das der realen Hardware entspricht, und Ereignisse, um die Tastenzuordnungen zu abstrahieren. Die Controller für Google Daydream und Samsung GearVR verfügen über 3DoF und beide unterstützen nur einen Controller für eine Hand.

A-Frame 0.x 0.6

Tagtraum-Controller

Die Komponente daydream-Steuerelemente ist mit den Google Daydream-Controllern verbunden. Die Komponente mit den verfolgten Steuerelementen wird eingebettet, während Tastenzuordnungen, Ereignisse und ein Daydream-Controllermodell hinzugefügt werden, das die berührten und / oder gedrückten Tasten (Trackpad) hervorhebt.

Passen Sie den Daydream-Controller an, falls vorhanden, unabhängig von der Hand.

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

Passen Sie den Daydream-Controller an, falls vorhanden und für die angegebene Hand.

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

GearVR-Controller

Die Komponente gearvr-controls ist mit den VR-Controllern von Samsung / Oculus Gear verbunden. Es umschließt die Tracked-Control-Komponente und fügt Tastenzuordnungen, Ereignisse und ein Gear VR-Controller-Modell hinzu, das die berührten und / oder gedrückten Tasten (Trackpad, Trigger) hervorhebt.

<!-- 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>

Hinzufügen von 6DoF-Controllern

Controller mit 6 Freiheitsgraden (6DoF) verfügen sowohl über Rotations- als auch Positionsverfolgung. Im Gegensatz zu Controllern mit 3DoF, die auf die Orientierung beschränkt sind, können Controller mit 6DoF sich frei im 3D-Raum bewegen. 6DoF ermöglicht es uns, nach vorne, hinter unseren Rücken zu greifen, unsere Hände über unseren Körper oder nahe an unser Gesicht zu bewegen. 6DoF zu haben ist wie die Realität, wo wir sowohl Hände als auch Arme haben. 6DoF gilt auch für das Headset und zusätzliche Tracker (z. B. Füße, Requisiten). 6DoF ist ein Minimum für ein wirklich intensives VR-Erlebnis.

Die 6DoF-Controller-Komponenten bieten eine vollständige Nachverfolgung, ein Standardmodell, das der realen Hardware entspricht, und Ereignisse, um die Tastenzuordnungen zu abstrahieren. HTC Vive und Oculus Rift with Touch bieten 6DoF und Controller für beide Hände. HTC Vive bietet auch Tracker für die Verfolgung zusätzlicher Objekte in der realen Welt in der VR.

A-Frame 0.x 0.3

Vive Controller

Die Vive-Control-Komponente ist mit den HTC Vive-Controllern / -Leitern verbunden. Es umschließt die Tracked-Control-Komponente und fügt Tastenzuordnungen, Ereignisse und ein Vive-Controller-Modell hinzu, das die gedrückten Tasten (Trigger, Griff, Menü, System) und Trackpad hervorhebt.

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

Oculus Touch-Controller

Die Oculus-Touch-Control-Komponente ist mit den Oculus Touch-Controllern verbunden. Die Komponente mit den verfolgten Steuerelementen wird umrahmt, während Tastenzuordnungen, Ereignisse und ein Touch-Controller-Modell hinzugefügt werden.

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

Maussteuerung

Maussteuerungen werden nur außerhalb des VR-Modus unterstützt und können für Spiele ohne HMD verwendet werden. Weitere Informationen zu Maussteuerelementen finden Sie im Beispiel des Mauszeigers .

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow