HoloLens (1ère génération) Entrée 211 : Mouvement

Important

Les tutoriels Mixed Reality Academy ont été conçus avec HoloLens (1ère génération), Unity 2017 et Mixed Reality casques immersifs à l’esprit. Nous estimons qu’il est important de laisser ces tutoriels à la disposition des développeurs qui recherchent encore des conseils pour développer des applications sur ces appareils. Ces didacticiels ne seront pas mis à jour avec les derniers ensembles d’outils ou interactions utilisés pour HoloLens 2 et peuvent ne pas être compatibles avec les versions plus récentes d’Unity. Ils sont fournis dans le but de fonctionner sur les appareils pris en charge. Une nouvelle série de tutoriels a été publiée pour HoloLens 2.

Les mouvements transforment l’intention de l’utilisateur en action. En effectuant des mouvements, les utilisateurs peuvent interagir avec des hologrammes. Dans ce cours, nous allons apprendre à suivre les mains de l’utilisateur, à répondre aux entrées de l’utilisateur et à envoyer des commentaires à l’utilisateur en fonction de l’état et de l’emplacement de la main.

Dans MR Basics 101, nous avons utilisé un simple mouvement d’appui aérien pour interagir avec nos hologrammes. Maintenant, nous allons aller au-delà du mouvement d’appui aérien et explorer de nouveaux concepts pour :

  • Détectez quand la main de l’utilisateur fait l’objet d’un suivi et fournissez des commentaires à l’utilisateur.
  • Utilisez un mouvement de navigation pour faire pivoter nos hologrammes.
  • Fournissez des commentaires lorsque la main de l’utilisateur est sur le point de sortir de l’affichage.
  • Utilisez des événements de manipulation pour permettre aux utilisateurs de déplacer des hologrammes avec leurs mains.

Dans ce cours, nous allons revenir sur le modèle de projet Unity Explorer, que nous avons intégré à MR Input 210. Notre ami astronaute est de retour pour nous aider dans notre exploration de ces nouveaux concepts de mouvement.

Important

Les vidéos incorporées dans chacun des chapitres ci-dessous ont été enregistrées à l’aide d’une version antérieure d’Unity et du Mixed Reality Toolkit. Bien que les instructions pas à pas soient exactes et à jour, vous pouvez voir des scripts et des visuels dans les vidéos correspondantes qui sont obsolètes. Les vidéos restent incluses pour la postérité et parce que les concepts abordés s’appliquent toujours.

Prise en charge des appareils

Cours HoloLens Casques immersifs
Réalité mixte - Entrées - Cours 211 : Mouvement ✔️ ✔️

Avant de commencer

Prérequis

Fichiers projet

  • Téléchargez les fichiers requis par le projet. Nécessite Unity 2017.2 ou version ultérieure.
  • Annulez l’archivage des fichiers sur votre bureau ou dans un autre emplacement facile d’accès.

Notes

Si vous souhaitez parcourir le code source avant de le télécharger, il est disponible sur GitHub.

Errata et notes

  • « Activer juste mon code » doit être désactivé (décoché) dans Visual Studio sous Outils-Options-Débogage>> afin d’atteindre des points d’arrêt dans votre code.

Chapitre 0 - Configuration d’Unity

Instructions

  1. Démarrez Unity.
  2. Sélectionnez Ouvrir.
  3. Accédez au dossier Gesture que vous avez précédemment archivé.
  4. Recherchez et sélectionnez le dossier Démarrage/du modèle Explorer.
  5. Cliquez sur le bouton Sélectionner un dossier .
  6. Dans le panneau Projet , développez le dossier Scènes .
  7. Double-cliquez sur ModelExplorer scene pour la charger dans Unity.

Génération

  1. Dans Unity, sélectionnez Paramètres de build de fichier>.
  2. Si Scenes/ModelExplorer n’est pas répertorié dans Scènes dans la build, cliquez sur Ajouter des scènes ouvertes pour ajouter la scène.
  3. Si vous développez spécifiquement pour HoloLens, définissez Appareil cible sur HoloLens. Sinon, laissez-le sur n’importe quel appareil.
  4. Vérifiez que le type de build est défini sur D3D et que le KIT de développement logiciel (SDK) a la valeur Dernier installé (qui doit être sdk 16299 ou version ultérieure).
  5. Cliquez sur Générer.
  6. Créez un dossier nommé « App ».
  7. Cliquez sur le dossier Application .
  8. Appuyez sur Sélectionner un dossier pour que Unity commence à générer le projet pour Visual Studio.

