HoloLens (1. generációs) Bemenet 210: Tekintet

Fontos

Az Mixed Reality Academy oktatóanyagai az HoloLens (1. generációs), a Unity 2017 és Mixed Reality Modern headsetek szem előtt tartva voltak megtervezve. Ezért fontos, hogy ezeket az oktatóanyagokat a helyére helyezzük azoknak a fejlesztőknek, akik továbbra is útmutatást keresnek az eszközök fejlesztéséhez. Ezek az oktatóanyagok nem frissülnek a HoloLens 2-es verziójához használt legújabb eszközkészletekkel vagy interakciókkal, és előfordulhat, hogy nem kompatibilisek a Unity újabb verzióival. A rendszer fenntartja őket, hogy továbbra is a támogatott eszközökön dolgoznak. A 2. HoloLens új oktatóanyag-sorozat lett közzétéve.

A tekintet a bemenet első formája, amely felfedi a felhasználó szándékát és tudatosságát. Az MR Input 210 (más néven Project Explorer) a Windows Mixed Reality. A kurzort és a hologramokat környezetfüggő ismeretekkel bővítjük, teljes mértékben kihasználva azt, amit az alkalmazás tud a felhasználó tekintete alapján.

Van egy barátságos űrhajósunk, aki segít a tekintetek fogalmainak elsajátításában. Az MR Basics 101-benvolt egy egyszerű kurzor, amely az Ön tekintetét követte. Ma egy lépéssel az egyszerű kurzoron túlra lépünk:

  • A kurzort és a hologramokat úgy tekintjük, hogy mindkettő megváltozik a felhasználó által keresett hely vagy a felhasználó által nem keresett hely alapján. Ez kontextusfüggővé teszi őket.
  • A kurzorhoz és a hologramhoz visszajelzést adunk, hogy a felhasználó több információt kap a célzott adatokról. Ez a visszajelzés hang- és vizuális is lehet.
  • Meg fogjuk mutatni a célcsoport-célzási technikákat, amelyek segítenek a felhasználóknak a kisebb célok elérésében.
  • Megmutatjuk, hogyan felhívhat a felhasználó figyelmét a hologramjaira egy irányjelzővel.
  • Megtanulhat olyan technikákat is elsajátítani, amelyek segítségével a hologramokat a felhasználóval együtt használva mozoghat a saját világában.

Fontos

Az alábbi fejezetekbe beágyazott videók a Unity és a Mixed Reality Toolkit egy régebbi verziójával voltak rögzítve. Bár a részletes utasítások pontosak és aktuálisak, a megfelelő videókban már elavult szkriptek és vizualizációk is lehetnek. A videók az utókor számára is szerepelnek, és mivel a fogalmak továbbra is érvényesek.

Eszköztámogatás

Tanfolyam HoloLens Modern headsetek
MR Input 210: Tekintet ✔️ ✔️

Előkészületek

Előfeltételek

Project fájlok

  • Töltse le a projekthez szükséges fájlokat. Unity 2017.2-es vagy újabb szükséges hozzá.
  • Archiválja a fájlokat az asztalra vagy más könnyen elérhető helyre.

Megjegyzés

Ha a letöltés előtt át szeretné nézni a forráskódot, az a következő GitHub.

Kiszámíthatatlan és megjegyzések

  • Ebben Visual Studio a "Saját kód" beállításnak le kell tiltva (nincs bejelölve) az Eszközök – Beállítások – Hibakeresés alatt, hogy töréspontokat ássunk a >> kódban.

1. fejezet – Unity beállítása

Célkitűzések

  • Optimalizálja a Unityt HoloLens fejlesztéshez.
  • Adateszközök importálása és a jelenet beállítása.
  • Tekintse meg az űrhajóst a HoloLens.

Utasítások

  1. Indítsa el a Unityt.
  2. Válassza az Új projekt lehetőséget.
  3. A projektnek nevezze el a ModelExplorer nevet.
  4. Adja meg a helyet a korábban archivált Tekintet mappaként.
  5. Győződjön meg arról, hogy a projekt beállítása 3D.
  6. Kattintson a Create Project (Projekt létrehozása) elemre.

