Sdílet prostřednictvím


HoloLens (1. generace) Vstup 210: Pohled

Důležité

Kurzy Mixed Reality Academy byly navrženy s ohledem na HoloLens (1. generace), Unity 2017 a Mixed Reality Asistivní náhlavní soupravy. Proto se domníváme, že je důležité ponechat tyto kurzy pro vývojáře, kteří stále hledají pokyny k vývoji pro tato zařízení. Tyto kurzy nebudou aktualizovány nejnovějšími sadami nástrojů nebo interakcemi používanými pro HoloLens 2 a nemusí být kompatibilní s novějšími verzemi Unity. Budou zachovány, aby mohly pokračovat v práci na podporovaných zařízeních. Byla publikována nová série kurzů pro HoloLens 2.

Pohled je první forma vstupu a odhalí záměr a povědomí uživatele. MR Input 210 (neboli Průzkumník projektů) je podrobný přehled konceptů pohledu pro Windows Mixed Reality. Do kurzoru a hologramů přidáme kontextové povědomí a plně využijeme toho, co vaše aplikace ví o pohledu uživatele.

Máme zde přátelského astronauta, který vám pomůže naučit se koncepty pohledu. V MR Basics 101 jsme měli jednoduchý kurzor, který právě sledoval váš pohled. Dnes se posuneme o krok za jednoduchý kurzor:

  • Chceme, aby kurzor a naše hologramy byly upřeny podle toho, kde se uživatel dívá nebo kde se nedívá . Díky tomu budou mít přehled o kontextu.
  • K kurzoru a hologramům přidáme zpětnou vazbu, abychom uživateli poskytli další kontext k tomu, co je cílem. Tato zpětná vazba může být zvuková a vizuální.
  • Ukážeme vám techniky cílení, které uživatelům pomůžou dosáhnout menších cílů.
  • Ukážeme vám, jak upoutat pozornost uživatele na hologramy pomocí směrového indikátoru.
  • Naučíme vás techniky, jak používat hologramy s uživatelem, když se pohybuje ve vašem světě.

Důležité

Videa vložená do každé z následujících kapitol byla zaznamenána pomocí starší verze Unity a sady Mixed Reality Toolkit. Podrobné pokyny jsou přesné a aktuální, ale v odpovídajících videích se můžou zobrazovat skripty a vizuály, které jsou zastaralé. Videa zůstávají zahrnuta pro potomky a proto, že probírané koncepty stále platí.

Podpora zařízení

Kurz HoloLens Imerzivní náhlavní soupravy
MR Vstup 210: Pohled ✔️ ✔️

Než začnete

Požadavky

Soubory projektu

  • Stáhněte si soubory vyžadované projektem. Vyžaduje Unity 2017.2 nebo novější.
  • Zrušte archivaci souborů na ploše nebo na jiné snadno dostupné místo.

Poznámka

Pokud si chcete před stažením projít zdrojový kód, je k dispozici na GitHubu.

Errata a poznámky

  • V sadě Visual Studio musí být v části Tools-Options-Debugging>> zakázaná (nezaškrtnutá) možnost "Jen můj kód", aby se v kódu dostala do zarážek.

Kapitola 1 – Nastavení Unity

Cíle

  • Optimalizace vývoje v Unity pro HoloLens
  • Importujte prostředky a nastavte scénu.
  • Prohlédni si astronauta v HoloLensu.

Pokyny

  1. Spusťte Unity.
  2. Vyberte Nový projekt.
  3. Pojmenujte projekt ModelExplorer.
  4. Jako složku Gaze , kterou jste dříve nechalchovali, zadejte umístění.
  5. Ujistěte se, že je projekt nastavený na 3D.
  6. Klikněte na Create Project (Vytvořit projekt).

Nastavení Unity pro HoloLens

Musíme unity dát vědět, že aplikace, kterou se snažíme exportovat, by měla místo 2D zobrazení vytvořit imerzivní zobrazení . K tomu přidáme HoloLens jako zařízení pro virtuální realitu.

  1. Přejděte na Upravit > přehrávač nastavení > projektu.
  2. Na panelu inspektoru pro nastavení přehrávače vyberte ikonu Windows Store .
  3. Rozbalte skupinu Nastavení XR .
  4. V části Vykreslování zaškrtněte políčko Virtual Reality Supported (Podpora virtuální reality) a přidejte nový seznam sad SDK pro virtuální realitu .
  5. Ověřte, že se v seznamu zobrazí Windows Mixed Reality. Pokud ne, vyberte + tlačítko v dolní části seznamu a zvolte Windows Holographic.

