ポインターイベント
スナップインタラクションを除き、Interaction SDKによって管理されるインタラクションのほとんどは、統一されたポインターライフサイクル約定に従います。約定は、インタラクションの状態と、そのトラバース可能な順序を定義します。この統一約定により、ポインターハンドラーは特定の実装に限定されることなく、複数のインタラクションタイプを処理できるようになります。
例えば、
Grabbableはポインターハンドラーです。これはInteractableからの一連のポインター更新情報を利用して、オブジェクトに対する変換の推移を生成します。
Ray、
Poke、および
Grabの各インタラクションはすべてポインターライフサイクル約定に準拠しているので、いずれについても
Grabbableが動作します。
ポインターイベントを使用して情報を送受信する方法については、
データの使用を参照してください。
ポインターライフサイクルは、一連の
ポインターイベントオブジェクトによって実施されます。名前にイベントという単語が含まれていますが、
ポインターイベントオブジェクトはイベントではありません。インタラクションの結果を表すペイロードです。ウェブ開発で使用される2D
PointerEventの3Dバージョンと考えるとよいでしょう。各
ポインターイベントオブジェクトは4つの要素で構成されます。
注: スナップインタラクションではポインター イベントは使用されません。したがって、どのインタラクターがスナップインタラクションをトリガーしたかを確認するには、スナップインタラクティブ要素のSelectingInteractorViewsフィールドを確認します。このフィールドには、現在インタラクティブ要素にスナップされているすべてのインタラクターがリストされます。
Identifier シーン内のどのインタラクターがインタラクションをトリガーしたかを示す一意の文字列。
PointerEventType: 次のいずれかのイベントタイプ: Hover、Unhover、Select、Unselect、Move、および Cancel。
Pose: インタラクションポイントの3D座標(例: オブジェクトのつかむポイントや表面のつつくポイント)を提供するポーズ。
Data: デフォルトでは、これはインタラクターを指しますが、代わりにobjectを指定してカスタムデータを渡すこともできます。
ポインターイベントの出力は次のようになります。
// Identifier
1954361006
// PointerEventType
Select
// Pose
((-0.18, 0.89, 0.37), (0.00000, 0.96593, 0.25882, 0.00000))
// Data
(-0.16, 0.88, 0.37) (0.23, 0.82, 0.34)(0.00, 0.50, -0.87) 0.005 (0.23, 0.87, 0.26) True False False True False 3 Hover
IPointableは、状態が変化するたびに一連の
ポインターイベントを一斉送信します。
IPointableはポインターライフサイクル約定に準拠する必要があります。この約定は、次の3つの概念的状態の間でポインターを移行させるために、IPointableによって一斉送信できるイベントの順序を定義します。詳細については、
ポイント操作を参照してください。
None (なし)<->Hovering (ホバリング中)<->Selecting (選択中)
- どのポインターも、Hoverイベントから開始する必要があります(NoneからHoveringへの移行)。
- どのポインターも、Unhoverイベントで終了する必要があります(Noneへの移行)。
- Selectイベントは、Hovering状態にあるポインターをSelecting状態に移行させます。
- Selecting状態にある間は、SelectイベントもUnhoverイベントも行うことは不可能です。
- Selecting状態からHovering状態に戻るには、Unselectが行われなければなりません。
- [Hovering (ホバリング)]または[Selecting (選択中)]の状態にある間は、任意の数のMoveイベントが行われる可能性があります。
- HoveringまたはSelectingの状態にある間は、Cancelイベントが1回行われる可能性があります。Selecting状態の場合は、その後にUnselectとUnhoverが続く必要があります。
- PointerEventsを使用して情報を送受信する方法については、データの使用を参照してください。
- ポインターイベントを一斉送信するインタラクティブ要素であるポイント可能要素の詳細については、ポイント可能要素を参照してください。