Sådan oprettes din første HoloLens-app med Unity

Microsofts HoloLens er temmelig freaking fantastisk. Jeg blev introduceret til det på min praktikperiode i sommer, og jeg har haft en eksplosion for det.

HoloLens-apps oprettes ved hjælp af enten DirectX med C ++ eller Unity med C #. Jeg fandt ud af, at det generelt er hurtigere og lettere at få en app i gang med Unity.

I denne artikel opretter vi Unity for HoloLens-udvikling, opretter en interaktiv kube og spinder HoloLens-emulatoren op, så du kan se din oprettelse. Denne artikel er beregnet til samlede begyndere til Unity, så hvis du har erfaring med redaktøren, vil jeg anbefale at gennemgå Microsofts tutorials.

Forudsætninger

  1. En Windows 10-pc med opdateringen fra april 2018
  2. HoloLens-emulatoren, som du kan downloade her
  3. Visual Studio 2017 - Community-udgave er fint
  4. Enhed - Sørg for at tilføje Windows .NET scripting backend-komponenten under installationen
  5. HoloToolKit

Du kan finde den fulde kildekode her.

Opsætning

Åbn enhed. Hvis det er første gang du bruger editoren, bliver du bedt om at logge ind eller tilmelde dig. Jeg vil anbefale Unity Personal, medmindre du planlægger at tjene penge på din app.

Når du er logget ind, skal du oprette et nyt projekt og indtaste et navn. Du skal blive mødt med denne skærm, når projektet er færdig med den indledende opsætning.

Højreklik på mappen Aktiver i nederste venstre hjørne. Naviger til Importer pakke -> Brugerdefineret pakke, og åbn HoloToolKit-enhedsfilen, vi downloadede tidligere. En popup-enhed vises, klik på Alle og importer aktiverne.

Dernæst opretter vi vores scene. Vælg File -> New Scene og gem den som Main.

Unity har brug for en særlig konfiguration for at opbygge et projekt til HoloLens. Heldigvis har HoloToolKit hjælpeskripter, der gør denne konfiguration for os. På den øverste værktøjslinje skal du vælge Mixed Reality Toolkit -> Configure -> Apply Mixed Reality Project Settings. Brug standardværdierne. Når konfigurationen er afsluttet, skal du anvende indstillingerne for blandet virkelighedsscene. Slet Directional Light GameObject.

Fantastisk! Indtil videre har vi importeret HoloToolKit og oprettet Unity til HoloLens-udvikling. I det næste afsnit introducerer jeg dig til det grundlæggende i Unity, og derefter får vi en terning, der skal gengives på skærmen.

Bliv fortrolig med redaktøren

Sådan skal redaktøren se ud på dette tidspunkt. Bemærk de tre indrammede områder:

Det røde område til venstre er scenehierarkipanelet. Her kan vi tilføje nye GameObjects og få et overblik på højt niveau af den aktuelle applikation.Et GameObject er en basisklasse for alle Unity-enheder. De kan være et fysisk objekt som en terning eller en samling af scripts som Input Manager i scenen.

Det nederste blå område indeholder aktivmenuen og konsollen. Aktivmenuen er nøjagtigt, hvordan det lyder - den indeholder C # -skripter, materialer, præfabrikker og masker, der kræves for at køre din app.

Det rigtige grønne område er inspektørmenuen. Her er hvor du kan tilføje og ændre komponenterne i dine GameObjects. Komponenter er det, der udgør adfærden for dine GameObjects. De bestemmer deres forældres udseende, interaktivitet og fysik.

Oprettelse af en terning

Nu får vi vores første GameObject, der gengives på skærmen. I scenehierarkipanelet skal du højreklikke og vælge 3D-objekt -> Terning. En terning skal vises i editoren.

Dobbeltklik på Cube i hierarkipanelet, og i højre inspektorpanel skift positionen til (0,0,2). Indstil skalaen til at være (.25, .25, .25). Dit inspektorpanel skal se sådan ud:

Pæn! Lad os gennemgå trinene, så vi kan se vores terning i HoloLens-emulatoren.

I Unity skal du vælge File-> Build Settings. Build-popupen skal vises, så tryk på build-knappen. I popup-mappen skal du oprette en ny mappe kaldet App og vælge den som build-destination.

Når build er afsluttet, skal du åbne Visual Studio-løsningen i App-mappen. Skift fejlretningsindstillingerne til Release, x86, og målret HoloLens-emulatoren. Din indstillingslinje skal se sådan ud:

Kør løsningen, og når emulatoren starter, og din applikation er indlæst, skal du se din kube på skærmen.

Gør terningen interaktiv

Nu hvor vi har fundet ud af, hvordan vi får en terning ind i vores applikation, lad os få kuben til at gøre noget. Når vi kigger på terningen, roterer den, og når vi klikker på terningen, øges den i størrelse.

Naviger tilbage til Unity, og opret et nyt script i aktivpanelet kaldet InteractiveCube. For at oprette et nyt script skal du højreklikke på aktivpanelet og vælge Opret -> C #-script.

For at tilføje scriptet til terningen skal du sørge for, at terningen er valgt, og trække og slippe scriptet på inspektorpanelet. Det skal se sådan ud:

Dobbeltklik på scriptet i fanen aktiver, og en Visual Studio-forekomst skal vises.

Importer HoloToolkit.Unity.InputModule øverst i vores script, og få InteractiveCube til at udvide IFocusable og IInputClickHandler. Vores kode skal se sådan ud:

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

Ved at udvide grænsefladerne IFocuable og IInputClickHandler giver vores script-komponent det overordnede GameObject mulighed for at abonnere på fokus- og klikbegivenheder.

Lad os få terningen til at rotere, når vores blik er rettet mod den. IFocusable-grænsefladen kræver, at vi implementerer to offentlige ugyldighedsmetoder: OnFocusEnter og OnFocusExit. Opret et privat boolsk felt, og navngiv det Roterende. Når vi fokuserer kuben, indstiller den til sand, og når vores fokus går ud, skal du indstille den til falsk. Vores kode skal se sådan ud:

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

Vi udfører den aktuelle rotation i Update (). Opdatering () er en særlig enhedsmetode, der kaldes hver ramme. For at kontrollere omdrejningshastigheden skal du tilføje et offentligt flydefelt med navnet RotationSpeed. Ethvert offentligt felt i en komponent kan justeres og initialiseres i Unity-editoren.

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

I Unity bruges transformationen til at kontrollere de fysiske attributter som størrelse, rotation og placering af et GameObject. Vi roterer det overordnede GameObject omkring y-aksen med en grad pr. Sekund ganget med hastigheden.

For at få kuben til at reagere på klikhændelser skal du tilføje den OnInputClicked-metode, der kræves af IInputClickHandler. Opret en offentlig Vector3-variabel kaldet ScaleChange. I OnInputClicked-metoden øger vi terningens skala med ScaleChange.

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

Nu hvor vi er færdige med scriptet, skal du navigere tilbage til Unity. Sørg for, at Cube-objektet er valgt, og indstil variablerne Speed ​​og ScaleChange til henholdsvis 50 og (.025, .025, .025). Du er velkommen til at eksperimentere med forskellige værdier! Vores script skal se sådan ud:

Fantastisk! Vi er færdige med InteractiveCube-scriptet. Byg din app fra Unity-editoren, og kør løsningen fra Visual Studio.

Resumé

I denne gennemgang lærte du, hvordan du opretter Unity til HoloLens-udvikling, opretter et interaktivt GameObject og kører din applikation i emulatoren.

Hvis du kan lide HoloLens-udvikling, opfordrer jeg dig til at gennemgå Microsoft Academy-vejledningerne. De gennemgår de forskellige HoloLens-nøglekoncepter i detaljer og leder dig gennem oprettelse af nogle ret seje apps.

Hvis du kunne lide artiklen eller har feedback, skriv en kommentar nedenfor!