Dále musíme nastavit back-end skriptování na .NET.

  1. Přejděte na Upravit > přehrávač nastavení > projektu (je možné, že je stále k dispozici z předchozího kroku).
  2. Na panelu inspektoru pro nastavení přehrávače vyberte ikonu Windows Store .
  3. V části Konfigurace dalších nastavení se ujistěte, že je back-end skriptování nastavený na .NET.

Nakonec aktualizujeme nastavení kvality, abychom na HoloLens dosáhli rychlého výkonu.

  1. Přejděte na Upravit > kvalitu nastavení > projektu.
  2. Klikněte na šipku dolů na řádku Výchozí pod ikonou Windows Store.
  3. Vyberte Možnost Velmi nízká pro aplikace pro Windows Store.

Import prostředků projektu

  1. Klikněte pravým tlačítkem na složku Assets na panelu Projekt .
  2. Klikněte na Importovat vlastní balíček balíčku>.
  3. Přejděte ke staženým souborům projektu a klikněte na ModelExplorer.unitypackage.
  4. Klikněte na Otevřít.
  5. Po načtení balíčku klikněte na tlačítko Importovat .

Nastavení scény

  1. V hierarchii odstraňte hlavní kameru.
  2. Ve složce HoloToolkit otevřete složku Input a pak otevřete složku Prefabs .
  3. Přetáhněte prefab MixedRealityCameraParent ze složky Prefabs do hierarchie.
  4. Klikněte pravým tlačítkem na směrový kontrolek v hierarchii a vyberte Odstranit.
  5. Ve složce Hologramy přetáhněte následující prostředky do kořenového adresáře hierarchie:
    • AstroMan
    • Světla
    • SpaceAudioSource
    • SpaceBackground
  6. Spusťte režim ▶ přehrávání a zobrazte astronauta.
  7. Znovu klikněte na Režim ▶ přehrávání, aby se zastavilo.
  8. Ve složce Holograms najděte prostředek Fitbox a přetáhněte ho do kořenového adresáře hierarchie.
  9. Na panelu Hierarchie vyberte fitbox.
  10. Přetáhněte kolekci AstroMan z hierarchie do vlastnosti Kolekce hologramů fitboxu na panelu Inspektor .

Uložení projektu

  1. Uložit novou scénu: Soubor > Uložit scénu jako.
  2. Klikněte na Nová složka a pojmenujte složku Scény.
  3. Pojmenujte soubor ModelExplorer a uložte ho do složky Scenes .

Sestavení projektu

  1. V Unity vyberte Nastavení sestavení souboru>.
  2. Kliknutím na Přidat otevřená scéna scénu přidejte.
  3. V seznamu Platformavyberte Univerzální platforma Windows a klikněte na Přepnout platformu.
  4. Pokud vyvíjíte speciálně pro HoloLens, nastavte Cílové zařízení na HoloLens. V opačném případě ho ponechte na libovolném zařízení.
  5. Ujistěte se, že je typ sestavení nastavený na D3D a sada SDK je nastavená na Nejnovější nainstalovaná (což by měla být sada SDK 16299 nebo novější).
  6. Klikněte na Sestavit.
  7. Vytvořte novou složku s názvem "App".
  8. Klikněte na složku Aplikace .
  9. Stiskněte Vybrat složku.

Po dokončení Unity se zobrazí okno Průzkumník souborů.

  1. Otevřete složku Aplikace .
  2. Otevřete řešení ModelExplorer v sadě Visual Studio.

Pokud se nasazuje do HoloLensu:

  1. Pomocí horního panelu nástrojů v sadě Visual Studio změňte cíl z Ladění na Vydání a z ARM na x86.
  2. Klikněte na šipku rozevíracího seznamu vedle tlačítka Místní počítač a vyberte Vzdálený počítač.
  3. Zadejte IP adresu zařízení HoloLens a nastavte Režim ověřování na Universal (Nešifrovaný protokol). Klikněte na Vybrat. Pokud IP adresu zařízení neznáte, podívejte se do části Nastavení > Sítě & Upřesnit možnosti internetu>.
  4. V horním řádku nabídek klikněte na Ladit –> Spustit bez ladění nebo stiskněte ctrl + F5. Pokud se do zařízení nasazuje poprvé, budete ho muset spárovat se sadou Visual Studio.
  5. Po nasazení aplikace zavřete Fitboxgestem výběru.