Unity-beállítások HoloLens

Tudatnunk kell a Unityvel, hogy az exportálni próbált alkalmazásnak 2D-nézet helyett modern nézetet kell létrehoznia. Ezt úgy tejük meg, hogy hozzáadunk HoloLens virtuális valóságon keresztüli eszközként.

  1. A Lejátszó szerkesztése Project Gépház > gombra.
  2. A Player alkalmazás Inspector panel Gépház válassza a Windows ikont.
  3. Bontsa ki az XR Gépház csoportot.
  4. A Renderelés szakaszban jelölje be a Virtual Reality támogatott jelölőnégyzetét egy új Virtual Reality SDK-lista hozzáadásához.
  5. Ellenőrizze, Windows Mixed Reality megjelenik-e a listában. Ha nem, kattintson a lista alján található gombra, és válassza a ++

Ezután a szkript-háttérrendszert .NET-re kell álltatnunk.

  1. Lépjen az Edit Project Gépház > Player (A lejátszó szerkesztése) lapra (előfordulhat, hogy az előző lépésből még megvan).
  2. A Player alkalmazás Inspector panel Gépház válassza a Windows ikont.
  3. Az Other Gépház Configuration (Egyéb konfiguráció) szakaszban győződjön meg arról, hogy a Scripting Backend (Szkriptek háttérrendszere) beállítás a .NET-re van állítva.

Végül frissítjük a minőségi beállításokat, hogy gyors teljesítményt érjük el a HoloLens.

  1. Kattintson a Minőség szerkesztése Project Gépház > elemre.
  2. Kattintson a lefelé mutató nyílra az Alapértelmezett sorban a Windows ikon alatt.
  3. Válassza a Nagyon alacsony lehetőséget a Windows Áruházbeli alkalmazásokhoz.

Projekteszközök importálása

  1. Kattintson a jobb gombbal az Assets (Eszközök) mappára a Project panelen.
  2. Kattintson az Import Package Custom Package (Egyéni csomag importálása) elemre.
  3. Keresse meg a letöltött projektfájlokat, és kattintson a ModelExplorer.unitypackage elemre.
  4. Kattintson a Megnyitás gombra.
  5. A csomag betöltése után kattintson az Importálás gombra.

A jelenet beállítása

  1. A Hierarchiában törölje a Main Camera (Fő kamera) adatokat.
  2. A HoloToolkit mappában nyissa meg az Input mappát, majd a Prefabs mappát.
  3. Húzza a MixedRealityCameraParent előfab adatokat a Prefabs mappából a hierarchiába.
  4. Kattintson a jobb gombbal a Hierarchiában a Kétirányú világosra, és válassza a Törlés lehetőséget.
  5. A Hologramok húzza a következő eszközöket a hierarchia gyökerére:
    • AstroMan
    • Fények
    • SpaceAudioSource
    • SpaceBackground (Térháttér)
  6. A Play Mode ▶ az űrhajós megtekintéséhez.
  7. A leállításhoz kattintson ismét a ▶ mód beállítása lehetőségre.
  8. Az Hologramok mappában keresse meg a Fitbox-eszközt, és húzza a hierarchia gyökerére.
  9. Válassza a Fitbox (Beférés) lehetőséget a Hierarchia panelen.
  10. Húzza az AstroMan gyűjteményt a Hierarchyből a Fitbox Hologram Collection (Hologram-gyűjtemény) tulajdonságára az Inspector panelen.

A projekt mentése

  1. Mentse az új jelenet: File Save Scene As ..
  2. Kattintson a New Folder (Új mappa) elemre, és nevezze el a mappát Scenes (Jelenetek) néven.
  3. A fájlnak nevezze el a"ModelExplorer"nevet, és mentse a Scenes mappába.

