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

Important

Les didacticiels 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 l’utilisateur.

Dans MR Basics 101, nous avons utilisé un simple mouvement d’appui à l’air 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 est suivie 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 revisiter l’Explorateur de modèles de projet Unity, que nous avons créé dans MR Input 210. Notre ami astronaute est de retour pour nous aider dans notre exploration de ces nouveaux concepts de geste.

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 de la Mixed Reality Shared Computer Toolkit. Bien que les instructions pas à pas soient exactes et actuelles, vous pouvez voir des scripts et des visuels dans les vidéos correspondantes obsolètes. Les vidéos restent incluses pour la postérité et parce que les concepts couverts 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 d’autres emplacements faciles à atteindre.

Notes

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

Errata et notes

  • « Activer uniquement mon code » doit être désactivé (désactivé) dans Visual Studio sous Outils-Options-Débogage>> afin d’atteindre les 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 Mouvement que vous avez précédemment décompressé.
  4. Recherchez et sélectionnez le dossier De l’ExplorateurStartingModel/.
  5. Cliquez sur le bouton Sélectionner un dossier .
  6. Dans le panneau Project, développez le dossier Scenes.
  7. Double-cliquez sur la scène ModelExplorer pour la charger dans Unity.

Génération

  1. Dans Unity, sélectionnez File > Build Paramètres.
  2. Si Scenes/ModelExplorer n’est pas répertorié dans Scenes In Build, cliquez sur Ajouter des scènes ouvertes pour ajouter la scène.
  3. Si vous développez spécifiquement pour HoloLens, définissez l’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) est défini sur La version la plus récente ( 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 De l’application .
  8. Appuyez sur Sélectionner un dossier et 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 De l’application .
  2. Ouvrez la solution ModelExplorer Visual Studio.

Si vous effectuez le déploiement sur HoloLens :

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

Si vous effectuez un déploiement sur un casque immersif :

  1. À l’aide de la barre d’outils supérieure de Visual Studio, remplacez la cible de Debug par Release et de 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 boîte de réception en extrayant le déclencheur sur un contrôleur de mouvement.

Notes

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

Chapitre 1 - Commentaires détectés manuellement

Objectifs

  • Abonnez-vous aux événements de suivi des mains.
  • Utilisez les commentaires de curseur pour afficher les utilisateurs lorsqu’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 Hierarchy , 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 MR Input 210 en un qui affiche des commentaires en fonction des actions de l’utilisateur.

  1. Dans le panneau Hierarchy , sélectionnez l’objet Cursor et supprimez-le.
  2. Dans le volet Project, 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 Curseurde SimpleSinglePointerSelector 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.
  • Tout état d’interaction 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 la build de > fichiers Paramètres pour reconstruire l’application.
  • Ouvrez le dossier De l’application .
  • S’il n’est pas déjà ouvert, ouvrez la solution ModelExplorer Visual Studio.
    • (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 le HoloLens, ignorez la boîte de réception à l’aide du mouvement d’appui à l’air.
  • 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.
  • Regardez comment le curseur change lorsque votre main est détectée, puis perdue de l’affichage.
  • Si vous utilisez un casque immersif, vous devez vous connecter et déconnecter votre contrôleur. Ce retour devient moins intéressant sur un appareil immersif, car un contrôleur connecté sera toujours « disponible ».

Chapitre 2 - Navigation

Objectifs

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

Instructions

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

  1. Dans le panneau Hiérarchie , développez CursorWithFeedback.
  2. Dans le dossier Hologrammes, recherchez la ressource ScrollFeedback.
  3. Faites glisser et déposez le préfabriqué ScrollFeedback sur cursorWithFeedback GameObject 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 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é Scroll Detected Game Object dans le composant Cursor Feedback de l’Inspecteur.
  8. Dans le panneau Hierarchy , sélectionnez l’objet AstroMan .
  9. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  10. Dans le menu, tapez l’action de mouvement de la zone de recherche. 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. Faire pivoter l’objet AstroMan chaque fois qu’un mouvement de navigation est effectué.
  2. Calculez la rotationFactor pour contrôler la quantité de rotation appliquée à l’objet.
  3. Faire pivoter l’objet autour de l’axe y lorsque l’utilisateur déplace sa main vers la gauche ou la droite.

Effectuez des 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 de l’Shared Computer Toolkit, de sorte que l’utilisateur n’a pas à se concentrer sur l’astronaute une fois la rotation commencée. En conséquence, nous décolons 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 à partir de Visual Studio pour l’exécuter dans le 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 à la position prête (index pointé vers le ciel) afin que le HoloLens commence à suivre votre main.
  4. Pour faire pivoter l’astronaute, réduisez 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 - Aide à la main

Objectifs

  • Utilisez le score d’aide à la main pour vous aider à prédire quand le suivi des mains sera perdu.
  • Fournissez des commentaires sur le curseur à afficher lorsque la main de l’utilisateur se trouve près du bord de la vue de l’appareil photo.

Instructions

  1. Dans le panneau Hierarchy , sélectionnez l’objet CursorWithFeedback .
  2. Dans le panneau Inspecteur , cliquez sur le bouton Ajouter un composant .
  3. Dans le menu, tapez le guide manuelle de la zone de recherche. Sélectionnez le résultat de la recherche.
  4. Dans le panneau ProjectHologrammes dossier, recherchez la ressource HandGuidanceFeedback.
  5. Faites glisser et déposez la ressource HandGuidanceFeedback sur la propriété Hand Guidance Indicator dans le panneau Inspector .

Génération et déploiement

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

Chapitre 4 - Manipulation

Objectifs

  • Utilisez des événements de manipulation pour déplacer l’astronaute avec vos mains.
  • Fournissez des commentaires sur le curseur pour informer 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 le mot clé speech « Move Astronaut » pour activer les mouvements de manipulation et « Faire pivoter l’astronaute » pour les désactiver.
  2. Basculez vers la réponse au module de reconnaissance du mouvement de manipulation.

C’est parti.

  1. Dans le panneau Hierarchy , 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 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 la source d’entrée vocale dans la zone de recherche. 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 un nouveau mot clé.
  3. Tapez le mot clé en tant qu’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 un nouveau mot clé.
  5. Tapez le mot clé en tant qu’astronaute de rotation. 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 .

How to set-up the Speech Input Source for chapter 4

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

  1. Dans le panneau Project dossier Hologrammes, recherchez la ressource PathingFeedback.
  2. Faites glisser et déposez le préfab 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 vers 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 éléments suivants :

  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 mouvement pour déterminer où l’astronaute doit être déplacé en fonction de la position de main.
  3. Déplacez l’astronaute vers la nouvelle position.

Effectuez l’exercice de codage 4.a dans GestureAction.cs ou utilisez notre 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
            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érer dans Unity, puis générer et déployer à partir de Visual Studio pour exécuter l’application dans HoloLens.
  • Déplacez votre main devant le HoloLens et déclenchez votre doigt d’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 manipulation.
  • Réduisez votre doigt d’index vers le bas jusqu’à votre pouce et maintenez-les enfoncés ensemble.
  • Lorsque vous déplacez votre main, l’astronaute se déplace également (c’est manipulation).
  • Lever votre doigt d’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 « Faire pivoter l’astronaute » pour revenir à l’état pivotable.

Chapitre 5 - Extension 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 effectuer 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 à son formulaire d’origine.

Nous allons le faire en ajoutant deux mots clés supplémentaires à la source d’entrée vocale du chapitre précédent. Nous allons également dé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 un nouveau mot clé.
  3. Tapez le mot clé comme modèle de développement. N’hésitez pas à ajouter un raccourci de touche si vous le souhaitez.
  4. Cliquez sur le + côté droit pour ajouter un nouveau 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 Speech. Sélectionnez le résultat de la recherche.
  8. Vérifiez l’écouteur global, car nous voulons que ces commandes fonctionnent indépendamment du GameObject que nous 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 la réponse sous Réponse, puis faites glisser l’AstronautManager+ à partir de la hiérarchie dans le champ None (Object).
  11. Maintenant, cliquez sur la liste déroulante No Function , 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 la réponse sous Réponse, puis faites glisser l’AstronautManager+ à partir de la hiérarchie dans le champ None (Object).
  14. Maintenant, cliquez sur la liste déroulante No Function , sélectionnez AstronautManager, puis ResetModelCommand.

How to set-up the Speech Input Source and Handler for chapter 5

Génération et déploiement

  • Essayez ! Générez et déployez l’application sur le HoloLens.
  • Dites Développer le modèle pour voir le modèle astronaute développé.
  • Utilisez navigation pour faire pivoter des pièces individuelles du costume astronaute.
  • Dites Déplacer l’astronaute , puis utilisez manipulation pour déplacer des pièces individuelles du costume d’astronaute.
  • Dites Faire pivoter l’astronaute pour faire pivoter les pièces à nouveau.
  • Dites Réinitialiser le modèle pour renvoyer l’astronaute à sa forme d’origine.

La fin

Félicitations ! Vous avez maintenant terminé MR Input 211 : Mouvement.

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