Pokud nasazujete do imerzivní náhlavní soupravy:

  1. Pomocí horního panelu nástrojů v sadě Visual Studio změňte cíl z Ladění na Vydání a z ARM na x64.
  2. Ujistěte se, že je cíl nasazení nastavený na Místní počítač.
  3. V horním řádku nabídek klikněte na Ladit –> Spustit bez ladění nebo stiskněte ctrl + F5.
  4. Po nasazení aplikace zavřete Fitbox stisknutím spouště na ovladači pohybu.

Kapitola 2 – Zpětná vazba kurzoru a cíle

Cíle

  • Návrh a chování vizuálu kurzoru
  • Zpětná vazba kurzoru na základě pohledu.
  • Zpětná vazba hologramu na základě pohledu.

Budeme pracovat na některých principech návrhu kurzoru, konkrétně:

  • Kurzor je vždy přítomen.
  • Nedovolte, aby byl kurzor příliš malý nebo velký.
  • Vyhněte se blokování obsahu.

Pokyny

  1. Ve složce HoloToolkit\Input\Prefabs najděte asset InputManager .
  2. Přetáhněte inputManager do hierarchie.
  3. Ve složce HoloToolkit\Input\Prefabs najděte asset Kurzor .
  4. Přetáhněte kurzor do hierarchie.
  5. Vyberte objekt InputManager v hierarchii.
  6. Přetáhněte objekt Cursor z hierarchie do pole KurzorSimpleSinglePointerSelector objektu InputManager v dolní části inspektoru.

Jednoduché nastavení selektoru s jedním ukazatelem

Sestavení a nasazení

  1. Znovu sestavte aplikaci z nastavení sestavení souboru>.
  2. Otevřete složku Aplikace.
  3. Otevřete řešení ModelExplorer v sadě Visual Studio.
  4. Klikněte na Ladit –> Spustit bez ladění nebo stiskněte ctrl + F5.
  5. Sledujte, jak je kurzor nakreslen a jak mění vzhled, pokud se dotýká hologramu.

Pokyny

  1. Na panelu Hierarchie rozbalte objekt AstroMan-GEO_G-Back_Center>.>
  2. Poklikáním na soubor Interactible.cs ho otevřete v sadě Visual Studio.
  3. Zrušte komentář řádků ve zpětných voláních IFocusable.OnFocusEnter() a IFocusable.OnFocusExit() v souboru Interactible.cs. Tyto funkce jsou volána inputmanagerem Mixed Reality Toolkit, když fokus (pohledem nebo ukazatelem ovladače) vstoupí a opustí konkrétní schvalovač GameObjectu.
