スナップ
はじめに
この機能の目的は、物理的に正しく見えるように仮想のオブジェクトを自然にキャッチすることです。この機能は、キャッチするオブジェクトに最もよく合うように手と指の回転を調整します。これらのポーズは、つまむ、つかむなどの選択するジェスチャーに関連付けられています。
ユーザーがオブジェクトに接触しながら選択するジェスチャーを実行すると、仮想の手が設定された通りにスナップします。
説明
XR Hand Interactable Snap Pose Provider
XR Hand Interactable Snap Pose Provider
コンポーネントをHierarchyのXR Grab Interactable
オブジェクトの下に追加することで、インタラクティブなスナップポーズを提供することができます。XR Hand Interactable Snap Pose Provider
の下に、1つまたは複数の異なるスケールのXR Hand Interactable Snap Pose
を作成することができます。Snap Pose Provider
は、現在の手のスケールに基づいて、すべてのスナップポーズを補間することができます。インタラクション可能なものが掴まれたときに、現在の手のスケールで補間されたポーズが自動的にオブジェクトに適用されます。
ハンドスケールは0.5f
〜1.6f
の間でクランプされています。
XR Hand Interactable Snap Pose
Snap Pose
では、手をスナップさせるオブジェクトの正確な位置を定義することができます。
手のTransformや手の関節のRotationを編集することで、開発者は特定のハンドスケールのポーズを設定できます。手のスケールは、Snap Pose
のTransformのScaleのxの値によって定義されます。
デフォルトでは、Snap Pose
のデータはゲームオブジェクト自体にシリアライズされます。[Export pose]をクリックすることで、ポーズを出力し、リファレンスとして使用することができます。ハンドポーズ参照フィールドが設定されている場合、データは参照ハン ドポーズアセットにシリアライズされます。参照ハンドポーズデータをスナップポーズオブジェクトのシリアライズに適用するには、Apply pose inspector
ボタンをクリックします。
ハンドポーズリファレンスからハンドジョイントを編集すると、ハンドポーズアセットのデータがシリアライズされます。その結果、このハンドポーズアセットを参照しているすべてのスナップポーズが変更されます。
スナップの設定方法
- XR Hand Interactable Snap Pose ProviderオブジェクトをInteractableオブジェクトの子として追加します。スナップポーズプロバイダのHandednessを選択します。スナップポーズプロバイダを2つ、それぞれの手用に1つずつ作成し、両手のスナップを実行します。Interactableがつかまれたときに、スナップされていない指がある場合は、それらの指のmaskフィールドをrequiredからfreeに変更します。
片方の手のプロバイダーとポーズを設定したら、プロバイダーを複製し、利き手を変更し、ポーズを反転し、トランスフォームを調整して、もう一方の手のミラー化されたスナップポーズプロバイダーをすばやく取得します。
- XR Hand Interactable Snap Pose Providerオブジェクトの下にXR Hand Interactable Snap Poseオブジェクトを追加します。
- 変形ツールでスナップポーズのポーズとスケールを設定し、ジョイントの編集ボタンをクリックして手のジョイントを編集します。
各軸に均一なスケールを使用してください。XR Hand Interactable Snap Pose Providerは、スナップポーズを並べ替えるためにScaleのx値のみを使用します。
- 提供ポーズリストにスナップポーズを追加します。
- XR Hand Interactable Snap Poseをスケールを変えて繰り返し追加します。
- XR Hand Interactable Snap Pose Providerコンポーネントのスケールスライダを使ってスケールを変更し、ポーズ補間を見直します。