Aller au contenu principal

Guide de démarrage du package Inverse Unity

Ce guide présente les paramètres de base et propose un exemple simple illustrant l'utilisation de base du package « Inverse Unity » de Haply , notamment l'installation du package, le montage du dispositif haptique et l'écriture de scripts simples pour le contrôle de la force et de la position.

Pour obtenir des informations détaillées et découvrir des astuces avancées, veuillez consulterle tutoriel.

Prise en charge des versions​

  • Unity 2021.3.x LTS : prise en charge
  • Unity 2022.1.x LTS : prise en charge
  • Unity 6000.x LTS : pris en charge
  • Haply Inverse SDK: 3.1.0 ou version ultérieure

Conditions préalables​

  • Installation Haply Inverse SDK la version 3.1.0 ou une version ultérieure.
  • Assurez-vous que le service «Haply Inverse » fonctionne correctement.
  • Avant de lancer la scène, assurez-vous que vos appareils « Inverse3 » et « VerseGrip » sont connectés et que leur étalonnage est terminé.
Remarque

Ce logiciel est en cours de développement afin d'améliorer la prise en charge de Inverse3 . Pour toute demande d'assistance, de commentaires ou de suggestions, veuilleznous contacter.

Installation​

Le package Inverse Unityest disponible via le registre des espaces de noms de Unity. Pour intégrer ce package :

  1. Ouvrez Édition > Paramètres du projet > Gestionnaire de paquets, ajoutezun nouveau registre de portée et renseignez les champs suivants :

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

    Registre des portées

  2. Entrer Fenêtre > Gestionnaire de paquets, cliquez sur ajouter + Cliquez sur le bouton, puis sélectionnez Ajouter un paquet par nom。 Saisie co.haply.inverse, puis cliquez sur Ajouter。

    Interface d'ajout rapide

Une fois l'installation terminée, le gestionnaire de paquets affichera le paquet Inverse.

Configuration du Haptic Rig​

Pour créer un « Haptic Rig », accédez à GameObject > Haply Inverse > Haptic Rig (une main). Cette opération permettra de configurer un environnement complet comprenant un contrôleur « Inverse3 » et un VerseGrip.

La scène comprendra désormais :

  • Haptic Device Mapper: utilise le service inverse «Haply » pour gérer l'attribution des périphériques.
  • Origine haptique: zoomer et positionner les paramètres haptiques dans la scène.
  • Contrôleur haptique: en fonction Inverse3 et aux données de l'appareil VerseGrip, gère la force ou la position du curseur.
  • Curseur: contient les composants «Inverse3 » et « VerseGrip » utilisés pour le rendu de la scène.

Dispositif haptique à une main

Pour plus d'informations sur les composants du paquet, veuillez consulterla page de documentation consacrée à l'architecture globale.

En mode « Play », la sphère se déplacera et tournera en synchronisation avec Inverse3 se déplacer et tourner en synchronisation avec le curseur, tout en suivant l'orientation du VerseGrip.

Inverse3 Panneau de contrôle

Panneau de contrôle de la poignée

Mode de contrôle de la force​

Créer un ForceControl.cs Script C#, puis le monter sur Origine haptique Sur le GameObject. Ce script vous permet, à l'aide du curseur situé dans le panneau d'affichage, de Inverse3 L'équipement exerce une force.

using Haply.Inverse;
using UnityEngine;

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

private Inverse3 _inverse3;

private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}

protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}

protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.Release();
}

private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalForce(new Vector3(forceX, forceY, forceZ));
}
}

Contrôle de la force

