Aller au contenu principal
Cette page a été traduite automatiquement et peut contenir des erreurs. Voir l’original en anglais

Guide Physics Glove pour Unity

Avec le bHaptics Physics Glove SDK, vous pouvez offrir aux utilisateurs du TactGlove une expérience VR immersive grâce aux vibrations au niveau des doigts et des poignets.


À quoi cela sert-il

Afin de permettre aux mains virtuelles d'entrer en collision physique avec l'environnement virtuel et d'interagir avec des objets virtuels, il est possible d'appliquer la physique aux mains virtuelles.

La structure maître-esclave est couramment utilisée pour appliquer la physique aux mains. Pour mettre cela en œuvre, vous pouvez utiliser des plugins tels que HPTK, Ultraleap Physics Hand ou Auto Hand. Vous pouvez également créer votre propre implémentation.

Le bHaptics Physics Glove SDK peut appliquer des haptiques aux mains virtuelles utilisant la physique maître-esclave. Il fournit les vibrations appropriées au gant haptique, de sorte que les utilisateurs aient l'impression de saisir réellement un objet virtuel.

remarque

Vous n'avez pas besoin d'utiliser le Physics Glove SDK pour simplement faire vibrer le TactGlove. Vous pouvez toujours utiliser le TactGlove si vous avez suivi le Guide Unity précédent.

Les instructions de ce document fournissent des fonctionnalités pour vous aider à appliquer de meilleurs haptiques lorsque vos mains virtuelles effectuent des actions physiques.

Prérequis

Spécifications

  • Unity : 2022+
  • Mains avec physique implémentée en structure maître-esclave
  • bHaptics Plugin : 2.3.0+
    • Il inclut déjà le bHaptics SDK de base et le bHaptics Physics Glove SDK.

Avant de commencer

remarque

Nous supposons que vous avez suivi le Guide Unity pour configurer votre projet Unity.

Assurez-vous que ces conditions sont remplies dans votre projet Unity.

  • L'application haptique est liée à votre projet à l'aide de l'API Key et de l'App ID.
  • Le prefab « [bhaptics] » existe dans votre scène.

Ajouter le prefab

  1. Dans la fenêtre du projet, allez dans « Assets » → « Bhaptics » → « SDK2 » → « Prefabs ».
  2. Ajoutez le prefab « [bHapticsGlove] » dans votre scène.
  3. Dans la hiérarchie, sélectionnez « [bHapticsGlove] » que vous avez ajouté, et vous verrez le composant Bhaptics Physics Glove dans l'inspecteur. Untitled
  4. Sélectionnez le bouton « Create New GloveHapticSettings ». Les paramètres haptiques du gant apparaîtront alors. Untitled

Ces valeurs définies par défaut fonctionneront idéalement dans un environnement typique. Cependant, vous devrez peut-être ajuster les valeurs des paramètres en fonction de votre environnement de projet pour un meilleur ressenti.

Une description plus détaillée des paramètres est disponible sur la page BhapticsPhysicsGloveSettings dans la Référence.

Appliquer bHaptics aux mains physiques

Selon la manière dont la physique de vos mains est implémentée, la façon d'enregistrer les événements peut varier.

Cependant, le principe commun est que lorsque le bout du doigt détecte une collision, le moteur situé au bout du doigt fournit la quantité appropriée d'haptiques.

Trouvez un GameObject avec un Collider (ou Rigidbody) situé au bout du doigt, puis attachez-y un composant qui implémente le contenu ci-dessous. Lorsque l'événement Collision est invoqué et que la fonction ci-dessous est exécutée, le gant fournira des haptiques.

Pour plus d'informations sur l'événement Collision dans Unity, consultez le manuel Unity.

Selon le plugin que vous utilisez, il peut exister des événements qui seront invoqués lors d'un événement de collision. De la même manière, vous pouvez y répondre en appelant une fonction qui applique les haptiques. Référez-vous à ce qui suit.

remarque

Le gant possède les mappages de moteurs suivants. Motor Index

SendEnterHaptic

Ce code est une fonction que nous avons créée en supposant qu'elle sera utilisée dans OnCollisionEnter.

private int fingerIndex;
private bool isLeft;

private void OnCollisionEnter(Collision collision)
{
// We typically use collision.relativeVelocity, but depending on how your hand physics are designed, you can use other overload functions.
BhapticsPhysicsGlove.Instance.SendEnterHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, collision.relativeVelocity);
}

SendStayHaptic

Ce code est une fonction que nous avons créée en supposant qu'elle sera utilisée dans OnCollisionStay.

private int fingerIndex;
private bool isLeft;

private void OnCollisionStay(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendStayHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, slaveTransform, masterTransform);
}

SendExitHaptic

Ce code est une fonction que nous avons créée en supposant qu'elle sera utilisée dans OnCollisionExit.

private int fingerIndex;
private bool isLeft;

private void OnCollisionExit(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendExitHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex);
}

Enregistrez les trois événements et testez-les. Les événements se déclencheront lorsque les bouts des doigts entreront en contact.

Pour plus d'informations sur ces fonctions haptiques, consultez la référence de la classe BhapticsPhysicsGlove.