A projekt felépítése

  1. A Unityben válassza a File Build Gépházlehetőséget.
  2. Kattintson az Add Open Scenes (Nyitott jelenetek hozzáadása) gombra a jelenet hozzáadásához.
  3. A Platform listában válassza Windows Universal Windows Platform lehetőséget, majd kattintson a Switch Platform (Platformváltás) elemre.
  4. Ha kifejezetten a fejlesztést használja a HoloLens, állítsa a Céleszközt akövetkezőre: HoloLens. Ellenkező esetben hagyja a Bármely eszközön.
  5. Győződjön meg arról, hogy a Build Type (Build típusa) beállítása D3D, az SDK beállítása pedig Latest installed (Legújabb telepített) (sdk 16299 vagy újabb).
  6. Kattintson a Build (Build) gombra.
  7. Hozzon létre egy "App" nevű új mappát.
  8. Kattintson egyszer az Alkalmazás mappára.
  9. Kattintson a Mappa kiválasztása gombra.

Amikor a Unity végzett, megjelenik egy Fájlkezelő ablak.

  1. Nyissa meg az Alkalmazás mappát.
  2. Nyissa meg a ModelExplorer Visual Studio Solution (Megoldás) gombra.

Ha az üzembe helyezés a következő HoloLens:

  1. Az eszköz felső eszköztárának Visual Studio módosítsa a célt Hibakeresésről Kiadásra, ARM-ről x86-ra.
  2. Kattintson a Helyi gép gomb melletti legördülő nyílra, és válassza a Távoli gép lehetőséget.
  3. Adja meg a HoloLens IP-címét, és állítsa a Hitelesítési módot Univerzális (Titkosítatlan protokoll) beállításra. Kattintson a Kiválasztás elemre. Ha nem ismeri az eszköz IP-címét, keresse meg a Gépház speciális hálózati &> beállításokat.
  4. A felső menüsávon kattintson a Debug - Start Without debugging (Hibakeresés – Indítás hibakeresés nélkül) elemre, vagy nyomja le a Ctrl + F5 billentyűkombinációt. Ha ez az első üzembe helyezés az eszközön, a következővel kell párosítani: Visual Studio.
  5. Az alkalmazás üzembe helyezése után egy kijelölési kézmozdulattal mellőzheti a Fitboxot.

Modern headseten való üzembe helyezés esetén:

  1. Az eszköz felső eszköztárának Visual Studio módosítsa a célt Hibakeresésről Kiadásra, ARM-ről x64-re.
  2. Győződjön meg arról, hogy az üzembe helyezési célhely a Helyi gép beállításra van beállítva.
  3. A felső menüsávon kattintson a Debug - Start Without debugging (Hibakeresés – Indítás hibakeresés nélkül) elemre, vagy nyomja le a Ctrl + F5 billentyűkombinációt.
  4. Az alkalmazás üzembe helyezése után az eseményindítót egy mozgásvezérlőre leküldve bezárhatja a Fitboxot.

2. fejezet – Kurzorral és célokkal kapcsolatos visszajelzés

Célkitűzések

  • Kurzor vizualizációk tervezése és viselkedése.
  • Tekintetalapú kurzor-visszajelzés.
  • Tekintetalapú hologram-visszajelzés.

A munkánkat néhány kurzortervezési alapelvre alapozjuk, nevezetesen:

  • A kurzor mindig látható.
  • Ne hagyja, hogy a kurzor túl kicsi vagy nagy legyen.
  • Kerülje a tartalom mellőzését.

Utasítások

  1. A HoloToolkit\Input\Prefabs mappában keresse meg az InputManager eszközt.
  2. Húzza az InputManager hierarchiáta hierarchiába.
  3. A HoloToolkit\Input\Prefabs mappában keresse meg a Kurzor eszközt.
  4. Húzza a kurzort aHierarchy (Hierarchia) hierarchiára.
  5. Válassza ki az InputManager objektumot a Hierarchiában.
  6. Húzza a Kurzor objektumot a hierarchiából az InputManager SimpleSinglePointerSelectorKurzor mezőjébe az Inspector alján.

Egyszerű egymutatós választó beállítása

Build és üzembe helyezés

  1. Építse újra az alkalmazást a Fájl buildelő Gépház.
  2. Nyissa meg az Alkalmazás mappát.
  3. Nyissa meg a ModelExplorer Visual Studio Solution (Megoldás) gombra.
  4. Kattintson a Hibakeresés – Indítás hibakeresés nélkül lehetőségre, vagy nyomja le a Ctrl + F5 billentyűkombinációt.
  5. Figyelje meg, hogyan rajzolja a kurzort, és hogyan változik meg a megjelenése, ha egy hologramot érint.

