Exercice - Manipuler des objets 3D avec un contrôle de limites
Le ObjectManipulator script rend un objet mobile, évolutif et pivotable à l’aide d’une ou deux mains. Ce script prend en charge le modèle d’entrée de manipulation directe, car il permet à l’utilisateur de toucher des hologrammes directement avec leurs mains. Ici, utilisez ObjectManipulator pour activer les interactions manuelles afin que vous puissiez déplacer, mettre à l’échelle et faire pivoter l’explorateur de rovers.
En outre, vous allez configurer l’Explorateur de rovers afin de pouvoir placer les pièces du rover sur le Rover pour en faire un assembly Rover complet. Dans le volet Hiérarchie, développez l’objet RoverExplorer >RoverParts et sélectionnez tous ses éléments de rover enfants et l’objet RoverAssembly, puis, dans le volet Inspecteur, cliquez sur le bouton Ajouter un composant pour ajouter les composants suivants à tous les objets sélectionnés :
- Composant Manipulateur d’objets (Script)
- Composant Contrôleur d’assemblage de composant (Script)
Avec tous les objets de partie rover et l’objet RoverAssembly toujours sélectionnés, dans le volet Inspecteur, configurez le composant Manipulateur d’objets (Script) comme suit :
Sous Paramètres interagissants de base, recherchez l’événement On Clicked (). Sélectionnez l’icône + pour ajouter un nouvel événement. Configurez l’événement comme suit :
a) Affectez l’objet RoverAssembly en tant qu’écouteur de l’événement On Clicked () en le faisant glisser depuis la fenêtre Hiérarchie vers le champ Aucun (Objet).
b. Dans la liste déroulante Sans fonction, sélectionnez TapToPlace, et StartPlacement() pour appeler cette méthode lorsque l’événement est déclenché.
Dans la liste déroulante Type de manipulation autorisé , décochez la case Mise à l’échelle . Vous ne pouvez donc activer que le déplacement et la rotation :
Sélectionnez uniquement l’objet RoverAssembly et supprimez le composant Interagissant avec état qu’il présente, le cas échéant. Sélectionnez les trois points à droite du composant, puis sélectionnez Supprimer le composant.
Dans le volet Projet, accédez au dossier Packages>MRTK Standard Assets>Audio>HoloLens2 pour localiser les clips audio :
Dans le volet Hiérarchie, réélectionnez tous les objets de partie rover, puis, dans le volet Inspecteur, sélectionnez Ajouter un composant pour ajouter le composant Sources audio et configurez-le comme suit :
- Affectez le clip audio MRTK_Scale_Start au champ AudioClip .
- Décocher la case Lecture au réveil.
- Remplacez Spatial Blend par 1.
Dans le volet Hiérarchie, développez l’objet RoverAssembly>RoverModel_PlacementHints_XRray>Parts_PlacementHints pour afficher tous les objets d’indicateur de placement, puis sélectionnez la première partie du rover, RoverParts>Camera_Part et configurez le composant Composant Assembly Controller (Script) comme suit :
- Affectez l’objet Camera_PlacementHint au champ Emplacement à placer .
Répétez l’étape 5 pour chacun des objets de partie rover restants et l’objet RoverAssembly pour configurer le composant Contrôleur d’assembly de composant (Script) comme suit :
- Pour le Generator_Part, affectez l’objet Generator_PlacementHint au champ Emplacement à placer .
- Pour le Lights_Part, affectez l’objet Lights_PlacementHint au champ Emplacement à placer .
- Pour le UHFAntenna_Part, affectez l’objet UHFAntenna_PlacementHint au champ Emplacement à placer .
- Pour le Spectrometer_Part, affectez l’objet Spectrometer_PlacementHint au champ Emplacement à placer.
- Pour roverAssembly, affectez l’objet lui-même, autrement dit le même objet RoverAssembly, au champ Location To Place .
Dans le volet Hiérarchie, sélectionnez l’objet de bouton > dans RoverExplorer > Boutons , puis, dans le volet Inspecteur, configurez l’événement PressableButton.OnClicked () de la façon suivante :
- Affectez l’objet RoverAssembly au champ None (Object).
- Dans la liste déroulante No Function , sélectionnez PartAssemblyController>ResetPlacement () pour définir cette fonction comme action à exécuter lorsque l’événement est déclenché.
Si vous entrez maintenant en mode Jeu, vous pouvez utiliser l’interaction proche ou éloignée pour placer les parties du rover sur le Rover. Une fois que la partie est proche de l’indicateur de placement correspondant, elle s’emboîte automatiquement et fait partie du Rover. Pour réinitialiser les placements, vous pouvez appuyer sur le bouton Réinitialiser :
Ajouter un contrôle de limites
Dans la fenêtre Hierarchy, sélectionnez l’objet RoverExplorer , puis, dans la fenêtre Inspector, utilisez le bouton Ajouter un composant pour ajouter le composant BoundsControl . Décochez la case en regard du composant pour le désactiver par défaut :
Dans la fenêtre Projet, accédez au dossier Packages>MRTK Spatial Manipulation>BoundsControl>Prefabs, puis cliquez et faites glisser le prefab BoundingBoxWithHandles dans le champ Bounds Visuals Prefab du composant Bounds Control.
Dans le volet Hiérarchie, développez l’objet Menu>Buttons-GridLayout (Boutons) pour afficher les trois boutons. Renommez le troisième bouton pour BoundsControl_Enable, puis, dans la fenêtre Hierarchy, configurez l’objet de jeu BoundsControl_Enable comme suit :
- Sélectionnez l’objet Frontplate > AnimatedContent > Icon > Label et modifiez le composant TextMeshPro pour activer. Vérifiez que l’objet Label est activé dans la hiérarchie.
- Configurez l’événement PressableButton.OnClicked() en affectant l’objet RoverExplorer au champ None (Object) et en sélectionnant BoundsControl>bool Enabled dans la liste déroulante No Function (vérifiez que la case à cocher d’argument est cochée).
- Sélectionnez la petite + icône pour ajouter un autre événement.
- Affectez l’objet RoverExplorer au champ None (Object).
- Dans la liste déroulante No Function , sélectionnez ObjectManipulator>bool Enabled pour mettre à jour cette valeur de propriété lorsque l’événement est déclenché et vérifiez que la case à cocher argument est cochée.
- Sélectionnez la petite + icône pour ajouter un autre événement.
- Affectez l’objet RoverExplorer au champ None (Object).
- Dans la liste déroulante No Function , sélectionnez BoundsControl>bool HandlesActive pour mettre à jour cette valeur de propriété lorsque l’événement est déclenché et vérifiez que la case à cocher argument est cochée.
- Sélectionnez l’objet Frontplate > AnimatedContent > Icon > UIButtonFontIcon et changez l’Icône en l’icône à quatre flèches sur le composant Sélecteur d’icône de police. Vous pouvez le trouver dans la liste des icônes ou définir le nom de l’icône actuelle sur l’icône 40.
Dupliquez le bouton BoundsControl_Enable et renommez-le en BoundsControl_Disable, puis, dans le volet Inspecteur, configurez le composant Button Config Helper (Script) comme suit :
- Sélectionnez l’objet Frontplate > AnimatedContent > Icon > Label et remplacez le composant TextMeshPro par Désactiver.
- Configurez l’événement PressableButton.OnClicked() en vérifiant que toutes les cases sous les événements sont désactivées.
Si vous entrez maintenant en mode Jeu et sélectionnez Activer pour activer le contrôle Bounds, vous pouvez utiliser l’interaction proche ou éloignée pour déplacer, faire pivoter et mettre à l’échelle le contrôle Limites, puis sélectionner Désactiver pour désactiver à nouveau le contrôle Limites :











