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

Class BhapticsLibrary

La classe BhapticsLibrary contient les fonctions permettant d'utiliser les dispositifs haptiques de bHaptics.

Références

  • Chemin : Assets\Bhaptics\SDK2\Scripts\Core\Plugins\BhapticsLibrary.cs

Fonctions statiques — Lecture haptique basée sur les événements

Lisez les motifs haptiques liés à un événement haptique spécifique créé depuis Designer/Portal. Nous recommandons vivement l'utilisation de ces fonctions.

Play

public static int Play(string eventId, int startMillis = 0, float intensity = 1f, float duration = 1.0f, float angleX = 0.0f, float offsetY = 0.0f);

Lit un événement haptique en ajustant la force, la Duration et la direction du retour haptique.

Parameters

  • string eventId : Nom de l'événement haptique à lire.
  • int startMillis : Position de départ de la lecture en millisecondes. Les premiers startMillis millisecondes de l'événement sont ignorés (il s'agit d'un décalage de départ, non d'un délai avant la lecture). La valeur par défaut est 0. Windows/macOS/Android uniquement.
  • float intensity : L'Intensity haptique est multipliée par cette valeur.
  • float duration : La Duration haptique est multipliée par cette valeur.
  • float angleX : Fait pivoter le retour haptique dans le sens antihoraire autour du Vector3.up global. Plage valide : [0.0f - 360.0f]
  • float offsetY : Déplace le retour haptique vers le haut ou vers le bas. Plage valide : [-0.5f - 0.5f]

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

public class Example : MonoBehaviour
{
private void OnShoot()
{
// Assume the event name is "shootpistol"

// BASIC USAGE
BhapticsLibrary.Play(BhapticsEvent.SHOOTPISTOL);
// or
BhapticsLibrary.Play("shootpistol");

// ADVANCED USAGE
BhapticsLibrary.Play(
BhapticsEvent.SHOOTPISTOL, // Haptic name
0, // Playback start position (millisecond)
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f // Move haptic up or down (-0.5f - 0.5f)
);
}
}

PlayParam

public static int PlayParam(string eventId, float intensity = 1.0f, float duration = 1.0f, float angleX = 0.0f, float offsetY = 0.0f);

Lit un événement haptique en ajustant la force, la Duration et la direction du retour haptique.

Parameters

  • string eventId : Nom de l'événement haptique à lire.
  • float intensity : L'Intensity haptique est multipliée par cette valeur.
  • float duration : La Duration haptique est multipliée par cette valeur.
  • float angleX : Fait pivoter le retour haptique dans le sens antihoraire autour du Vector3.up global. Plage valide : [0.0f - 360.0f]
  • float offsetY : Déplace le retour haptique vers le haut ou vers le bas. Plage valide : [-0.5f - 0.5f]

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

public class Example : MonoBehaviour
{
private void OnShoot()
{
BhapticsLibrary.PlayParam(
BhapticsEvent.SHOOTPISTOL, // Haptic name
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f // Move haptic up or down (-0.5f - 0.5f)
);
}
}

PlayAngle

public static int PlayAngle(string eventId, float angleX, float offsetY);

Lit un événement haptique en ajustant uniquement la direction du retour haptique. Il s'agit d'un raccourci autour de PlayParam avec intensity et duration fixées à 1.0f.

Parameters

  • string eventId : Nom de l'événement haptique à lire.
  • float angleX : Fait pivoter le retour haptique dans le sens antihoraire autour du Vector3.up global. Plage valide : [0.0f - 360.0f]
  • float offsetY : Déplace le retour haptique vers le haut ou vers le bas. Plage valide : [-0.5f - 0.5f]

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

PlayLoop

public static int PlayLoop(
string eventId,
float intensity = 1.0f,
float duration = 1.0f,
float angleX = 0.0f,
float offsetY = 0.0f,
int interval = 200,
int maxCount = 999999
);

Lit le retour haptique en boucle. De plus, comme la fonction PlayHapticWithOption, vous pouvez ajuster la force, la Duration et la direction du retour haptique.

Parameters

  • string eventId : Nom de l'événement haptique à lire.
  • float intensity : L'Intensity haptique est multipliée par cette valeur.
  • float duration : La Duration haptique est multipliée par cette valeur.
  • float angleX : Fait pivoter le retour haptique dans le sens antihoraire autour du Vector3.up global. Plage valide : [0.0f - 360.0f]
  • float offsetY : Déplace le retour haptique vers le haut ou vers le bas. Plage valide : [-0.5f - 0.5f]
  • int interval : Intervalle de temps entre les boucles, exprimé en millisecondes.
  • int maxCount : Nombre de boucles.

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