/* 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");
    }
}

Poznámka

Používáme EnableKeyword a DisableKeyword vyšší. Abyste je mohli využít ve vlastní aplikaci se standardním shaderem sady nástrojů, budete muset postupovat podle pokynů Unity pro přístup k materiálům prostřednictvím skriptu. V tomto případě jsme už zahrnuli tři varianty zvýrazněného materiálu , které jsou potřeba do složky Zdroje (hledejte tři materiály se zvýrazněním v názvu).

Sestavení a nasazení

  1. Stejně jako předtím sestavte projekt a nasaďte ho do HoloLensu.
  2. Sledujte, co se stane, když pohled směřuje na objekt, a když ne.

Kapitola 3 – Techniky cílení

Cíle

  • Usnadněte si cílení na hologramy.
  • Stabilizujte přirozené pohyby hlavy.

Pokyny

  1. Na panelu Hierarchie vyberte objekt InputManager .
  2. Na panelu inspektoru najděte skript stabilizátoru pohledu . Pokud se chcete podívat, otevřete ho v sadě Visual Studio kliknutím.
    • Tento skript iteruje vzorky dat Raycastu a pomáhá stabilizovat pohled uživatele na přesné cílení.
  3. V inspektoru můžete upravit hodnotu Uložené ukázky stability . Tato hodnota představuje počet vzorků, na které stabilizátor iteruje při výpočtu stabilizované hodnoty.

Kapitola 4 - Směrový indikátor

Cíle

  • Přidejte na kurzor směrový indikátor, který vám pomůže najít hologramy.

Pokyny

Použijeme soubor DirectionIndicator.cs , který:

  1. Zobrazení směrového indikátoru, pokud uživatel nevidí hologramy
  2. Skryjte směrový indikátor, pokud uživatel dívá na hologramy.
  3. Aktualizujte směrový indikátor tak, aby ukazoval na hologramy.

Tak se do toho pusťme.

  1. Klikněte na objekt AstroMan na panelu Hierarchie a kliknutím na šipku ho rozbalte.
  2. Na panelu Hierarchie vyberte objekt DirectionalIndicator v části AstroMan.
  3. Na panelu inspektoru klikněte na tlačítko Přidat komponentu .
  4. V nabídce zadejte do vyhledávacího pole Indikátor směru. Vyberte výsledek hledání.
  5. Na panelu Hierarchie přetáhněte objekt Kurzor do vlastnosti Kurzor v inspektoru.
  6. Na panelu Projekt přetáhněte ve složce Hologramy asset DirectionalIndicator do vlastnosti Directional Indicator v inspektoru.
  7. Sestavte a nasaďte aplikaci.
  8. Sledujte, jak vám objekt směrového indikátoru pomůže najít astronauta.

Kapitola 5 – Singing

Cíle

  • Pokud chcete, aby hologramy byly vždy k vám.

Budeme používat soubor Poutač.cs , abychom udržovali Objekt GameObject orientovaný tak, aby byl vždy tváří v tvář uživateli.

  1. Na panelu Hierarchie vyberte objekt AstroMan .
  2. Na panelu inspektoru klikněte na tlačítko Přidat komponentu .
  3. V nabídce zadejte do vyhledávacího pole Bille. Vyberte výsledek hledání.
  4. V inspektoru nastavte osu otáčení na Y.
  5. Vyzkoušejte si to! Sestavte a nasaďte aplikaci jako předtím.
  6. Podívejte se, jak se na vás postaví objekt Zásek bez ohledu na to, jak změníte perspektivu.
  7. Prozatím odstraňte skript z AstroMana .

Kapitola 6 – Tag-Along

Cíle

  • Použijte Tag-Along, aby nás hologramy sledovaly po celé místnosti.

Při práci na tomto problému se budeme řídit následujícími omezeními návrhu:

  • Obsah by měl být vždy rychlý.
  • Obsah by neměl být v cestě.
  • Obsah zamykání hlavou je nepohodlný.

Řešení, které se tady používá, spočívá v použití metody "tag-along".

Objekt značky nikdy zcela neopustí zobrazení uživatele. Značku si můžete představit jako objekt připojený k hlavě uživatele gumovými pásy. Když se uživatel přesune, obsah zůstane v přehledném přehledu, protože se posune směrem k okraji zobrazení, aniž by ho úplně opustil. Když uživatel upřený pohled na objekt s popisky, zobrazí se plněji.

Použijeme soubor SimpleTagalong.cs , který:

  1. Určí, jestli je Tag-Along objekt v mezích kamery.
  2. Pokud není v rámci pohledu frustum, umístěte Tag-Along částečně do pohledu frustum.
  3. V opačném případě umístěte Tag-Along do výchozí vzdálenosti od uživatele.

Chcete-li to provést, musíme nejprve změnit interactible.cs skript volání TagalongAction.

  1. Upravte soubor Interactible.cs dokončením kódování cvičení 6.a (zrušení komentáří řádků 84 až 87).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
    interactibleAction.PerformAction();
}

Skript InteractibleAction.cs spárovaný s interactible.cs provádí vlastní akce, když klepnete na hologramy. V tomto případě použijeme jeden speciálně pro označování.

  • Ve složce Scripts klikněte na asset TagalongAction.cs a otevřete ho v sadě Visual Studio.
  • Dokončete cvičení kódování nebo ho změňte takto:
    • V horní části hierarchie na panelu hledání zadejte ChestButton_Center a vyberte výsledek.
    • Na panelu inspektoru klikněte na tlačítko Přidat komponentu .
    • V nabídce zadejte do vyhledávacího pole Tagalong Action. Vyberte výsledek hledání.
    • Ve složce Hologramy najděte asset Tagalong .
    • Vyberte objekt ChestButton_Center v hierarchii. Přetáhněte objekt TagAlong z panelu Projekt do inspektoru do vlastnosti Object To Tagalong .
    • Přetáhněte objekt Akce Tagalong z inspektoru do pole Interagovatelná akce ve skriptu Interagovatelné .
  • Poklikejte na skript TagalongAction a otevřete ho v sadě Visual Studio.

Interaktivní nastavení

Musíme přidat následující:

  • Přidejte do funkce PerformAction ve skriptu TagalongAction (zděděné z InteractibleAction).
  • Přidejte do objektu upřeného pohledu funkci latence a nastavte osu otáčení na XY.
  • Potom do objektu přidejte jednoduché Tag-Along.

Tady je naše řešení z 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);
    }
}
  • Vyzkoušejte si to! Sestavte a nasaďte aplikaci.
  • Sledujte, jak obsah sleduje střed pohledu, ale ne nepřetržitě a bez blokování.