Description du script​

  • forceX, Y, Z: Les composantes du vecteur de force réglées à l'aide du curseur, avant d'être transmises à CursorSetForce Avant de commencer la procédure, assurez-vous que la force reste dans les limites de sécurité. Vous pouvez également utiliser un modèle standard Vector3 Champ.

  • Awake(): Récupérer à partir du GameObject actuel ou de ses enfants Inverse3 Composants.

  • OnEnable(): à Awake Après l'appel de la méthode, ainsi qu'à chaque fois que le script est lancé, enregistrer dans un thread indépendant les mises à jour tactiles dans OnDeviceStateChanged Rappel.

  • OnDisable(): Lorsque le script est désactivé ou que l'application est arrêtée, désenregistrer la fonction de rappel et réinitialiser la force.

  • OnDeviceStateChanged: Récupérer depuis le panneau de contrôle force vecteur, et via CursorSetForce Comment le transférer à Inverse3。

    Important : cette fonction de rappel est déclenchée à haute fréquence par le thread tactile, dans une plage comprise entre 1 kHz et 8 kHz. Veillez à ce que tout le code de cette fonction de rappel soit hautement optimisé.

Mode d'emploi​

Avant de passer en mode « Play », assurez-vous que vous tenez bien le curseur. L'appareil doit passer en mode « Force Control » et le voyant vert doit s'allumer. Vous pouvez ensuite régler la force d'actionnement à l'aide du curseur et effectuer des opérations dans l'espace de travail de l'appareil.

Remarque

La force d'ajustement peut entraîner un déplacement de Inverse3 . Veillez à ce qu'il n'y ait aucun obstacle dans l'espace de travail et tenez toujours le curseur. Pour connaître les consignes de sécurité, consultezl'article consacré à la sécurité d'utilisation.

Force de réglage du curseur

Mode de contrôle de position​

De la même manière, veuillez créer un élément permettant de contrôler la position de l'appareil : PositionControl.cs Script C#, puis le monter sur Origine haptique Sur le GameObject.

using Haply.Inverse;
using UnityEngine;

public class PositionControl : MonoBehaviour
{
[Range(-0.1f, 0.1f)]
public float positionX;
[Range(-0.1f, 0.1f)]
public float positionY;
[Range(-0.1f, 0.1f)]
public float positionZ;

private Inverse3 _inverse3;

private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}

protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}

protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.Release();
}

private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalPosition(inverse3.WorkspaceCenterLocalPosition + new Vector3(positionX, positionY, positionZ));
}
}

Veillez à désactiver le script ForceControl ainsi que tout autre script contrôlant l'appareil.

contrôle de position

Comme dans l'exemple précédent :

  • En mode exécution, utilisez positionX, Y, and Z et régler à l'aide du curseur Emplacement。

    Sélectionné Range(-0.1, 0.1) Cela correspond approximativement à la position maximale pouvant être atteinte.

  • Awake Comment obtenir Inverse3 Composants.
  • OnEnable Méthode dans Awake Après l'appel de la méthode et à chaque fois que le script est lancé, s'enregistrer auprès des mises à jour tactiles dans un thread distinct OnDeviceStateChanged Rappel.
  • OnDisable Méthode permettant de désenregistrer les rappels et de réinitialiser les forces lorsque le script est désactivé ou que l'application est arrêtée.

Il existe toutefois les différences suivantes entre les deux :

  • OnDeviceStateChanged À chaque trame tactile, la fonction de rappel récupère le vecteur de position dans le panneau d'affichage et le compare à WorkspaceCenterLocalPosition Additionner, et en passant par CursorSetLocalPosition Veuillez l'envoyer à l'adresse Inverse3.

Avant de passer en mode de fonctionnement, placez le curseur près du centre. L'appareil doit passer en mode « Contrôle de position » (le voyant s'allume en bleu). Vous pouvez ensuite utiliser le curseur pour régler la sortie de position et explorer l'espace de travail de l'appareil.

Remarque

Lors du réglage de la position, le «Inverse3 » se déplacera. Veillez à ce qu’aucun objet de valeur ne se trouve dans l’espace de travail et tenez toujours le curseur. Pour plus d’informations, consultez l’article consacréà la sécurité d’utilisation.

position du curseur