public class Example : MonoBehaviour
{
private void OnShoot()
{
BhapticsLibrary.PlayLoop(
BhapticsEvent.SHOOTPISTOL, // Haptic name
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f, // Move haptic up or down (-0.5f - 0.5f)
200, // Loop interval time (millisecond)
999999 // Loop count
);
}
}

PlayLoopOnly

public static int PlayLoopOnly(string eventId, int interval = 200, int maxCount = 999999);

Lit le retour haptique en boucle. Il s'agit d'un raccourci autour de PlayLoop avec intensity et duration fixées à 1.0f et sans ajustement directionnel.

Parameters

  • string eventId : Nom de l'événement haptique à lire.
  • int interval : Intervalle de temps entre les boucles, exprimé en millisecondes.
  • int maxCount : Nombre de boucles.

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Fonctions statiques — Lecture haptique directe

Si vous souhaitez lire des retours haptiques sans créer d'événement, utilisez ces fonctions.

PlayMotors

public static int PlayMotors(int position, int[] motors, int durationMillis);

Lit un retour haptique sur un actionneur haptique spécifique. Vous pouvez utiliser cette fonction sans créer d'événement.

Parameters

  • int position : Type de dispositif haptique. Pour plus d'informations, consultez ici.
    ValeurDispositifÉquivalent à…Nombre de moteurs
    0TactSuit ProPositionType.Vest32
    1TactSleeve(Left)PositionType.ForearmL3
    2TactSleeve(Right)PositionType.ForearmR3
    3TactVisorPositionType.Head4
    4Tactosy for Hands(Left)PositionType.HandL3
    5Tactosy for Hands(Right)PositionType.HandR3
    6Tactosy for Feet(Left)PositionType.FootL3
    7Tactosy for Feet(Right)PositionType.FootR3
    8TactGlove(Left)PositionType.GloveL8
    9TactGlove(Right)PositionType.GloveR8
  • int[] motors : Définissez la longueur du tableau selon le nombre de moteurs du dispositif. Les valeurs dans le tableau représentent l'Intensity de chaque moteur. Plage valide pour chaque valeur du tableau : [0 - 100]
  • int durationMillis : La Duration du retour haptique, exprimée en millisecondes. Une valeur supérieure ou égale à 100 est recommandée.

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

public class Example : MonoBehaviour
{
private void OnCall()
{
// TactSuit Pro has 32 motors, so length of array should be 32 too.
int[] MotorValueArray = new int[] {
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
};

BhapticsLibrary.PlayMotors(
(int)PositionType.Vest, // Device type
MotorValueArray, // Haptic intensities
500 // Haptic duration (millisecond)
);
}
}

PlayWaveform

public static int PlayWaveform(
PositionType positionType,
int[] motorValues,
GlovePlayTime[] playTimeValues,
GloveShapeValue[] shapeValues,
int frequency = 80,
int repeatCount = 0
);

TactGlove uniquement. Lit des retours haptiques sur le TactGlove. Contrairement à PlayMotors, vous pouvez régler finement la Duration haptique et les variations d'Intensity de vibration. Cela permet une expression encore plus précise du retour haptique.

Chaque tableau (motorValues, playTimeValues, shapeValues) doit contenir six éléments pour le TactGlove DK2 ou huit éléments pour le TactGlove DK3, et les trois tableaux doivent avoir la même longueur. Toute autre longueur retourne -1.