Une fois Unity terminé, une fenêtre Explorateur de fichiers s’affiche.

  1. Ouvrez le dossier Application .
  2. Ouvrez la solution Visual Studio ModelExplorer.

En cas de déploiement sur HoloLens :

  1. À l’aide de la barre d’outils supérieure de Visual Studio, remplacez la cible Debug par Release et d’ARM par x86.
  2. Cliquez sur la flèche déroulante en regard du bouton Ordinateur local, puis sélectionnez Ordinateur distant.
  3. Entrez l’adresse IP de votre appareil HoloLens et définissez Mode d’authentification sur Universel (protocole non chiffré). Cliquez sur Sélectionner. Si vous ne connaissez pas l’adresse IP de votre appareil, recherchez dans Paramètres > Réseau & Options avancées Internet>.
  4. Dans la barre de menus supérieure, cliquez sur Déboguer -> Démarrer sans débogage ou appuyez sur Ctrl + F5. S’il s’agit de la première fois qu’il s’agit d’un déploiement sur votre appareil, vous devez l’associer à Visual Studio.
  5. Une fois l’application déployée, ignorez la Fitbox avec un mouvement de sélection.

En cas de déploiement sur un casque immersif :

  1. À l’aide de la barre d’outils supérieure dans Visual Studio, remplacez la cible Debug par Release et d’ARM par x64.
  2. Vérifiez que la cible de déploiement est définie sur Ordinateur local.
  3. Dans la barre de menus supérieure, cliquez sur Déboguer -> Démarrer sans débogage ou appuyez sur Ctrl + F5.
  4. Une fois l’application déployée, ignorez la Fitbox en tirant le déclencheur sur un contrôleur de mouvement.

Notes

Vous remarquerez peut-être des erreurs rouges dans le panneau Erreurs de Visual Studio. Il est prudent de les ignorer. Basculez vers le panneau Sortie pour afficher la progression réelle de la build. Les erreurs dans le panneau Sortie vous obligeront à apporter un correctif (le plus souvent, elles sont causées par une erreur dans un script).

Chapitre 1 - Commentaires détectés à la main

Objectifs

  • Abonnez-vous aux événements de suivi des mains.
  • Utilisez les commentaires du curseur pour indiquer aux utilisateurs quand une main est suivie.

Notes

Sur HoloLens 2 , les mains détectées se déclenchent chaque fois que les mains sont visibles (pas seulement lorsqu’un doigt pointe vers le haut).

Instructions

  • Dans le panneau Hiérarchie , développez l’objet InputManager .
  • Recherchez et sélectionnez l’objet GesturesInput .

Le script InteractionInputSource.cs effectue les étapes suivantes :

  1. S’abonne aux événements InteractionSourceDetected et InteractionSourceLost.
  2. Définit l’état HandDetected.
  3. Se désabonne des événements InteractionSourceDetected et InteractionSourceLost.

Ensuite, nous allons mettre à niveau notre curseur de l’entrée MR 210 en un qui affiche les commentaires en fonction des actions de l’utilisateur.

  1. Dans le panneau Hiérarchie , sélectionnez l’objet Cursor et supprimez-le.
  2. Dans le panneau Projet , recherchez CursorWithFeedback et faites-le glisser dans le panneau Hiérarchie .
  3. Cliquez sur InputManager dans le panneau Hierarchy, puis faites glisser l’objet CursorWithFeedback de la hiérarchie dans le champ CurseursimpleSinglePointerSelector d’InputManager, en bas de l’inspecteur.
  4. Cliquez sur cursorWithFeedback dans la hiérarchie.
  5. Dans le panneau Inspecteur , développez Données d’état du curseur sur le script Curseur d’objet .

Les données d’état du curseur fonctionnent comme suit :

  • Tout état Observer signifie qu’aucune main n’est détectée et que l’utilisateur regarde simplement autour de lui.
  • Tout état Interact signifie qu’une main ou un contrôleur est détecté.
  • Tout état de pointage signifie que l’utilisateur examine un hologramme.

