aframe
コントロール(コンポーネント)
サーチ…
前書き
コントローラは、人々をVRアプリケーションに没頭させるために不可欠です。 VRの可能性は、それらがなければ満たされない、すなわち6自由度(6DoF)を提供するコントローラである。コントローラを使用することで、人々は場面を行き来することができ、オブジェクトを手で操作することができます。
A-Frameは、Gamepad Web APIを使用してそれぞれのWebVRブラウザでサポートされているように、スペクトル全体にわたるコントローラのコンポーネントを提供します。 Vive、Oculus Touch、Daydream、およびGearVRコントローラ用のコンポーネントがあります。
備考
gamepadextentionを有効にする必要がある可能性があります。次の手順でこれを行うことができます:
- Chromeの場合:
chrome://flags
- Firefoxの場合:
about:config
参照しabout:config
- IEの場合:デスクトップのグループポリシーエディタに移動します
- Operaで:オペラをブラウズ
opera:config
- エッジ
about:flags
Wasdコントロール
wasd-controlsコンポーネントは、 W 、 A 、 S 、 D、または矢印のキーボードキーを使用してエンティティを制御します。 wasd-controls
コンポーネントは、通常、カメラコンポーネントを持つエンティティに接続されています。
<a-entity camera look-controls wasd-controls></a-entity>
アゼルティキーボードについては、 Z 、 Q 、 S 、 Dキーを使用できます
ルックコントロール
look-controlsコンポーネント:
- VRヘッドマウントディスプレイ(HMD)を回転させるとエンティティを回転させます。
- マウスをクリックしてドラッグするとエンティティを回転させます。
- タッチスクリーンをタッチドラッグするとエンティティを回転させます。
look-controlsコンポーネントは、通常、カメラコンポーネントの横に使用されます。
<a-entity camera look-controls></a-entity>
警告
ルックコントロール用の独自のコンポーネントを作成する場合は、HMDトラッキングビットをコピーしてコンポーネントに貼り付ける必要があります。将来的には、より簡単にコントロールを作成するためのシステムを持つことがあります。
カーソルに凝視を加える
このためには、カメラにカーソルコンポーネントを追加する必要があります
<a-scene>
<a-camera>
<a-cursor></a-cursor>
<!-- Or <a-entity cursor></a-entity> -->
</a-camera>
</a-scene>
カーソル(コンポーネント)のトピックで見つかったより多くの情報
ハンドコントロール
A-Frameは、ハンドコントロールコンポーネントを介して複数のタイプの6DoFコントローラ(Vive、Oculus Touch)をサポートするための実装を提供します。ハンドコントロールコンポーネントは主に6DoFコントローラ向けです。これは、オブジェクトをつかむなどの部屋の相互作用に合わせて作られているからです。ハンドコントロールコンポーネントは、ViveとOculus Touchコントローラの両方で次のように動作します。
vive-controlsとoculus-touch-controlsの両方のコンポーネントを設定する
シンプルなハンドモデルによるコントローラモデルのオーバーライド
イベントとジェスチャーを手渡すためのVive特有のイベントとOculusのタッチ特有のイベントのマッピング(例えば、グリップダウンやサムネイルへのトリガダウン)
ハンドコントロールコンポーネントを追加するには:
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
残念ながら、3DoFコントローラのすべてのタイプ(Daydream、GearVR)を抽象化する3DoFコントローラコンポーネントはまだありません。両方のコントローラーで動作するカスタムコントローラーを作成することができます。 3DoFコントローラは、相互作用の可能性をあまり提供しないため(つまり、タッチパッドによる回転追跡のみ)、カバーするのはかなり簡単です。
ハンドコントロールは、アニメーションジェスチャーを使用して追跡された手(所定のモデルを使用)を提供します。手でコントロールすることで、vive-controlsとoculus-touch-controlsコンポーネントがラップされ、追跡されたコントロールコンポーネントがラップされます。このコンポーネントは余分なイベントを与え、手のアニメーションやポーズを処理します。
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
追跡されるコントロール
追跡制御コンポーネントは、Aフレームのすべてのコントローラコンポーネントの基礎を提供するAフレームのベースコントローラコンポーネントです。追跡制御コンポーネント:
IDまたは接頭辞を指定してGamepad APIからGamepadオブジェクトを取得します。
ゲームパッドAPIからコントローラの動きを読み取るためのポーズ(位置と向き)を適用します。
ゲームパッドオブジェクトのボタンの値の変化を軸とタッチパッド(すなわち変更されたときにボタンが押されたか、触れたとされるイベントを提供するために探し
axischanged
、buttonchanged
、buttondown
、buttonup
、touchstart
、touchend
)。
すべてのA-Frameのコントローラコンポーネントは、以下によってtracked-controls
コンポーネントの上に構築されます。
適切なゲームパッドID(例:Oculus Touch(Right))を使用して、エンティティのトラッキングコントロールコンポーネントを設定します。たとえば、vive-controlsコンポーネントは
el.setAttribute('tracked-controls', {idPrefix: 'OpenVR'})
tracked-controls
は適切なゲームパッドオブジェクトに接続し、エンティティのポーズとイベントを提供します。追跡されたコントロールによって提供されるイベントの抽象化。追跡制御イベントは低レベルです。あらかじめボタンのマッピングを知っておく必要があるため、それらのイベントだけに基づいてどのボタンが押されたかをわかりやすく伝えるのは難しいでしょう。コントローラコンポーネントは、それぞれのコントローラに対して事前にマッピングを知ることができ、
triggerdown
やxbuttonup
などのより意味のあるイベントを提供することがxbuttonup
ます。モデルを提供する。
tracked-controls
だけでは外観が提供tracked-controls
ません。コントローラコンポーネントは、ボタンが押されたりタッチされたときにビジュアルフィードバック、ジェスチャ、アニメーションを表示するモデルを提供します。以下のコントローラコンポーネントは、コントローラが検出され、ゲームパッドAPIで接続されていると検出された場合にのみアクティブ化されます。
tracked-controls
コンポーネントは、追跡されたコントローラとインタフェースします。 track-controlsは、Gamepad APIを使用して追跡されたコントローラを処理し、ハンドコントロールコンポーネントとvive-controlsおよびoculus-touch-controlsコンポーネントによって抽象化されます。このコンポーネントは適切なコントローラを選択し、エンティティにポーズを適用し、ボタンの状態を観察して適切なイベントを発行します。
最近のブラウザー固有の変更のため、Viveコントローラーは、 "OpenVR Gamepad"または"OpenVR Controller"の id値を持つGamepad APIによって返される可能性があるので、Vive / OpenVRコントローラーにidPrefix
を使用することをお勧めします。
<a-entity tracked-controls="controller: 0; idPrefix: OpenVR"></a-entity>
3Dofおよび6Dofコントローラ
3DoFコントローラの追加
3自由度(3DoF)のコントローラは回転追跡に限定されています。 3DoFコントローラには、位置を追跡する意味がありません。手を前後に動かしたり、上下に動かすことはできません。 3DoFだけのコントローラーを持つことは、腕のない手と手首を持つようなものです。 VRの自由度についてもっと読む。
3DoFコントローラコンポーネントは、回転追跡、現実のハードウェアと一致するデフォルトモデル、およびボタンマッピングを抽象化するイベントを提供します。 Google DaydreamとSamsung GearVRのコントローラーには3DoFが搭載されていますが、どちらも片方のコントローラーしかサポートしていません。
デイドリームコントローラ
デイドリームコントロールコンポーネントは、Googleデイドリームコントローラとインターフェースします。ボタンマッピング、イベント、タッチしたボタン(トラックパッド)をハイライト表示するDaydreamコントローラモデルを追加しながら、追跡されたコントロールコンポーネントをラップします。
ハンドとは無関係に、デイドリームコントローラがあればそれに合わせてください。
<a-entity daydream-controls></a-entity>
デイドリームコントローラが存在する場合はそれに合わせて、指定されたハンドに対しては一致させる
<a-entity daydream-controls="hand: left"></a-entity>
<a-entity daydream-controls="hand: right"></a-entity>
GearVR-コントローラ
gearvr-controlsコンポーネントは、Samsung / Oculus Gear VRコントローラとインターフェースします。ボタンマッピング、イベント、タッチしたボタン(トラックパッド、トリガ)を強調表示するGear VRコントローラモデルを追加しながら、トラッキングされたコントロールコンポーネントをラップします。
<!-- 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コントローラの追加
6自由度(6DoF)のコントローラには、回転と位置の両方のトラッキングがあります。オリエンテーションに制約される3DoFを備えたコントローラとは異なり、6DoFを備えたコントローラは3D空間で自由に動くことができます。 6DoFは、私たちの背中の背後で、私たちの手を身体の向こうに動かしたり、顔の近くに近づけることを可能にします。 6DoFを持つことは、私たちが両手と腕を持っている現実のようなものです。 6DoFは、ヘッドセットと追加のトラッカー(例:足、小道具)にも適用されます。真に臨場感あふれるVR体験を提供するには、6DoFを最低限に抑えることが必要です。
6DoFコントローラコンポーネントは、フルトラッキング、現実のハードウェアと一致するデフォルトモデル、ボタンマッピングを抽象化するイベントを提供します。 HTC ViveとOculus Rift with Touchは、両手用の6DoFとコントローラを提供します。 HTC Viveは、現実世界の追加オブジェクトをVRに追跡するためのトラッカーも提供します。
Viveコントローラ
vive-controlsコンポーネントは、HTC Viveコントローラ/ワンドとインターフェイスします。ボタンマッピング、イベント、押されたボタン(トリガー、グリップ、メニュー、システム)とトラックパッドをハイライトするViveコントローラーモデルを追加しながら、トラッキングコントロールコンポーネントをラップします。
<a-entity vive-controls="hand: left"></a-entity>
<a-entity vive-controls="hand: right"></a-entity>
Oculusタッチコントローラ
oculus-touch-controlsコンポーネントは、Oculus Touchコントローラとインターフェースします。ボタン付きのマッピング、イベント、Touchコントローラモデルを追加しながら、追跡されたコントロールコンポーネントをラップします。
<a-entity oculus-touch-controls="hand: left"></a-entity>
<a-entity oculus-touch-controls="hand: right"></a-entity>
マウスコントロール
マウスコントロールはVRモードの外でのみサポートされ、HMDなしのゲームにも使用できます。マウスコントロールの詳細については、 マウスカーソルの例を参照してください。
<a-scene>
<a-entity camera look-controls mouse-cursor>
</a-scene>