Parameters

  • PositionType positionType : Type de dispositif haptique.

    ValeurDispositifÉquivalent à…
    PositionType.GloveLTactGlove(Left)8
    PositionType.GloveRTactGlove(Right)9
  • int[] motorValues : Tableau représentant l'Intensity de chaque moteur. Sa longueur doit correspondre au nombre de moteurs du TactGlove : six (TactGlove DK2) ou huit (TactGlove DK3). Les moteurs de la paume aux indices 6 et 7 (voir le tableau ci-dessous) n'existent que sur le DK3. Plage valide pour chaque valeur du tableau : [0 - 100]

    Indice du tableauPosition du moteur
    0Bout du pouce
    1Bout de l'index
    2Bout du majeur
    3Bout de l'annulaire
    4Bout de l'auriculaire
    5Sur le poignet
    6Sur la paume (côté pouce)
    7Sur la paume (côté auriculaire)
  • GlovePlayTime[] playTimeValues : Tableau de même longueur que motorValues (six pour DK2, huit pour DK3), où chaque élément représente un intervalle de temps pour l'actionnement, défini à l'aide des énumérations GlovePlayTime.

    ValeurDurationÉquivalent à…
    GlovePlayTime.NoneAucune0
    GlovePlayTime.FiveMS5ms1
    GlovePlayTime.TenMS10ms2
    GlovePlayTime.TwentyMS20ms4
    GlovePlayTime.ThirtyMS30ms6
    GlovePlayTime.FortyMS40ms8
  • GloveShapeValue[] shapeValues : Tableau de même longueur que motorValues (six pour DK2, huit pour DK3), où chaque élément représente la forme des variations d'Intensity haptique dans le temps, spécifiée par les énumérations GloveShapeValue.

    ValeurForme d'ondeÉquivalent à…
    GloveShapeValue.ConstantIntensity constante pendant toute la Duration0
    GloveShapeValue.DecreasingDémarre à l'Intensity spécifiée et diminue de moitié1
    GloveShapeValue.IncreasingDémarre à la moitié de l'Intensity spécifiée et augmente jusqu'à l'Intensity spécifiée.2

    [TactGlove DK3] Sur le gant DK3, l'actionneur du poignet (indice de tableau 5) est un moteur à bobine mobile (VCM) et ne reflète pas les shapeValues. Les sept autres moteurs appliquent la forme d'onde de la même manière que sur les gants DK2.

  • int frequency : [TactGlove DK3 uniquement] Fréquence de vibration en Hz des actionneurs propres au gant DK3. La valeur par défaut est 80. Cela n'affecte que le gant DK3 lui-même et ne modifie pas la fréquence de fonctionnement des autres dispositifs connectés. N'a aucun effet sur les gants DK2 ni sur le chemin universel (non-Windows/macOS). Windows/macOS uniquement.

  • int repeatCount : Nombre de répétitions de la forme d'onde, à partir de 1. 0 la lit une seule fois. Windows/macOS uniquement.

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
int[] motorValues = new int[8] { 50, 80, 100, 0, 0, 0, 0, 0 };

GlovePlayTime[] playTimeValues = new GlovePlayTime[8] {
GlovePlayTime.FiveMS, GlovePlayTime.TwentyMS,
GlovePlayTime.ThirtyMS, GlovePlayTime.None,
GlovePlayTime.None, GlovePlayTime.None,
GlovePlayTime.None, GlovePlayTime.None
};

GloveShapeValue[] shapeValues = new GloveShapeValue[8] {
GloveShapeValue.Constant, GloveShapeValue.Decreasing,
GloveShapeValue.Increasing, GloveShapeValue.Constant,
GloveShapeValue.Constant, GloveShapeValue.Constant,
GloveShapeValue.Constant, GloveShapeValue.Constant
};

BhapticsLibrary.PlayWaveform(
PositionType.GloveL, // Device Type
motorValues, // Intensities
playTimeValues, // Intervals
shapeValues // Intensity changing forms
);
}
}

PlayPath

public static int PlayPath(
int position,
float[] xValues,
float[] yValues,
int[] intensityValues,
int duration
);

Lit un retour haptique autour de coordonnées spécifiques. Contrairement à la fonction PlayMotors, qui spécifie l'Intensity haptique pour chaque actionneur individuellement, cette méthode spécifie l'Intensity haptique pour des coordonnées particulières.

Pour la spécification de la position haptique, PlayMotors offre un contrôle discret tandis que PlayPath est plus continu. PlayMotors attribue une Intensity aux actionneurs individuels, tandis que PlayPath permet de spécifier une Intensity pour des coordonnées précises (entre 0 et 1 sur les axes X et Y), provoquant la vibration des actionneurs proches.

Vous pouvez saisir plusieurs coordonnées avec plusieurs Intensity. Notez que tous les actionneurs autour de ces coordonnées dans le tableau s'activeront simultanément (en même temps), et non séquentiellement. De plus, la taille de tous les tableaux doit être identique.

En appelant cette fonction en continu tout en modifiant progressivement les valeurs, vous pouvez obtenir l'effet d'un point haptique en mouvement.