Utasítások

  1. A Hierarchy (Hierarchia) panelen bontsa ki az AstroMan- GEO_G- Back_Center objektumot.
  2. Kattintson duplán a Interactible.cs fájlra annak megnyitásához Visual Studio.
  3. Az IFocusable.OnFocusEnter() és az IFocusable.OnFocusExit() visszahívás sorait a Interactible.cs fájlban kell visszafoglalni. Ezeket az Mixed Reality-eszközkészlet InputManagerje hívja meg, amikor a fókusz (tekintet vagy a vezérlő rámutatása által) be- és kilép az adott GameObject összeütköztetőjéből.
/* 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");
    }
}

Megjegyzés

Mi a és EnableKeyword a DisableKeyword magasabbat használjuk. Ahhoz, hogy ezeket a saját alkalmazásában használva használjuk az eszközkészlet Standard árnyékolóját, a Unity irányelveit kell követnie az anyagok szkripten keresztüli eléréséhez. Ebben az esetben már szerepel a Kiemelt anyagok három szükséges változata a Resources (Erőforrások) mappában (keresse meg azt a három anyagot, amelyek nevében kiemelés szerepel).

Build és üzembe helyezés

  1. Ahogy korábban, buildelje a projektet, és telepítse a HoloLens.
  2. Figyelje meg, mi történik, ha a tekintet egy objektumra irányul, és ha nem az.

3. fejezet – Célcsoport-célzási technikák

Célkitűzések

  • Tegye egyszerűbbé a hologramok célzását.
  • A természetes fejmozgás stabilizálása.

Utasítások

  1. A Hierarchy (Hierarchia) panelen válassza ki az InputManager objektumot.
  2. Az Inspector panelen keresse meg a Gaze Stabilizer szkriptet. Kattintson rá a megnyitáshoz a Visual Studio, ha meg szeretné nézni.
    • Ez a szkript a Raycast-adatok mintáiban iterál, és segít stabilizálni a felhasználó tekintetét a pontossági célcsoport-megcélzásban.
  3. Az Inspector (Vizsgáló)eszközben szerkesztheti a Tárolt stabilitási minták értékét. Ez az érték azon minták számát jelöli, amelyeken a stabilizáló iterál a stabilizált érték kiszámításához.

4. fejezet – Irányjelző

Célkitűzések

  • Adjon hozzá egy irányjelzőt a kurzorhoz, hogy segítsen megtalálni a hologramokat.

Utasítások

A DirectionIndicator.cs fájlt fogjuk használni, amely a következőt fogja:

  1. A irányjelző megjelenítése, ha a felhasználó nem a hologramokat nézi.
  2. Rejtse el a irányjelzőt, ha a felhasználó a hologramokat nézi.
  3. Frissítse a irányjelzőt úgy, hogy a hologramra mutasson.

Lássunk neki!

  1. A Hierarchy (Hierarchia) panelen kattintson az AstroMan objektumra, majd a nyílra kattintva bontsa ki.
  2. A Hierarchy (Hierarchia) panelen válassza ki a DirectionalIndicator objektumot az AstroMan alatt.
  3. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  4. A menüben írja be a keresőmezőbe az Irányjelzőt. Válassza ki a keresési eredményt.
  5. A Hierarchia panelen húzza a Kurzor objektumot az Inspector Kurzortulajdonságára.
  6. A Project a Hologramok mappában húzza a DirectionalIndicator eszközt a Directional Indicator tulajdonságra az Inspector eszközben.
  7. Az alkalmazás összeállítása és üzembe helyezése.
  8. Figyelje meg, hogyan segít a irányjelző objektum megtalálni az űrhajóst.

5. fejezet – Számlázás

Célkitűzések

  • A billboarding használatával mindig arccal kell szembesülni a hologramokkal.

A GameObjectet a Billboard.cs fájl használatával fogjuk úgy tartani, hogy mindig a felhasználóval legyen szemben.

  1. A Hierarchy (Hierarchia) panelen válassza ki az AstroMan objektumot.
  2. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  3. A menüben írja be a következőt a billboard keresőmezőbe:. Válassza ki a keresési eredményt.
  4. Az Inspectorban állítsa a KimutatástengelytY-re.
  5. Próbálja ki! Buildelheti és üzembe helyezheti az alkalmazást, ahogy korábban is.
  6. Megtekintheti, hogyan néz ki a Billboard objektum, függetlenül attól, hogyan módosítja a nézőpontot.
  7. Törölje a szkriptet az AstroManből.

6. fejezet – Tag-Along

Célkitűzések

  • Használja Tag-Along, hogy a hologramok kövessenek minket a helyiségben.

A probléma megoldása során a következő tervezési korlátok vezetnek minket:

  • A tartalomnak mindig egy pillantással elérhetőnek kell lennie.
  • A tartalom nem lehet útban.
  • A fejzárolási tartalom kényelmetlen.

Az itt használt megoldás a "tag-along" megközelítés használata.

A tag-along objektum soha nem hagyja el teljesen a felhasználó nézetét. A címke és a címke egy olyan objektum, amely a felhasználó fejéhez van csatolva egy sávok által. A felhasználó mozgása alatt a tartalom könnyen látható marad, ha a nézet széle felé csúszkál anélkül, hogy teljesen elhagyna. Amikor a felhasználó a tag-along objektum felé tekint, jobban átlátja.

A SimpleTagalong.cs fájlt fogjuk használni, amely a következőt fogja:

  1. Állapítsa meg, hogy Tag-Along objektum a kamerahatáron belül van-e.
  2. Ha nem a nézet frustum részen van, helyezze a Tag-Along a nézet frustum-ában.
  3. Ellenkező esetben helyezze a Tag-Along a felhasználótól való alapértelmezett távolságba.

Ehhez először módosítani kell a Interactible.cs szkriptet a TagalongAction hívására.

  1. Szerkessze a Interactible.cs-t a 6.a kódolási gyakorlat elvégzésével (a 84–87. sor befoglalása nélkül).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
    interactibleAction.PerformAction();
}

A Interactible.cs fájlhoz párosított InteractibleAction.cs szkript egyéni műveleteket hajt végre a hologramok koppintáskor. Ebben az esetben kifejezetten a címkézéshez fogunk használni egyet.

  • A Scripts mappában kattintson a TagalongAction.cs eszközre a megnyitáshoz a Visual Studio.
  • A kódolási gyakorlat befejezése vagy módosítása a következőre:
    • A Hierarchy (Hierarchia)tetején a keresősávba írja be a ChestButton_Center és válassza ki az eredményt.
    • Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
    • A menüben írja be a következőt a keresőmezőbe: Tagalong Action. Válassza ki a keresési eredményt.
    • A Hologramok keresse meg a Tagalong-eszközt.
    • Válassza ki a ChestButton_Center objektumot a Hierarchy (Hierarchia) hierarchiában. Húzza a TagAlong objektumot a Project panelről az Inspector gombra az Object To Tagalong tulajdonságba.
    • Húzza a Tagalong Action objektumot az Inspectorból az Interactible script Interactible Action (Interakciós művelet) mezőjébe.
  • Kattintson duplán a TagalongAction szkriptre a Visual Studio.

Interakciós beállítás

A következőket kell hozzáadnunk:

  • Funkciók hozzáadása a (InteractibleAction függvényből örökölt) TagalongAction szkript PerformAction függvényéhez.
  • Adja hozzá a billboarding (tábla) adatokat a betekintő objektumhoz, és állítsa a kimutatástengelyt XY-re.
  • Ezután adjon hozzá egyszerű Tag-Along az objektumhoz.

A TagalongAction.csfájlban a következő a megoldás:

// 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);
    }
}
  • Próbálja ki! Az alkalmazás összeállítása és üzembe helyezése.
  • Figyelje meg, hogy a tartalom hogyan követi a tekinteti pont középpontját, de nem folyamatosan és anélkül, hogy blokkolni lenne.