Comment créer votre première application HoloLens avec Unity

HoloLens de Microsoft est vraiment génial. Je l'ai découvert lors de mon stage cet été, et j'ai eu beaucoup de plaisir à le développer.

Les applications HoloLens sont créées à l'aide de DirectX avec C ++ ou Unity avec C #. J'ai trouvé qu'il est généralement plus rapide et plus facile de mettre en place une application avec Unity.

Dans cet article, nous allons configurer Unity pour le développement HoloLens, créer un cube interactif et activer l'émulateur HoloLens afin que vous puissiez voir votre création. Cet article est destiné aux débutants de Unity, donc si vous avez de l'expérience avec l'éditeur, je vous recommande de suivre les tutoriels de Microsoft.

Conditions préalables

  1. Un PC Windows 10 avec la mise à jour d'avril 2018
  2. L'émulateur HoloLens que vous pouvez télécharger ici
  3. Visual Studio 2017 - L'édition communautaire est bien
  4. Unity - Assurez-vous d'ajouter le composant de backend de script Windows .NET lors de l'installation
  5. Le HoloToolKit

Vous pouvez trouver le code source complet ici.

Installer

Ouvrez Unity. Si c'est la première fois que vous utilisez l'éditeur, vous serez invité à vous connecter ou à vous inscrire. Je recommanderais Unity Personal, sauf si vous prévoyez de monétiser votre application.

Après vous être connecté, créez un nouveau projet et entrez un nom. Vous devriez être accueilli avec cet écran une fois que le projet a terminé la configuration initiale.

Cliquez avec le bouton droit sur le dossier Assets dans le coin inférieur gauche. Accédez à Importer un package -> Package personnalisé et ouvrez le fichier HoloToolKit unity que nous avons téléchargé précédemment. Une fenêtre contextuelle Unity apparaîtra, cliquez sur Tout et importez les actifs.

Ensuite, nous créerons notre scène. Sélectionnez Fichier -> Nouvelle scène et enregistrez-la en tant que principale.

Unity a besoin d'une configuration spéciale pour générer un projet pour HoloLens. Heureusement, HoloToolKit a des scripts utilitaires qui font cette configuration pour nous. Dans la barre d'outils supérieure, sélectionnez Boîte à outils de réalité mixte -> Configurer -> Appliquer les paramètres de projet de réalité mixte. Utilisez les valeurs par défaut. Une fois la configuration terminée, appliquez les paramètres de scène de réalité mixte. Supprimez le GameObject de lumière directionnelle.

Impressionnant! Jusqu'à présent, nous avons importé HoloToolKit et configuré Unity pour le développement HoloLens. Dans la section suivante, je vais vous présenter les bases de Unity, puis nous obtiendrons un cube à rendre à l'écran.

Se familiariser avec l'éditeur

Voici à quoi devrait ressembler l'éditeur à ce stade. Notez les trois zones encadrées:

La zone rouge à gauche est le panneau de hiérarchie des scènes. Ici, nous pouvons ajouter de nouveaux GameObjects et obtenir un aperçu de haut niveau de l'application actuelle.Un GameObject est une classe de base pour toutes les entités Unity. Il peut s'agir d'un objet physique comme un cube ou d'une collection de scripts comme le gestionnaire d'entrée dans la scène.

La zone bleue inférieure contient le menu des ressources et la console. Le menu des ressources est exactement ce à quoi il ressemble: il contient les scripts C #, les matériaux, les préfabriqués et les maillages nécessaires pour exécuter votre application.

La zone verte de droite est le menu de l'inspecteur. C'est ici que vous pouvez ajouter et modifier les composants de vos GameObjects. Les composants sont ce qui compose le comportement de vos GameObjects. Ils déterminent l'apparence, l'interactivité et la physique de leurs parents.

Créer un cube

Nous allons maintenant afficher notre premier GameObject à l'écran. Dans le panneau de hiérarchie de la scène, cliquez avec le bouton droit de la souris et sélectionnez Objet 3D -> Cube. Un cube devrait apparaître dans l'éditeur.

Double-cliquez sur Cube dans le panneau dans la hiérarchie et dans le panneau droit de l'inspecteur, changez la position en (0,0,2). Réglez l'échelle sur (.25, .25, .25). Votre panneau d'inspection doit ressembler à ceci:

Agréable! Passons en revue les étapes de génération afin que nous puissions voir notre cube dans l'émulateur HoloLens.

