Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
De Mixed Reality Academy-zelfstudies zijn ontworpen met HoloLens (1e generatie), Unity 2017 en Mixed Reality Immersive Headsets in het achterhoofd. Daarom vinden we het belangrijk om deze zelfstudies te laten staan voor ontwikkelaars die nog steeds op zoek zijn naar richtlijnen bij het ontwikkelen van deze apparaten. Deze zelfstudies worden niet bijgewerkt met de nieuwste toolsets of interacties die worden gebruikt voor HoloLens 2 en zijn mogelijk niet compatibel met nieuwere versies van Unity. Ze worden onderhouden om te blijven werken op de ondersteunde apparaten. Er is een nieuwe reeks zelfstudies gepubliceerd voor HoloLens 2.
Staren is de eerste vorm van invoer en toont de intentie en het bewustzijn van de gebruiker. MR Input 210 (ook wel Project Explorer genoemd) is een uitgebreide beschrijving van de concepten voor Windows Mixed Reality. We voegen contextbewustheid toe aan onze cursor en hologrammen, zodat we optimaal profiteren van wat uw app weet over de blik van de gebruiker.
We hebben hier een vriendelijke astronaut om u te helpen bij het leren van kijkconcepten. In MR Basics 101 hadden we een eenvoudige cursor die net uw blik volgde. Vandaag gaan we een stap verder dan de eenvoudige cursor:
- We maken de cursor en onze hologrammen starend: beide veranderen op basis van waar de gebruiker naar kijkt of waar de gebruiker niet kijkt. Dit maakt ze contextbewust.
- We voegen feedback toe aan onze cursor en hologrammen om de gebruiker meer context te geven over de doelpunten. Deze feedback kan audio en visueel zijn.
- We laten u gerichte technieken zien om gebruikers te helpen kleinere doelen te bereiken.
- We laten u zien hoe u de aandacht van de gebruiker op uw hologrammen kunt vestigen met een richtingsindicator.
- We leren u technieken om uw hologrammen mee te nemen met de gebruiker terwijl deze zich in uw wereld verplaatst.
Belangrijk
De video's die in elk van de onderstaande hoofdstukken zijn ingesloten, zijn opgenomen met behulp van een oudere versie van Unity en de Mixed Reality Toolkit. Hoewel de stapsgewijze instructies nauwkeurig en actueel zijn, ziet u mogelijk scripts en visuals in de bijbehorende video's die verouderd zijn. De video's blijven opgenomen voor het nageslacht en omdat de behandelde concepten nog steeds van toepassing zijn.
Ondersteuning voor apparaten
| Cursus | HoloLens | Immersive headsets |
|---|---|---|
| MR Input 210: Staren | ✔️ | ✔️ |
Voordat u begint
Vereisten
- Een Windows 10-pc die is geconfigureerd met de juiste hulpprogramma's.
- Enige eenvoudige programmeermogelijkheden in C#.
- U moet MR Basics 101 hebben voltooid.
- Een HoloLens-apparaat dat is geconfigureerd voor ontwikkeling.
Projectbestanden
- Download de bestanden die zijn vereist voor het project. Vereist Unity 2017.2 of hoger.
- Maak het archiveren van de bestanden op uw bureaublad of een andere gemakkelijk te bereiken locatie ongedaan.
Notitie
Als u de broncode wilt bekijken voordat u deze downloadt, is deze beschikbaar op GitHub.
Errata en notities
- In Visual Studio moet 'Alleen mijn code' worden uitgeschakeld (uitgeschakeld) onder Extra-Opties-Foutopsporing>> om onderbrekingspunten in uw code te raken.
Hoofdstuk 1 - Unity Setup
Doelen
- Unity optimaliseren voor HoloLens-ontwikkeling.
- Importeer assets en stel de scène in.
- Bekijk de astronaut in de HoloLens.
Instructies
- Start Unity.
- Selecteer Nieuw project.
- Noem het project ModelExplorer.
- Voer locatie in als de map Gaze die u eerder ongedaan hebt gemaakt.
- Zorg ervoor dat het project is ingesteld op 3D.
- Klik op Project maken.
Unity-instellingen voor HoloLens
We moeten Unity laten weten dat de app die we proberen te exporteren een insluitende weergave moet maken in plaats van een 2D-weergave. We doen dit door HoloLens toe te voegen als een virtual reality-apparaat.
- Ga naar De speler Projectinstellingen > bewerken>.
- Selecteer in het deelvenster Inspector voor Spelerinstellingen het pictogram Windows Store .
- Vouw de groep XR-instellingen uit.
- Schakel in de sectie Rendering het selectievakje Virtual Reality Supported in om een nieuwe lijst met Virtual Reality SDK's toe te voegen.
- Controleer of Windows Mixed Reality wordt weergegeven in de lijst. Als dat niet het doel is, selecteert u de + knop onder aan de lijst en kiest u Windows Holographic.
Vervolgens moeten we de back-end voor scripts instellen op .NET.
- Ga naar De speler Projectinstellingen > bewerken > (mogelijk hebt u dit nog in de vorige stap).
- Selecteer in het deelvenster Inspector voor Spelerinstellingen het pictogram Windows Store .
- Zorg ervoor dat in de sectie Overige instellingen configureren de back-end van scripts is ingesteld op .NET
Ten slotte werken we onze kwaliteitsinstellingen bij om snelle prestaties te bereiken op HoloLens.
- Ga naar Kwaliteit van projectinstellingen > bewerken>.
- Klik op de pijl omlaag in de rij Standaard onder het pictogram Windows Store.
- Selecteer Zeer laag voor Windows Store-apps.
Projectassets importeren
- Klik met de rechtermuisknop op de map Assets in het deelvenster Project .
- Klik op Import Package > Custom Package.
- Navigeer naar de projectbestanden die u hebt gedownload en klik op ModelExplorer.unitypackage.
- Klik op Openen.
- Nadat het pakket is geladen, klikt u op de knop Importeren .
De scène instellen
- Verwijder in de hiërarchie de hoofdcamera.
- Open in de map HoloToolkit de map Invoer en open vervolgens de map Prefabs .
- Sleep de prefab MixedRealityCameraParent vanuit de map Prefabs naar de hiërarchie.
- Klik met de rechtermuisknop op het richtingslampje in de hiërarchie en selecteer Verwijderen.
- Sleep in de map Hologrammen de volgende assets naar de hoofdmap van de hiërarchie:
- AstroMan
- Lampen
- SpaceAudioSource
- SpaceBackground
- Start de afspeelmodus ▶ om de astronaut te bekijken.
- Klik nogmaals op Afspeelmodus ▶ om te stoppen.
- Zoek in de map Hologrammen de asset Fitbox en sleep deze naar de hoofdmap van de hiërarchie.
- Selecteer het vak Fit in het deelvenster Hiërarchie .
- Sleep de verzameling AstroMan van de hiërarchie naar de eigenschap Hologramverzameling van het vak Fitbox in het deelvenster Inspector .
Het project opslaan
- Sla de nieuwe scène op: Bestand > Scène opslaan als.
- Klik op Nieuwe map en geef de map de naam Scènes.
- Geef het bestand de naam ModelExplorer en sla het op in de map Scènes .
Het project bouwen
- Selecteer in Unity Instellingen voor bestandsbuild>.
- Klik op Open scènes toevoegen om de scène toe te voegen.
- Selecteer Universeel Windows-platform in de lijst Platform en klik op Ander platform.
- Als u specifiek ontwikkelt voor HoloLens, stelt u Doelapparaat in op HoloLens. Anders laat u deze op Elk apparaat staan.
- Zorg ervoor dat Buildtype is ingesteld op D3D en SDK is ingesteld op Laatst geïnstalleerd (dit moet SDK 16299 of nieuwer zijn).
- Klik op Bouwen.
- Maak een nieuwe map met de naam 'App'.
- Klik één klik op de map App .
- Druk op Map selecteren.
Wanneer Unity klaar is, wordt een Bestandenverkenner venster weergegeven.
- Open de map App .
- Open de Visual Studio-oplossing ModelExplorer.
Als u implementeert op HoloLens:
- Gebruik de bovenste werkbalk in Visual Studio om het doel te wijzigen van Foutopsporing in Release en van ARM in x86.
- Klik op de vervolgkeuzepijl naast de knop Lokale computer en selecteer Externe computer.
- Voer het IP-adres van uw HoloLens-apparaat in en stel Verificatiemodus in op Universeel (Niet-versleuteld protocol). Klik op Selecteren. Als u het IP-adres van uw apparaat niet weet, kijkt u in Instellingen > Netwerk & Geavanceerde opties voor internet>.
- Klik in de bovenste menubalk op Fouten opsporen -> Starten zonder foutopsporing of druk op Ctrl+ F5. Als dit de eerste keer is dat u op uw apparaat implementeert, moet u het koppelen met Visual Studio.
- Wanneer de app is geïmplementeerd, sluit u fitbox met een selectiebeweging.
Als u implementeert op een immersive headset:
- Gebruik de bovenste werkbalk in Visual Studio om het doel te wijzigen van Foutopsporing in Release en van ARM in x64.
- Zorg ervoor dat het implementatiedoel is ingesteld op Lokale computer.
- Klik in de bovenste menubalk op Fouten opsporen -> Starten zonder foutopsporing of druk op Ctrl+ F5.
- Wanneer de app is geïmplementeerd, sluit u de Fitbox door de trigger op een bewegingscontroller over te halen.
Hoofdstuk 2 - Cursor en doelfeedback
Doelen
- Ontwerp en gedrag van cursorvisuals.
- Feedback op basis van een blikcursor.
- Feedback over hologrammen op basis van gaze.
We gaan ons werk baseren op enkele ontwerpprincipes voor cursors, namelijk:
- De cursor is altijd aanwezig.
- Zorg dat de cursor niet te klein of groot wordt.
- Voorkom dat inhoud wordt geblokkeerd.
Instructies
- Zoek in de map HoloToolkit\Input\Prefabs de asset InputManager .
- Sleep de InputManager naar de hiërarchie.
- Zoek in de map HoloToolkit\Input\Prefabs de asset Cursor .
- Sleep de cursor naar de hiërarchie.
- Selecteer het object InputManager in de hiërarchie.
- Sleep het cursorobject van de hiërarchie naar het veld Cursor van De SimpleSinglePointerSelector van InputManager, onderaan de Inspector.
Bouwen en implementeren
- Bouw de app opnieuw op vanuit instellingen voor het > maken van bestanden.
- Open de map App.
- Open de Visual Studio-oplossing ModelExplorer.
- Klik op Fouten opsporen -> Starten zonder foutopsporing of druk op Ctrl+F5.
- Bekijk hoe de cursor wordt getekend en hoe deze van uiterlijk verandert als deze een hologram aanraakt.
Instructies
- Vouw in het deelvenster Hiërarchie het object AstroMan-GEO_G-Back_Center>>uit.
- Dubbelklik op Interactible.cs om het te openen in Visual Studio.
- Verwijder de opmerkingen in de callbacks IFocusable.OnFocusEnter() en IFocusable.OnFocusExit() in Interactible.cs. Deze worden aangeroepen door de InputManager van de Mixed Reality Toolkit wanneer de focus (door staren of door controller te wijzen) de collider van het specifieke GameObject binnenkomt en verlaat.
/* TODO: DEVELOPER CODING EXERCISE 2.d */
void IFocusable.OnFocusEnter()
{
for (int i = 0; i < defaultMaterials.Length; i++)
{
// 2.d: Uncomment the below line to highlight the material when gaze enters.
defaultMaterials[i].EnableKeyword("_ENVIRONMENT_COLORING");
}
}
void IFocusable.OnFocusExit()
{
for (int i = 0; i < defaultMaterials.Length; i++)
{
// 2.d: Uncomment the below line to remove highlight on material when gaze exits.
defaultMaterials[i].DisableKeyword("_ENVIRONMENT_COLORING");
}
}
Notitie
We gebruiken EnableKeyword en DisableKeyword hoger. Als u deze in uw eigen app wilt gebruiken met de Standaard-shader van de toolkit, moet u de Unity-richtlijnen volgen voor toegang tot materialen via een script. In dit geval hebben we de drie varianten van gemarkeerd materiaal die nodig zijn al opgenomen in de map Resources (zoek naar de drie materialen met markering in de naam).
Bouwen en implementeren
- Net als voorheen moet u het project bouwen en implementeren op de HoloLens.
- Kijk wat er gebeurt wanneer de blik op een object is gericht en wanneer dat niet het geval is.
Hoofdstuk 3 - Gerichte technieken
Doelen
- Maak het gemakkelijker om hologrammen te targeten.
- Natuurlijke hoofdbewegingen stabiliseren.
Instructies
- Selecteer in het deelvenster Hierarchy het object InputManager .
- Zoek in het deelvenster Inspector het script Gaze Stabilizer . Klik erop om het te openen in Visual Studio, als u een kijkje wilt nemen.
- Dit script herhaalt voorbeelden van Raycast-gegevens en helpt de blik van de gebruiker te stabiliseren voor precisie gerichtheid.
- In de Inspector kunt u de waarde van opgeslagen stabiliteitsvoorbeelden bewerken. Deze waarde vertegenwoordigt het aantal monsters waarop de stabilisator itereert om de gestabiliseerde waarde te berekenen.
Hoofdstuk 4 - Richtingsindicator
Doelen
- Voeg een richtingsindicator toe aan de cursor om hologrammen te zoeken.
Instructies
We gaan het bestand DirectionIndicator.cs gebruiken om het volgende te doen:
- De richtingsindicator weergeven als de gebruiker niet naar de hologrammen kijkt.
- Verberg de richtingsindicator als de gebruiker naar de hologrammen staart.
- Werk de richtingsindicator bij zodat deze naar de hologrammen wijst.
Aan de slag.
- Klik op het object AstroMan in het deelvenster Hierarchy en klik op de pijl om het object uit te vouwen.
- Selecteer in het deelvenster Hierarchy het object DirectionalIndicator onder AstroMan.
- Klik in het deelvenster Inspector op de knop Onderdeel toevoegen .
- Typ in het menu in het zoekvak Richtingindicator. Selecteer het zoekresultaat.
- Sleep in het deelvenster Hiërarchie het cursorobject naar de eigenschap Cursor in de Inspector.
- Sleep in het deelvenster Project in de map Hologrammen de asset DirectionalIndicator naar de eigenschap Directional Indicator in de Inspector.
- Bouw en implementeer de app.
- Kijk hoe het richtingsindicatorobject u helpt de astronaut te vinden.
Hoofdstuk 5 - Billboarding
Doelen
- Gebruik billboarding om hologrammen altijd naar u toe te laten kijken.
We zullen het bestand Billboard.cs gebruiken om een GameObject zodanig te orienteren dat het de gebruiker te allen tijde tegenover zich bevindt.
- Selecteer in het deelvenster Hierarchy het object AstroMan .
- Klik in het deelvenster Inspector op de knop Onderdeel toevoegen .
- Typ in het menu in het zoekvak Billboard. Selecteer het zoekresultaat.
- Stel in inspector de draaias in op Y.
- Probeer het nu! Bouw en implementeer de app zoals voorheen.
- Zie hoe het Billboard-object naar u kijkt, ongeacht hoe u het standpunt wijzigt.
- Verwijder het script voorlopig uit de AstroMan .
Hoofdstuk 6 - Tag-Along
Doelen
- Gebruik Tag-Along om onze hologrammen ons in de kamer te laten volgen.
Terwijl we aan dit probleem werken, laten we ons leiden door de volgende ontwerpbeperkingen:
- Inhoud moet altijd in één oogopslag zijn.
- Inhoud mag niet in de weg staan.
- Inhoud met hoofdvergrendeling is onaangenaam.
De oplossing die hier wordt gebruikt, is het gebruik van een 'tag-along'-benadering.
Een tag-along-object verlaat de weergave van de gebruiker nooit volledig. U kunt een tag-along zien als een object dat met elastieken aan het hoofd van de gebruiker is bevestigd. Terwijl de gebruiker beweegt, blijft de inhoud in een oogopslag door naar de rand van de weergave te glijden zonder volledig te verlaten. Wanneer de gebruiker naar het tag-along-object staart, komt dit volledig in beeld.
We gaan het bestand SimpleTagalong.cs gebruiken dat het volgende doet:
- Bepaal of het Tag-Along object zich binnen de cameragrenzen bevindt.
- Als u niet binnen het weergave frustum bent, plaatst u de Tag-Along gedeeltelijk binnen het frustum van de weergave.
- Anders plaatst u de Tag-Along op een standaardafstand van de gebruiker.
Hiervoor moeten we eerst het script Interactible.cs wijzigen om tagalongAction aan te roepen.
- Bewerk Interactible.cs door codeeroefening 6.a te voltooien (regel 84 tot en met 87 ontkoppelen).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
interactibleAction.PerformAction();
}
Het script InteractibleAction.cs , gekoppeld aan Interactible.cs , voert aangepaste acties uit wanneer u op hologrammen tikt. In dit geval gebruiken we er een specifiek voor tag-along.
- Klik in de map Scripts op de asset TagalongAction.cs om deze te openen in Visual Studio.
- Voltooi de codeeroefening of wijzig deze in:
- Typ boven aan de hiërarchie in de zoekbalk ChestButton_Center en selecteer het resultaat.
- Klik in het deelvenster Inspector op de knop Onderdeel toevoegen .
- Typ in het menu in het zoekvak Tagalong Action. Selecteer het zoekresultaat.
- Zoek in de map Hologrammen de Tagalong-asset .
- Selecteer het ChestButton_Center-object in de hiërarchie. Sleep het TagAlong-object vanuit het deelvenster Project naar de Inspector naar de eigenschap Object To Tagalong .
- Sleep het object Tagalong Action van de Inspector naar het veld Interactible Action in het script Interactible .
- Dubbelklik op het script TagalongAction om het te openen in Visual Studio.
We moeten het volgende toevoegen:
- Voeg functionaliteit toe aan de functie PerformAction in het TagalongAction-script (overgenomen van InteractibleAction).
- Voeg billboarding toe aan het gazed-upon-object en stel de draaias in op XY.
- Voeg vervolgens eenvoudige Tag-Along toe aan het object.
Dit is onze oplossing, van TagalongAction.cs:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.
using HoloToolkit.Unity;
using UnityEngine;
public class TagalongAction : InteractibleAction
{
[SerializeField]
[Tooltip("Drag the Tagalong prefab asset you want to display.")]
private GameObject objectToTagalong;
private void Awake()
{
if (objectToTagalong != null)
{
objectToTagalong = Instantiate(objectToTagalong);
objectToTagalong.SetActive(false);
/* TODO: DEVELOPER CODING EXERCISE 6.b */
// 6.b: AddComponent Billboard to objectToTagAlong,
// so it's always facing the user as they move.
Billboard billboard = objectToTagalong.AddComponent<Billboard>();
// 6.b: AddComponent SimpleTagalong to objectToTagAlong,
// so it's always following the user as they move.
objectToTagalong.AddComponent<SimpleTagalong>();
// 6.b: Set any public properties you wish to experiment with.
billboard.PivotAxis = PivotAxis.XY; // Already the default, but provided in case you want to edit
}
}
public override void PerformAction()
{
// Recommend having only one tagalong.
if (objectToTagalong == null || objectToTagalong.activeSelf)
{
return;
}
objectToTagalong.SetActive(true);
}
}
- Probeer het nu! Bouw en implementeer de app.
- Bekijk hoe de inhoud het midden van het gazepunt volgt, maar niet continu en zonder deze te blokkeren.