Génération et déploiement

  • Dans Unity, utilisez les paramètres de build de fichier > pour reconstruire l’application.
  • Ouvrez le dossier Application .
  • S’il n’est pas déjà ouvert, ouvrez la solution Visual Studio ModelExplorer.
    • (Si vous avez déjà créé/déployé ce projet dans Visual Studio pendant la configuration, vous pouvez ouvrir cette instance de VS et cliquer sur « Recharger tout » lorsque vous y êtes invité).
  • Dans Visual Studio, cliquez sur Déboguer -> Démarrer sans débogage ou appuyez sur Ctrl + F5.
  • Une fois l’application déployée sur HoloLens, ignorez la fitbox à l’aide du mouvement d’appui aérien.
  • Déplacez votre main dans la vue et pointez votre index vers le ciel pour commencer le suivi des mains.
  • Déplacez votre main vers la gauche, la droite, le haut et le bas.
  • Observez comment le curseur change lorsque votre main est détectée, puis perdue de la vue.
  • Si vous utilisez un casque immersif, vous devrez connecter et déconnecter votre manette. Ce commentaire devient moins intéressant sur un appareil immersif, car une manette connectée sera toujours « disponible ».

Chapitre 2 - Navigation

Objectifs

  • Utilisez les événements de mouvement de navigation pour faire pivoter l’astronaute.

Instructions

Pour utiliser les mouvements de navigation dans notre application, nous allons modifier GestureAction.cs pour faire pivoter des objets lorsque le mouvement de navigation se produit. En outre, nous ajouterons des commentaires au curseur à afficher lorsque la navigation est disponible.

  1. Dans le panneau Hiérarchie , développez CursorWithFeedback.
  2. Dans le dossier Holograms , recherchez la ressource ScrollFeedback .
  3. Faites glisser et déposez le préfabriqué ScrollFeedback sur le GameObject CursorWithFeedback dans la hiérarchie.
  4. Cliquez sur CursorWithFeedback.
  5. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  6. Dans le menu, tapez dans la zone de recherche CursorFeedback. Sélectionnez le résultat de la recherche.
  7. Faites glisser et déposez l’objet ScrollFeedback de la hiérarchie vers la propriété Objet de jeu détecté Scroll dans le composant Cursor Feedback de l’inspecteur.
  8. Dans le panneau Hiérarchie , sélectionnez l’objet AstroMan .
  9. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  10. Dans le menu, tapez dans la zone de recherche Action de mouvement. Sélectionnez le résultat de la recherche.

Ensuite, ouvrez GestureAction.cs dans Visual Studio. Dans l’exercice de codage 2.c, modifiez le script pour effectuer les opérations suivantes :

  1. Faites pivoter l’objet AstroMan chaque fois qu’un mouvement de navigation est effectué.
  2. Calculez le rotationFactor pour contrôler la quantité de rotation appliquée à l’objet.
  3. Faites pivoter l’objet autour de l’axe y lorsque l’utilisateur déplace sa main vers la gauche ou la droite.

Effectuez les exercices de codage 2.c dans le script ou remplacez le code par la solution terminée ci-dessous :

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Vous remarquerez que les autres événements de navigation sont déjà renseignés avec des informations. Nous envoyons le GameObject sur la pile modale d’InputSystem du Kit de ressources, afin que l’utilisateur n’ait pas à se concentrer sur l’astronaute une fois la rotation commencée. En conséquence, nous désactivons le GameObject de la pile une fois le mouvement terminé.

Génération et déploiement

  1. Régénérez l’application dans Unity, puis générez et déployez-la à partir de Visual Studio pour l’exécuter dans HoloLens.
  2. Regardez l’astronaute, deux flèches doivent apparaître de chaque côté du curseur. Ce nouveau visuel indique que l’astronaute peut être pivoté.
  3. Placez votre main dans la position prête (index pointé vers le ciel) afin que l’HoloLens commence à suivre votre main.
  4. Pour faire pivoter l’astronaute, abaissez votre index à une position de pincement, puis déplacez votre main vers la gauche ou la droite pour déclencher le mouvement NavigationX.

Chapitre 3 - Instructions manuelles

Objectifs

  • Utilisez le score d’aide à la main pour prédire quand le suivi des mains sera perdu.
  • Fournissez des commentaires sur le curseur pour indiquer quand la main de l’utilisateur s’approche du bord de vue de l’appareil photo.

