Partager via


Suivi de la main dans Unreal

Le système de suivi des mains utilise les paumes et les doigts d’une personne comme entrée. Les données sur la position et la rotation de chaque doigt, la paume entière et les mouvements de main sont disponibles. À compter d’Unreal 4.26, le suivi des mains est basé sur le plug-in Unreal HeadMountedDisplay et utilise une API commune sur toutes les plateformes et appareils XR. La fonctionnalité est la même pour les systèmes Windows Mixed Reality et OpenXR.

Pose manuelle

La pose manuelle vous permet de suivre et d’utiliser les mains et les doigts de vos utilisateurs comme entrée, qui sont accessibles à la fois dans Blueprints et C++. L’API Unreal envoie les données en tant que système de coordonnées, avec des graduations synchronisées avec le moteur Unreal.

Image squelette de main avec superposition des articulationsSquelette de main

La hiérarchie est décrite par EHandKeypoint énumération :

Image des options de bluprint de point de clé manuscrite

Vous pouvez obtenir toutes ces données à partir des mains d’un utilisateur à l’aide de la fonction Obtenir les données du contrôleur de mouvement. Cette fonction retourne une structure XRMotionControllerData . Vous trouverez ci-dessous un exemple de script Blueprint qui analyse la structure XRMotionControllerData pour obtenir des emplacements de jointure manuelle et dessine un système de coordonnées de débogage à l’emplacement de chaque joint.

Blueprint d’obtention de la fonction de données de regard connectée à la trace de ligne par fonction de canal

Il est important de case activée si la structure est valide et qu’elle est une main. Sinon, vous pouvez obtenir un comportement non défini dans l’accès aux positions, rotations et tableaux de radii.

Les poses manuelles sont exposées à Animation à l’aide du plug-in Live Link.

Si les plug-ins Windows Mixed Reality et Live Link sont activés :

  1. Sélectionnez Fenêtre > Live Link pour ouvrir la fenêtre de l’éditeur Live Link.
  2. Sélectionnez Source et activez la source de suivi des mains Windows Mixed Reality

Live Link Source

Une fois que vous avez activé la source et ouvert une ressource d’animation, développez la section Animation sous l’onglet Scène d’aperçu , voir également des options supplémentaires.

Live Link Animation

La hiérarchie d’animation manuelle est la même que dans EWMRHandKeypoint. L’animation peut être retargetée à l’aide de WindowsMixedRealityHandTrackingLiveLinkRemapAsset :

Animation live Link 2

Il peut également être sous-classé dans l’éditeur :

Remappage Live Link

Maille à main

Important

Le maillage de main nécessite OpenXR.

Vous devez télécharger le plug-in Microsoft OpenXR, disponible sur la marketplace Unreal ou GitHub.

Maille manuelle en tant que géométrie suivie

Important

L’obtention de maillages de main en tant que géométrie suivie dans OpenXR vous oblige à appeler Set Use Hand Mesh with Enabled Tracking Geometry.

Pour activer ce mode, vous devez appeler Set Hand Mesh avec enabled Tracking Geometry :

Blueprint of event begin play connected to set use hand mesh function with enabled tracking geometry mode

Remarque

Il n’est pas possible que les deux modes soient activés en même temps. Si vous activez l’un, l’autre est automatiquement désactivé.

Accès aux données Hand Mesh

Maille à main

Avant de pouvoir accéder aux données de maillage de main, vous devez :

  • Sélectionnez votre ressource ARSessionConfig, développez les paramètres AR Paramètres -> World Mapping et case activée Générer des données mesh à partir d’une géométrie suivie.

Voici les paramètres de maillage par défaut :

  1. Utiliser mesh Data for Occlusion
  2. Générer une collision pour les données mesh
  3. Générer une maille de navigation pour les données mesh
  4. Render Mesh Data in Wireframe : paramètre de débogage qui affiche le maillage généré

Ces valeurs de paramètre sont utilisées comme maillage de mappage spatial et les valeurs par défaut du maillage de la main. Vous pouvez les modifier à tout moment dans Blueprints ou code pour n’importe quel maillage.

Informations de référence sur l’API C++

Permet EEARObjectClassification de rechercher des valeurs de maillage de main dans tous les objets pouvant être suivis.

enum class EARObjectClassification : uint8
{
    // Other types
	HandMesh,
};

Les délégués suivants sont appelés lorsque le système détecte tout objet pouvant être suivi, y compris un maillage de main.

class FARSupportInterface
{
    public:
    // Other params
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableAdded)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableUpdated)
	DECLARE_AR_SI_DELEGATE_FUNCS(OnTrackableRemoved)
};

Assurez-vous que vos gestionnaires délégués suivent la signature de fonction ci-dessous :

void UARHandMeshComponent::OnTrackableAdded(UARTrackedGeometry* Added)