[TactGlove DK3] PlayPath ne pilote pas le moteur à bobine mobile (VCM) du poignet sur un gant DK3.

Frame 82.png

Parameters

  • int position : Type de dispositif haptique.
    ValeurDispositifÉquivalent à…
    0TactSuit ProPositionType.Vest
    1TactSleeve(Left)PositionType.ForearmL
    2TactSleeve(Right)PositionType.ForearmR
    3TactVisorPositionType.Head
    4Tactosy for Hands(Left)PositionType.HandL
    5Tactosy for Hands(Right)PositionType.HandR
    6Tactosy for Feet(Left)PositionType.FootL
    7Tactosy for Feet(Right)PositionType.FootR
    8TactGlove(Left)PositionType.GloveL
    9TactGlove(Right)PositionType.GloveR
  • float[] xValues : Définit la coordonnée X. Plage valide pour chaque valeur du tableau : [0.0f - 1.0f]
  • float[] yValues : Définit la coordonnée Y. Plage valide pour chaque valeur du tableau : [0.0f - 1.0f]
  • int[] intensityValues : Définissez la longueur du tableau selon le nombre de coordonnées. Les valeurs dans le tableau représentent l'Intensity de chaque coordonnée. Plage valide pour chaque valeur du tableau : [0 - 100]
  • int duration : La Duration du retour haptique, exprimée en millisecondes. Une valeur supérieure ou égale à 100 est recommandée.

Returns

ID de requête. Vous pouvez utiliser cet ID pour arrêter le retour haptique. Retourne -1 en cas d'échec.

Cependant, lorsque le Hub est connecté, les appels échoués ne retournent pas -1 car le Hub ne fournit pas de valeur de retour.

Example

using Bhaptics.SDK2;

/* Assumption:
- For TactSuit Pro
- Coordinate with Intensity
- (X: 0.1, Y: 0.2) Intensity 40
- (X: 0.3, Y: 0.4) Intensity 80
- (X: 0.5, Y: 0.6) Intensity 10
- Duration 500ms(=0.5 second)
*/
public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
BhapticsLibrary.PlayPath(
(int)PositionType.Vest, // Device type
new float[] { 0.1f, 0.3f, 0.5f }, // X Coordinates
new float[] { 0.2f, 0.4f, 0.6f }, // Y Coordinates
new int[] { 40, 80, 10 }, // Intensities
500 // Duration
);
}
}

Fonctions statiques — Autres

using Bhaptics.SDK2;

public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
int requestID = BhapticsLibrary.Play("TestHaptic");

if (BhapticsLibrary.IsPlayingByEventId("TestHaptic"))
{
BhapticsLibrary.StopByEventId("TestHaptic");
}

if (BhapticsLibrary.IsPlayingByRequestId(requestID))
{
BhapticsLibrary.StopInt(requestID);
}

if (BhapticsLibrary.IsPlaying())
{
BhapticsLibrary.StopAll();
}
}
}

StopByEventId

public static bool StopByEventId(string eventId)

Arrête l'événement haptique par son ID d'événement. Retourne si l'arrêt a réussi.

StopInt

public static bool StopInt(int requestId)

Arrête l'événement haptique en utilisant l'ID de requête retourné par la fonction d'exécution du retour haptique. Retourne si l'arrêt a réussi.

StopAll

public static bool StopAll()

Arrête tous les retours haptiques en cours de lecture. Retourne si l'arrêt a réussi.

IsPlaying

public static bool IsPlaying()

Vérifie si un retour haptique est en cours de lecture.

IsPlayingByEventId

public static bool IsPlayingByEventId(string eventId)

Vérifie si l'événement haptique correspondant à cet ID d'événement est en cours de lecture.

IsPlayingByRequestId

public static bool IsPlayingByRequestId(int requestId)

Vérifie si l'événement haptique correspondant à cet ID de requête est en cours de lecture.

PauseByEventId

public static void PauseByEventId(string eventId)

Met en pause un événement haptique actif. Utilisez PauseByEventId(string eventId) pour mettre en pause un événement haptique spécifique. L'événement mis en pause peut ensuite être repris à l'aide de ResumeByEventId(string eventId).

ResumeByEventId

public static void ResumeByEventId(string eventId)

Reprend un événement haptique mis en pause. Utilisez ResumeByEventId(string eventId) pour reprendre la lecture depuis la position où elle a été mise en pause.