Instructions

  1. Dans le panneau Hiérarchie , sélectionnez l’objet CursorWithFeedback .
  2. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  3. Dans le menu, tapez dans la zone de recherche Guide manuelle. Sélectionnez le résultat de la recherche.
  4. Dans le dossier Holograms du panneau Projet, recherchez la ressource HandGuidanceFeedback.
  5. Faites glisser et déposez la ressource HandGuidanceFeedback sur la propriété Indicateur d’aide à la main dans le panneau Inspecteur .

Génération et déploiement

  • Régénérez l’application dans Unity, puis générez et déployez-la à partir de Visual Studio pour découvrir l’application sur HoloLens.
  • Mettez votre main en vue et levez votre index pour être suivi.
  • Commencez à faire pivoter l’astronaute avec le mouvement de navigation (pincez l’index et le pouce ensemble).
  • Déplacez votre main loin vers la gauche, la droite, le haut et le bas.
  • Lorsque votre main s’approche du bord du cadre de mouvement, une flèche doit apparaître en regard du curseur pour vous avertir que le suivi de la main sera perdu. La flèche indique la direction dans laquelle déplacer votre main afin d’éviter la perte de suivi.

Chapitre 4 - Manipulation

Objectifs

  • Utilisez les événements de manipulation pour déplacer l’astronaute avec vos mains.
  • Fournissez des commentaires sur le curseur pour indiquer à l’utilisateur quand la manipulation peut être utilisée.

Instructions

GestureManager.cs et AstronautManager.cs nous permettent d’effectuer les opérations suivantes :

  1. Utilisez la mot clé vocale « Déplacer l’astronaute » pour activer les mouvements de manipulation et « Rotation de l’astronaute » pour les désactiver.
  2. Basculez vers la réponse à l’outil De reconnaissance des mouvements de manipulation.

Commençons.

  1. Dans le panneau Hiérarchie , créez un GameObject vide. Nommez-le « AstronautManager ».
  2. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  3. Dans le menu, tapez dans la zone de recherche Astronaut Manager. Sélectionnez le résultat de la recherche.
  4. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  5. Dans le menu, tapez dans la zone de recherche Source d’entrée vocale. Sélectionnez le résultat de la recherche.

Nous allons maintenant ajouter les commandes vocales requises pour contrôler l’état d’interaction de l’astronaute.

  1. Développez la section Mots clés dans l’inspecteur.
  2. Cliquez sur le + côté droit pour ajouter une nouvelle mot clé.
  3. Tapez le mot clé comme Astronaute de déplacement. N’hésitez pas à ajouter un raccourci de touche si vous le souhaitez.
  4. Cliquez sur le + côté droit pour ajouter une nouvelle mot clé.
  5. Tapez le mot clé en tant que Rotation de l’astronaute. N’hésitez pas à ajouter un raccourci de touche si vous le souhaitez.
  6. Le code de gestionnaire correspondant se trouve dans GestureAction.cs, dans le gestionnaire ISpeechHandler.OnSpeechKeywordRecognized .

Comment configurer la source d’entrée vocale pour le chapitre 4

Ensuite, nous allons configurer les commentaires de manipulation sur le curseur.

  1. Dans le dossier Holograms du panneau projet, recherchez la ressource PathingFeedback.
  2. Faites glisser et déposez le préfabriqué PathingFeedback sur l’objet CursorWithFeedback dans la hiérarchie.
  3. Dans le panneau Hiérarchie , cliquez sur CursorWithFeedback.
  4. Faites glisser et déposez l’objet PathingFeedback de la hiérarchie sur la propriété Pathing Detected Game Object dans le composant Cursor Feedback de l’inspecteur.

Nous devons maintenant ajouter du code à GestureAction.cs pour activer les opérations suivantes :

  1. Ajoutez du code à la fonction IManipulationHandler.OnManipulationUpdated , qui déplacera l’astronaute lorsqu’un mouvement de manipulation est détecté.
  2. Calculez le vecteur de déplacement pour déterminer où l’astronaute doit être déplacé en fonction de la position de la main.
  3. Déplacez l’astronaute vers la nouvelle position.