Dans Unity, sélectionnez Fichier-> Paramètres de construction. La fenêtre contextuelle de construction devrait apparaître, alors cliquez sur le bouton de construction. Dans la fenêtre contextuelle du dossier, créez un nouveau dossier appelé App et choisissez-le comme destination de construction.

Une fois la génération terminée, ouvrez la solution Visual Studio dans le dossier App. Modifiez les options de débogage sur Release, x86 et ciblez l'émulateur HoloLens. Votre barre d'options devrait ressembler à ceci:

Exécutez la solution et après le démarrage de l'émulateur et le chargement de votre application, vous devriez voir votre cube à l'écran.

Rendre le cube interactif

Maintenant que nous avons compris comment insérer un cube dans notre application, faisons en sorte que le cube fasse réellement quelque chose. Lorsque nous regardons le cube, il pivote et lorsque nous cliquons sur le cube, sa taille augmente.

Revenez à Unity et créez un nouveau script dans le panneau des ressources appelé InteractiveCube. Pour créer un nouveau script, cliquez avec le bouton droit sur le panneau des ressources et sélectionnez Créer -> Script C #.

Pour ajouter le script au cube, assurez-vous que le cube est sélectionné, puis faites glisser et déposez le script sur le panneau de l'inspecteur. Ça devrait ressembler à ça:

Double-cliquez sur le script dans l'onglet actifs et une instance de Visual Studio devrait apparaître.

Importez HoloToolkit.Unity.InputModule en haut de notre script et faites en sorte qu'InteractiveCube étende IFocusable et IInputClickHandler. Notre code devrait ressembler à ceci:

using HoloToolkit.Unity.InputModule;
public class InteractiveCube : MonoBehaviour, IFocusable, IInputClickHandler {...} 

En étendant les interfaces IFocuable et IInputClickHandler, notre composant de script permet au GameObject parent de s'abonner aux événements de focus et de clic.

Faisons tourner le cube lorsque notre regard est dessus. L'interface IFocusable nous oblige à implémenter deux méthodes publiques void: OnFocusEnter et OnFocusExit. Créez un champ booléen privé et nommez-le Rotation. Lorsque nous focalisons le cube, définissez-le sur true et lorsque notre focus se termine, définissez-le sur false. Notre code devrait ressembler à ceci:

public bool Rotating;
public void OnFocusEnter(){ Rotating = true;}
public void OnFocusExit(){ Rotating = false;}

Nous allons faire la rotation réelle dans Update (). Update () est une méthode Unity spéciale qui est appelée à chaque image. Pour contrôler la vitesse de rotation, ajoutez un champ flottant public nommé RotationSpeed. Tout champ public d'un composant peut être ajusté et initialisé dans l'éditeur Unity.

public float RotationSpeed;
void Update() { if (Rotating) transform.Rotate(Vector3.Up * Time.deltaTime * RotationSpeed);}

Dans Unity, la transformation est utilisée pour contrôler les attributs physiques tels que la taille, la rotation et la position d'un GameObject. Nous faisons tourner le GameObject parent autour de l'axe y à un degré par seconde multiplié par la vitesse.

Pour que le cube réponde aux événements de clic, ajoutez la méthode OnInputClicked requise par IInputClickHandler. Créez une variable Vector3 publique appelée ScaleChange. Dans la méthode OnInputClicked, nous augmenterons l'échelle du cube par ScaleChange.

public Vector3 ScaleChange;
public void OnInputClicked(InputClickedEventData eventData) { transform.localScale += ScaleChange;}

Maintenant que nous avons terminé avec le script, revenez à Unity. Assurez-vous que l'objet Cube est sélectionné et définissez les variables Speed ​​et ScaleChange sur 50 et (.025, .025, .025) respectivement. N'hésitez pas à expérimenter différentes valeurs! Notre script devrait ressembler à ceci:

Impressionnant! Nous avons terminé le script InteractiveCube. Générez votre application à partir de l'éditeur Unity et exécutez la solution à partir de Visual Studio.

Sommaire

Dans cette procédure pas à pas, vous avez appris à configurer Unity pour le développement HoloLens, à créer un GameObject interactif et à exécuter votre application dans l'émulateur.

Si vous aimez le développement HoloLens, je vous encourage à suivre les didacticiels Microsoft Academy. Ils passent en revue les différents concepts clés HoloLens en détail et vous guident dans la création d'applications assez intéressantes.

Si vous avez aimé l'article ou avez des commentaires, laissez un commentaire ci-dessous!