Vous pouvez accéder aux données de maillage par le biais des UARTrackedGeometry::GetUnderlyingMeshpoints suivants :

UMRMeshComponent* UARTrackedGeometry::GetUnderlyingMesh()

Informations de référence sur l’API Blueprint

Pour utiliser des maillages main dans des blueprints :

  1. Ajouter un composant ARTrackableNotify à un acteur blueprint

Notification ARTrackable

  1. Accédez au panneau Détails et développez la section Événements .

Notification ARTrackable 2

  1. Remplacer sur l’extension/mise à jour/supprimer la géométrie suivie avec les nœuds suivants dans votre graphique d’événements :

Notification ARTrackable

Visualisation Hand Mesh dans OpenXR

La méthode recommandée pour visualiser le maillage de main consiste à utiliser le plug-in XRVisualization d’Epic avec le plug-in Microsoft OpenXR.

Ensuite, dans l’éditeur de blueprint, vous devez utiliser la fonction Set Use Hand Mesh à partir du plug-in Microsoft OpenXR avec Enabled XRVisualization comme paramètre :

Blueprint of event begin play connected to set use hand mesh function with enabled xrvisualization mode

Pour gérer le processus de rendu, vous devez utiliser Render Motion Controller à partir de XRVisualization :

Blueprint d’obtention de la fonction de données du contrôleur de mouvement connectée pour restituer la fonction de contrôleur de mouvement

Résultat :

Image de la main numérique retardée sur une main humaine réelle

Si vous avez besoin de quelque chose de plus compliqué, comme dessiner un maillage de main avec un nuanceur personnalisé, vous devez obtenir les maillages en tant que géométrie suivie.

Rayons émanant de la main

L’obtention d’une pose manuelle fonctionne pour des interactions étroites, comme saisir des objets ou appuyer sur des boutons. Toutefois, vous devez parfois utiliser des hologrammes éloignés de vos utilisateurs. Cela peut être effectué avec des rayons de main, qui peuvent être utilisés comme pointage des appareils dans C++ et Blueprints. Vous pouvez dessiner un rayon de votre main jusqu’à un point lointain et, avec une aide du traçage des rayons Unreal, sélectionnez un hologramme qui serait autrement hors de portée.

Important

Étant donné que tous les résultats de la fonction changent chaque image, ils sont tous appelants. Pour plus d’informations sur les fonctions pures et impurables ou appelantes, consultez le guid utilisateur blueprint sur les fonctions.

Pour obtenir les données des rayons de main, vous devez utiliser la fonction Obtenir les données du contrôleur de mouvement de la section précédente. La structure retournée contient deux paramètres que vous pouvez utiliser pour créer un rayon de main : position de l’objectif et rotation de l’objectif. Ces paramètres forment un rayon dirigé par votre coude. Vous devez les prendre et trouver un hologramme pointé par.

Vous trouverez ci-dessous un exemple de détermination si un rayon de main atteint un widget et définit un résultat d’accès personnalisé :

Blueprint de la fonction de données du contrôleur de mouvement

Mouvements

HoloLens 2 effectue le suivi des mouvements spatiaux, ce qui signifie que vous pouvez capturer ces mouvements en tant qu’entrée. Le suivi des mouvements est basé sur un modèle d’abonnement. Vous devez utiliser la fonction « Configurer les mouvements » pour indiquer à l’appareil les mouvements que vous souhaitez suivre. Vous trouverez plus d’informations sur les mouvements dans le document d’utilisation de base HoloLens 2.

Windows Mixed Reality

Le blueprint de l’événement commence à être connecté pour configurer la fonction mouvements

Ensuite, vous devez ajouter du code pour vous abonner aux événements suivants :

Blueprint des mouvements de manipulation spatiale windows, appui et manipulation gaucheCapture d’écran des options de mouvement d’entrée spatiale Windows dans le volet détails

OpenXR

Dans OpenXR, les événements de mouvement sont suivis via le pipeline d’entrée. À l’aide de l’interaction manuelle, l’appareil peut reconnaître automatiquement les mouvements d’appui et de conservation, mais pas les autres. Ils sont nommés comme mappages OpenXRMsftHandInteraction Select et Grip. Vous n’avez pas besoin d’activer l’abonnement. Vous devez déclarer les événements dans Project Paramètres/Engine/Input, comme suit :

Capture d’écran des mappages d’actions OpenXR

Point de contrôle de développement suivant

Si vous suivez le parcours de développement Unreal que nous avons mis en place, vous êtes en train d’explorer les modules de base du MRTK. À partir d’ici, vous pouvez passer au composant suivant :

Ou accéder aux API et fonctionnalités de la plateforme Mixed Reality :

Vous pouvez revenir aux points de contrôle de développement Unreal à tout moment.