HoloLens (första generationen) Indata 210: Blick
Viktigt
Självstudierna Mixed Reality Academy har utformats med HoloLens (första generationen), Unity 2017 och Mixed Reality integrerande headset i åtanke. Därför tycker vi att det är viktigt att låta de här självstudierna vara kvar för utvecklare som fortfarande behöver vägledning för att utveckla för dessa enheter. De här självstudierna uppdateras inte med de senaste verktygsuppsättningarna eller interaktionerna som används för HoloLens 2 och kanske inte är kompatibla med nyare versioner av Unity. De kommer att underhållas för att fortsätta arbeta på de enheter som stöds. En ny serie självstudier har publicerats för HoloLens 2.
Gaze är den första formen av indata och avslöjar användarens avsikt och medvetenhet. MR Input 210 (även kallat Project Explorer) är en djupdykning i blickrelaterade begrepp för Windows Mixed Reality. Vi kommer att lägga till sammanhangsberoende medvetenhet i markören och hologram och dra full nytta av vad din app vet om användarens blick.
Vi har en vänlig astronaut här som hjälper dig att lära dig blickbegrepp. I MR Basics 101 hade vi en enkel markör som precis följde din blick. Idag flyttar vi ett steg bortom den enkla markören:
- Vi gör markören och våra hologram blickmedvetna: båda ändras baserat på var användaren letar – eller var användaren inte letar. Detta gör dem sammanhangsmedvetna.
- Vi kommer att lägga till feedback till markören och hologram för att ge användaren mer kontext om vad som är mål. Den här feedbacken kan vara ljud och visuella objekt.
- Vi visar dig måltekniker som hjälper användare att nå mindre mål.
- Vi visar dig hur du drar användarens uppmärksamhet till dina hologram med en riktningsindikator.
- Vi lär dig tekniker för att ta med dig hologram med användaren när hon flyttar runt i din värld.
Viktigt
Videorna som är inbäddade i vart och ett av kapitlen nedan spelades in med hjälp av en äldre version av Unity och Mixed Reality Toolkit. Även om de stegvisa instruktionerna är korrekta och aktuella kan du se skript och visuella objekt i motsvarande videor som är inaktuella. Videorna förblir inkluderade för eftervärlden och eftersom de begrepp som beskrivs fortfarande gäller.
Stöd för enheter
Kurs | HoloLens | Integrerande headset |
---|---|---|
MR-inmatning 210: Blick | ✔️ | ✔️ |
Innan du börjar
Förutsättningar
- En Windows 10 dator som konfigurerats med rätt verktyg installerade.
- Vissa grundläggande C#-programmeringskunskaper.
- Du bör ha slutfört MR Basics 101.
- En HoloLens-enhet som konfigurerats för utveckling.
Projektfiler
- Ladda ned de filer som krävs av projektet. Kräver Unity 2017.2 eller senare.
- Avarkivera filerna på skrivbordet eller på en annan plats som är lätt att nå.
Anteckning
Om du vill titta igenom källkoden innan du laddar ned den är den tillgänglig på GitHub.
Fel och anteckningar
- I Visual Studio måste "Just My Code" inaktiveras (avmarkerat) under Tools-Options-Debugging>> för att du ska kunna nå brytpunkter i koden.
Kapitel 1 – Unity-installation
Mål
- Optimera Unity för HoloLens-utveckling.
- Importera tillgångar och konfigurera scenen.
- Visa astronauten i HoloLens.
Instruktioner
- Starta Unity.
- Välj Nytt projekt.
- Ge projektet namnet ModelExplorer.
- Ange plats som den Gaze-mapp som du tidigare avarkiverade.
- Kontrollera att projektet är inställt på 3D.
- Klicka på Create Project (Skapa projekt).
Unity-inställningar för HoloLens
Vi måste meddela Unity att den app som vi försöker exportera ska skapa en fördjupad vy i stället för en 2D-vy. Det gör vi genom att lägga till HoloLens som en virtuell verklighetsenhet.
- Gå till Redigera > projektinställningsspelare>.
- I Kontrollpanelen för spelarinställningar väljer du Ikonen Windows Store .
- Expandera gruppen XR-inställningar .
- I avsnittet Rendering markerar du kryssrutan Virtual Reality Supported (Virtual Reality Stöds ) för att lägga till en ny SDK-lista för Virtuell verklighet .
- Kontrollera att Windows Mixed Reality visas i listan. Annars väljer du + knappen längst ned i listan och väljer Windows Holographic.
Därefter måste vi ställa in vår skriptserverdel på .NET.
- Gå till Redigera > projektinställningsspelare > (du kan fortfarande ha detta upp från föregående steg).
- I Kontrollpanelen för spelarinställningar väljer du Ikonen Windows Store .
- I avsnittet Konfiguration av andra inställningar kontrollerar du att Skriptserverdelen är inställd på .NET
Slutligen uppdaterar vi våra kvalitetsinställningar för att få snabba prestanda på HoloLens.
- Gå till Redigera > projektinställningar > Kvalitet.
- Klicka på nedåtriktad pil på standardraden under Windows Store-ikonen.
- Välj Mycket låg för Windows Store-appar.
Importera projekttillgångar
- Högerklicka på mappen Tillgångari projektpanelen.
- Klicka på Importera paket > anpassat paket.
- Gå till de projektfiler som du laddade ned och klicka på ModelExplorer.unitypackage.
- Klicka på Öppna.
- När paketet har lästs in klickar du på knappen Importera .
Konfigurera scenen
- Ta bort huvudkameran i hierarkin.
- I mappen HoloToolkit öppnar du mappen Input och öppnar sedan mappen Prefabs .
- Dra och släpp prefab för MixedRealityCameraParent från mappen Prefabs till hierarkin.
- Högerklicka på riktningsljuset i hierarkin och välj Ta bort.
- Dra och släpp följande tillgångar i roten i hierarkin i mappen Holograms:
- AstroMan
- Lampor
- SpaceAudioSource
- SpaceBackground
- Starta uppspelningsläget ▶ för att visa astronauten.
- Klicka på Uppspelningsläge ▶ igen för att stoppa.
- Leta reda på Fitbox-tillgången i mappen Hologram och dra den till roten i hierarkin.
- Välj rutan Fitbox (Anpassa) på panelen Hierarki .
- Dra AstroMan-samlingen från Hierarki till egenskapen Hologramsamling för Fitbox på panelen Inspector .
Spara projektet
- Spara den nya scenen: Spara > scen som.
- Klicka på Ny mapp och namnge mappen Scener.
- Ge filen namnet "ModelExplorer" och spara den i mappen Scener .
Bygga projektet
- I Unity väljer du Inställningar för filbygge>.
- Klicka på Lägg till öppna scener för att lägga till scenen.
- Välj Universell Windows-plattform i listan Plattform och klicka på Växla plattform.
- Om du utvecklar specifikt för HoloLens anger du Målenhet till HoloLens. Annars lämnar du den på Valfri enhet.
- Se till att versionstypen är inställd på D3D och att SDK är inställt på Senaste installerat (som ska vara SDK 16299 eller senare).
- Klicka på Skapa.
- Skapa en ny mapp med namnet "App".
- Klicka på mappen App .
- Tryck på Välj mapp.
När Unity är klart visas ett Utforskaren fönster.
- Öppna mappen App .
- Öppna Lösningen ModelExplorer Visual Studio.
Om du distribuerar till HoloLens:
- Använd det översta verktygsfältet i Visual Studio och ändra målet från Felsökning till Släpp och från ARM till x86.
- Klicka på listrutepilen bredvid knappen Lokal dator och välj Fjärrdator.
- Ange din HoloLens-enhets-IP-adress och ange Autentiseringsläge till Universellt (okrypterat protokoll). Klicka på Välj. Om du inte känner till enhetens IP-adress tittar du i Inställningar > Nätverk & Avancerade Internetalternativ>.
- I den översta menyraden klickar du på Felsöka –> Starta utan felsökning eller tryck på Ctrl + F5. Om det här är första gången du distribuerar till enheten måste du koppla den till Visual Studio.
- När appen har distribuerats stänger du Fitbox med en select-gest.
Om du distribuerar till ett uppslukande headset:
- Använd det översta verktygsfältet i Visual Studio och ändra målet från Felsökning till Släpp och från ARM till x64.
- Kontrollera att distributionsmålet är inställt på Lokal dator.
- I den översta menyraden klickar du på Felsöka –> Starta utan felsökning eller tryck på Ctrl + F5.
- När appen har distribuerats stänger du Fitbox genom att trycka på utlösaren på en rörelsestyrenhet.
Kapitel 2 – Feedback om markörer och mål
Mål
- Design och beteende för markörvisualisering.
- Feedback om blickbaserad markör.
- Feedback om blickbaserat hologram.
Vi ska basera vårt arbete på några markördesignprinciper, nämligen:
- Markören finns alltid.
- Låt inte markören bli för liten eller stor.
- Undvik att hindra innehåll.
Instruktioner
- Leta reda på tillgången InputManager i mappen HoloToolkit\Input\Prefabs.
- Dra och släpp InputManager i hierarkin.
- Leta reda på markörens tillgång i mappen HoloToolkit\Input\Prefabs.
- Dra och släpp markören i hierarkin.
- Välj Objektet InputManager i hierarkin.
- Dra markörens objekt från hierarkin till Fältet SimpleSinglePointerSelector i InputManager längst ned i Inspector.
Skapa och distribuera
- Återskapa appen från Inställningar för filskapning>.
- Öppna mappen App.
- Öppna Lösningen ModelExplorer Visual Studio.
- Klicka på Felsök –> Starta utan att felsöka eller tryck på Ctrl + F5.
- Observera hur markören ritas och hur den ändrar utseende om den vidrör ett hologram.
Instruktioner
- Expandera objektet AstroMan-GEO_G-Back_Center>>på hierarkipanelen.
- Dubbelklicka på Interactible.cs för att öppna det i Visual Studio.
- Avkommentera raderna i återanropen IFocusable.OnFocusEnter() och IFocusable.OnFocusExit() i Interactible.cs. Dessa anropas av Mixed Reality Toolkits InputManager när fokus (antingen genom blick eller kontrollant som pekar) går in och avslutar den specifika GameObjects kolliderare.
/* 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");
}
}
Anteckning
Vi använder EnableKeyword
och DisableKeyword
ovan. För att kunna använda dessa i din egen app med Toolkits Standard-skuggning måste du följa Unity-riktlinjerna för åtkomst till material via skript. I det här fallet har vi redan inkluderat de tre varianterna av markerat material som behövs i mappen Resurser (leta efter de tre materialen med markeringar i namnet).
Skapa och distribuera
- Som tidigare skapar du projektet och distribuerar till HoloLens.
- Observera vad som händer när blicken riktas mot ett objekt och när det inte är det.
Kapitel 3 – Måltekniker
Mål
- Gör det enklare att rikta hologram.
- Stabilisera naturliga huvudrörelser.
Instruktioner
- På panelen Hierarki väljer du objektet InputManager .
- I panelen Inspector hittar du skriptet Gaze Stabilisr . Klicka på den för att öppna i Visual Studio om du vill ta en titt.
- Det här skriptet itererar över exempel på Raycast-data och hjälper till att stabilisera användarens blick för precisionsmål.
- I Inspector kan du redigera värdet Lagrade stabilitetsexempel . Det här värdet representerar antalet prover som stabilisatorn itererar på för att beräkna det stabiliserade värdet.
Kapitel 4 – Riktningsindikator
Mål
- Lägg till en riktningsindikator på markören för att hitta hologram.
Instruktioner
Vi ska använda filen DirectionIndicator.cs som gör följande:
- Visa riktningsindikatorn om användaren inte tittar på hologram.
- Dölj riktningsindikatorn om användaren tittar på hologram.
- Uppdatera riktningsindikatorn så att den pekar på hologram.
Nu sätter vi igång.
- Klicka på AstroMan-objekteti hierarkipanelen och klicka på pilen för att expandera det.
- I panelen Hierarki väljer du objektet DirectionalIndicator under AstroMan.
- I panelen Kontroll klickar du på knappen Lägg till komponent .
- I menyn skriver du i sökrutan Riktningsindikator. Välj sökresultatet.
- På panelen Hierarki drar och släpper du markörens objekt till egenskapen Cursor (Markör ) i Inspector.
- I mappen Hologram iprojektpanelen drar och släpper du tillgången DirectionalIndicator till egenskapen Directional Indicator i Inspector.
- Skapa och distribuera appen.
- Se hur riktningsindikatorobjektet hjälper dig att hitta astronauten.
Kapitel 5 - Affischtavlor
Mål
- Använd affischtavlor för att ha hologram alltid ansikte mot dig.
Vi kommer att använda Billboard.cs-filen för att hålla en GameObject-orienterad så att den alltid möter användaren.
- I panelen Hierarki väljer du AstroMan-objektet .
- I panelen Kontroll klickar du på knappen Lägg till komponent .
- I menyn skriver du i sökrutan Billboard. Välj sökresultatet.
- I Kontroll anger du pivotaxeln till Y.
- Prova! Skapa och distribuera appen som tidigare.
- Se hur Billboard-objektet möter dig oavsett hur du ändrar synpunkt.
- Ta bort skriptet från AstroMan för tillfället.
Kapitel 6 – Tag-Along
Mål
- Använd Tag-Along för att få våra hologram att följa oss runt i rummet.
När vi arbetar med det här problemet vägleds vi av följande designbegränsningar:
- Innehållet bör alltid vara en blick bort.
- Innehållet ska inte vara i vägen.
- Huvudlåsande innehåll är obekvämt.
Lösningen som används här är att använda en "tag-along"-metod.
Ett tagg-along-objekt lämnar aldrig användarens vy helt och hållet. Du kan se taggen som ett objekt som är kopplat till användarens huvud med gummiband. När användaren rör sig kommer innehållet att hålla sig inom en enkel överblick genom att glida mot kanten av vyn utan att helt lämna. När användaren tittar mot taggningsobjektet visas det mer fullständigt.
Vi ska använda filen SimpleTagalong.cs som kommer att:
- Kontrollera om det Tag-Along objektet ligger inom kameragränsen.
- Om inte inom beskåda frustumen placerar Tag-Along till delvist inom beskåda frustumen.
- Annars placerar du Tag-Along till ett standardavstånd från användaren.
För att göra detta måste vi först ändra skriptet Interactible.cs för att anropa TagalongAction.
- Redigera Interactible.cs genom att slutföra kodningsövningen 6.a (avkommenterande rader 84 till 87).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
interactibleAction.PerformAction();
}
Skriptet InteractibleAction.cs i kombination med Interactible.cs utför anpassade åtgärder när du trycker på hologram. I det här fallet använder vi en specifikt för taggning.
- I mappen Skript klickar du på TagalongAction.cs-tillgången för att öppna i Visual Studio.
- Slutför kodningsövningen eller ändra den till följande:
- Längst upp i hierarkin skriver du i sökfältet ChestButton_Center och väljer resultatet.
- I panelen Kontroll klickar du på knappen Lägg till komponent .
- I menyn skriver du i sökrutan Tagalong Action. Välj sökresultatet.
- Leta reda på Tagalong-tillgången i mappen Holograms.
- Välj det ChestButton_Center objektet i hierarkin. Dra och släpp TagAlong-objektet från projektpanelen till Inspector till egenskapen Object To Tagalong .
- Dra Tagalong Action-objektet från Inspector till fältet Interaktionsbar åtgärd i skriptet Interactible .
- Dubbelklicka på Skriptet TagalongAction för att öppna det i Visual Studio.
Vi måste lägga till följande:
- Lägg till funktioner i funktionen PerformAction i TagalongAction-skriptet (ärvt från InteractibleAction).
- Lägg till affischtavlor i objektet som visas och ställ in pivotaxeln på XY.
- Lägg sedan till enkla Tag-Along i objektet.
Här är vår lösning, från 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);
}
}
- Prova! Skapa och distribuera appen.
- Titta på hur innehållet följer mitten av blickpunkten, men inte kontinuerligt och utan att blockera den.