Skip to main content
Version : la plus récente

Démarrage rapide : HardwareAPI Unity Package

Cet article fournit des instructions d'installation de base et un exemple simple démontrant l'utilisation de base. Pour plus de détails et l'utilisation avancée, voir la référence Unity Package reference ou les tutoriels.

Support de version

  • Unity 2020.3.x LTS : Recommandé
  • Unity 2021.3.x LTS : pris en charge
  • Unity 2022.x (Tech Stream) : Expérimental

Aperçu du paquet

Le Haply HardwareAPI Unity Package est construit sur la base des bibliothèques de classes C# HardwareAPI de Haply et fournit des intégrations supplémentaires et des fonctionnalités de qualité de vie adaptées aux flux de travail de Unity. .

Les composants Haptic Thread et Handle Thread gèrent la communication avec leur dispositif respectif dans une boucle de communication asynchrone à sécurité intrinsèque. dans une boucle de communication asynchrone à sécurité intrinsèque. En outre, Haptic Thread fournit plusieurs plusieurs méthodes pour contrôler l'Inverse3. Le paquetage convertit aussi automatiquement entre le système de coordonnées d'Unity et le système de coordonnées Inverse3. Unity et celui de l'Inverse3.

Note Le paquetage est en développement continu afin de simplifier davantage le développement de l'Inverse3. Si vous avez des questions ou des demandes, veuillez nous contacter.

Installer le paquetage Haply Hardware API

Le paquet HardwareAPI Unity est distribué via le registre Scoped registry du gestionnaire de paquets Unity. Cette section décrit les étapes nécessaires pour définir un registre personnalisé et ajouter le package HardwareAPI à un nouveau projet. et ajouter le package HardwareAPI à un nouveau projet.

  1. Avec un projet ouvert, naviguez vers Edit > Project Settings > Package Manager dans la barre d'outils Unity et dans la fenêtre Package Manager, sous la section Scoped Registry, appuyez sur un bouton plus et ajoutez ce qui suit :

    • Nom : Haply Robotics
    • URL : https://unitypackages.haply.co
    • Portée(s) : co.haply

    registre scopé

    Vous pouvez également modifier directement le fichier de manifeste de votre directement le fichiermanifeste de votreprojet.
    Pour plus d'informations sur Unity Scoped Registry, visitez : docs.unity3d.com

  2. Utilisez la barre d'outils Unity pour naviguer vers Fenêtre > Gestionnaire de paquets.

  3. Cliquez sur le bouton ajouter + dans la barre d'état et sélectionnez Ajouter un paquet par nom.

    upm-ui-quick

  4. Entrer co.haply.hardwareapi en tant que Nom et cliquez sur Ajouter.

    upm-ui-quick-add

En cas de succès, le gestionnaire de paquets devrait afficher les informations suivantes.

upm-ui-hapi

Pour commencer

Contrôler Inverse3

  1. Créez un objet de jeu vide sous la scène, nommez-le Haptic Thread et dans l'inspecteur, ajoutez le composant Haptic dans l'inspecteur.

  2. Dans le fil Haptic, utilisez le menu déroulant Device Address pour sélectionner le dispositif Inverse3 correspondant au nom inscrit sur sa plaque. au nom figurant sur sa plaque.

    haptic-tread-port.png

  3. Ajoutez une sphère à la scène, nommez-la Cursor et attachez-la à l'avatar EE dans le fichier HapticThread. Si vous passez en mode lecture maintenant, la sphère se déplacera en même temps que le curseur de l'objet Inverse3, tandis que la position et la vitesse seront mises à jour en permanence dans la fenêtre de l'inspecteur.

  4. Créez un nouveau script C# avec le code suivant, puis attachez-le au même objet de jeu que le script Haptic Thread. Haptic Thread:

    using Haply.HardwareAPI.Unity;
    using UnityEngine;

    public class HapticController : MonoBehaviour
    {
    [Range(-2, 2)]
    public float forceX;
    [Range(-2, 2)]
    public float forceY;
    [Range(-2, 2)]
    public float forceZ;

    private void Awake()
    {
    var hapticThread = GetComponent<HapticThread>();
    hapticThread.onInitialized.AddListener(() => hapticThread.Run(ForceCalculation));
    }

    private Vector3 ForceCalculation(in Vector3 position)
    {
    return new Vector3(forceX, forceY, forceZ);
    }
    }
    • Les Awake obtient la méthode Fil haptique et lance les calculs haptiques dans un fil séparé. distinct. Il ajoute ensuite un écouteur à la fonction onInitialized qui, lorsqu'il est invoqué, appelle la méthode la méthode Run et transmettra ForceCalculation en tant qu'argument du délégué.
    • ForceCalculation prend le vecteur de force fourni dans la fenêtre de l'inspecteur et l'envoie à l'élément Inverse3.
  5. En entrant dans le mode de jeu, le fil haptique mettra continuellement à jour la vitesse et la position de l'appareil dans la fenêtre de l'inspecteur. de l'appareil dans la fenêtre de l'inspecteur. Explorez l'espace de travail de l'appareil et essayez de contrôler la force à l'aide des curseurs.

    AVERTISSEMENT: Lorsque vous modifiez les forces, l'Inverse3 se déplace ; veillez donc à libérer l'espace de travail de tout objet de valeur et à maintenir le curseur. l'espace de travail et de maintenir le curseur. Pour plus d'informations, voir l'article sur l'utilisation en toute sécurité.

    fil haptique

Le composant HapticThread peut contrôler le taux de rafraîchissement du fil haptique à l'aide d'un curseur. Pour de meilleurs résultats, utilisez un taux de rafraîchissement de 1KHz ou plus.

La position fournie par le HapticThread est directement mesurée à l'aide de capteurs de position sur l'appareil. de l'appareil. La vitesse, quant à elle, est calculée à l'aide d'un algorithme d'estimation de la vitesse afin de fournir un signal qu'il n'est pas nécessaire de filtrer. fournir un signal qu'il n'est pas nécessaire de filtrer. Le HapticThread peut également fournir des informations sur l'état de l'alimentation de l'appareil, l'orientation de la base et d'autres états.

Utilisation d'une poignée

  1. Créez un objet de jeu vide sous la scène, nommez-le Handle Thread et dans l'inspecteur, ajoutez le composant Handle Thread dans l'inspecteur.

  2. Dans l'inspecteur, utilisez le menu déroulant Adresse de l' appareil pour sélectionner l'appareil de la poignée correspondant au nom figurant sur son étiquette. son étiquette

    poignée-port

  3. Ajouter un cube comme enfant du curseur avec les valeurs de transformation suivantes :

    • Poste : 0, 0, -1
    • Rotation : 0, 0, 0
    • Échelle : 0.5, 0.5, 2
  4. Attachez le curseur à la propriété Avatar du fil de discussion.

  5. En mode lecture, le fil de la poignée met continuellement à jour l'orientation de l'appareil dans la fenêtre de l'inspecteur, de sorte que le déplacement de la poignée fait pivoter le curseur. de sorte qu'en déplaçant la poignée, le curseur tournera.

    fil d'Ariane

Cela permettra de mettre à jour la rotation du curseur avec l'orientation de la poignée, tandis que la position sera mise à jour par les mouvements de l'effecteur Inverse3.