Effectuez l’exercice de codage 4.a dans GestureAction.cs, ou utilisez notre solution complète ci-dessous :

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
            transform.position = manipulationOriginalPosition + eventData.CumulativeDelta;
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Génération et déploiement

  • Régénérez dans Unity, puis générez et déployez à partir de Visual Studio pour exécuter l’application dans HoloLens.
  • Déplacez votre main devant l’HoloLens et levez votre index afin qu’il puisse être suivi.
  • Concentrez le curseur sur l’astronaute.
  • Dites « Déplacer l’astronaute » pour déplacer l’astronaute avec un geste de manipulation.
  • Quatre flèches doivent apparaître autour du curseur pour indiquer que le programme répond désormais aux événements de manipulation.
  • Abaissez votre index jusqu’à votre pouce et maintenez-les pincés ensemble.
  • Lorsque vous déplacez votre main, l’astronaute se déplacera aussi (c’est manipulation).
  • Levez votre index pour arrêter de manipuler l’astronaute.
  • Remarque : si vous ne dites pas « Déplacer l’astronaute » avant de déplacer votre main, le mouvement de navigation sera utilisé à la place.
  • Dites « Rotation de l’astronaute » pour revenir à l’état pivotable.

Chapitre 5 - Expansion du modèle

Objectifs

  • Développez le modèle Astronaut en plusieurs éléments plus petits avec lesquels l’utilisateur peut interagir.
  • Déplacez chaque élément individuellement à l’aide des mouvements de navigation et de manipulation.

Instructions

Dans cette section, nous allons accomplir les tâches suivantes :

  1. Ajoutez un nouveau mot clé « Développer le modèle » pour développer le modèle astronaute.
  2. Ajoutez un nouveau mot clé « Réinitialiser le modèle » pour renvoyer le modèle à sa forme d’origine.

Pour ce faire, nous allons ajouter deux mots clés supplémentaires à la source d’entrée vocale du chapitre précédent. Nous allons également montrer une autre façon de gérer les événements de reconnaissance.

  1. Cliquez de nouveau sur AstronautManager dans l’inspecteur et développez la section Mots clés de l’inspecteur.
  2. Cliquez sur le + côté droit pour ajouter une nouvelle mot clé.
  3. Tapez le mot clé comme Développer le modèle. N’hésitez pas à ajouter un raccourci de touche si vous le souhaitez.
  4. Cliquez sur le + côté droit pour ajouter une nouvelle mot clé.
  5. Tapez le mot clé comme Modèle de réinitialisation. N’hésitez pas à ajouter un raccourci de touche si vous le souhaitez.
  6. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  7. Dans le menu, tapez dans la zone de recherche Gestionnaire d’entrée vocale. Sélectionnez le résultat de la recherche.
  8. Vérifiez si l’écouteur global est, car nous voulons que ces commandes fonctionnent quel que soit le GameObject que nous concentrons.
  9. Cliquez sur le + bouton et sélectionnez Développer le modèle dans la liste déroulante Mot clé.
  10. Cliquez sur le + sous Réponse, puis faites glisser AstronautManager de la hiérarchie dans le champ Aucun (objet).
  11. Maintenant, cliquez sur la liste déroulante Aucune fonction , sélectionnez AstronautManager, puis ExpandModelCommand.
  12. Cliquez sur le bouton du + gestionnaire d’entrée vocale et sélectionnez Réinitialiser le modèle dans la liste déroulante Mot clé.
  13. Cliquez sur le + sous Réponse, puis faites glisser AstronautManager de la hiérarchie dans le champ Aucun (objet).
  14. Maintenant, cliquez sur la liste déroulante Aucune fonction , sélectionnez AstronautManager, puis ResetModelCommand.

Comment configurer la source et le gestionnaire d’entrée vocale pour le chapitre 5

Génération et déploiement

  • Essayez ! Générez et déployez l’application sur HoloLens.
  • Dites Développer le modèle pour voir le modèle d’astronaute développé.
  • Utilisez Navigation pour faire pivoter des pièces individuelles de la combinaison d’astronaute.
  • Dites Déplacer l’astronaute , puis utilisez Manipulation pour déplacer des pièces individuelles de la combinaison d’astronaute.
  • Dites Faire pivoter astronaute pour faire pivoter à nouveau les morceaux.
  • Dites réinitialiser le modèle pour renvoyer l’astronaute à sa forme d’origine.

La fin

Félicitations ! Vous avez maintenant terminé l’entrée MR 211 : Mouvement.

  • Vous savez comment détecter et répondre aux événements de suivi des mains, de navigation et de manipulation.
  • Vous comprenez la différence entre les mouvements de navigation et de manipulation.
  • Vous savez comment modifier le curseur pour fournir des commentaires visuels pour quand une main est détectée, quand une main est sur le point d’être perdue et pour quand un objet prend en charge différentes interactions (navigation ou manipulation).