HoloLens (1. gen) Bemenet 211: Kézmozdulat

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 kézmozdulatok a felhasználói szándékot cselekvésekbe ják. A kézmozdulatok lehetővé teszi, hogy a felhasználók interakcióba lépjenek a hologramokkal. Ebben a kurzusban megtanuljuk, hogyan lehet nyomon követni a felhasználó kézfogását, hogyan reagálni a felhasználói bevitelre, és hogyan lehet visszajelzést adni a felhasználónak az állapot és a hely alapján.

Az MR Basics 101-benegy egyszerű, légi koppintásos kézmozdulattal kommunikáltunk a hologramokkal. Most túllépünk a légi koppintásos kézmozdulaton, és a következő új fogalmakat vizsgáljuk meg:

  • Észlelheti, ha nyomon követik a felhasználó kézét, és visszajelzést küldhet a felhasználónak.
  • Egy navigációs kézmozdulattal elforgathatja a hologramokat.
  • Visszajelzés küldése, ha a felhasználó beavatkozása már nem lesz látható.
  • Manipuláló eseményekkel lehetővé teheti a felhasználóknak, hogy a hologramokat a saját kezűleg mozgatják.

Ebben a kurzusban visszatérünk a Unity Model Explorerprojekthez, amelyet az MR Input 210-ben építettünk fel. Űrhajósunk újra segít az új kézmozdulatokkal kapcsolatos fogalmak feltárásá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 211: Kézmozdulat ✔️ ✔️

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

  • Az "Saját kód engedélyezése" beállításnak le kell tiltva(nincsbejelölve) a Visual Studio Eszközök – Beállítások – Hibakeresés alatt, hogy töréspontokat ásson el a > kódban.

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

Utasítások

  1. Indítsa el a Unityt.
  2. Válassza a Megnyitás lehetőséget.
  3. Keresse meg a korábban archivált Gesture mappát.
  4. Keresse meg és válassza ki a StartingModel Explorer (Modellkezelő indítása) mappát.
  5. Kattintson a Mappa kiválasztása gombra.
  6. A Project bontsa ki a Scenes mappát.
  7. Kattintson duplán a ModelExplorer jelenetre a Unitybe való betöltéséhez.

Épület

  1. A Unityben válassza a File Build Gépházlehetőséget.
  2. Ha a Scenes/ModelExplorer nem szerepel a Scenes In Build(Buildelési jelenetek) listában, kattintson az Add Open Scenes (Nyitott jelenetek hozzáadása) elemre a jelenet hozzáadásához.
  3. 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.
  4. 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).
  5. Kattintson a Build (Build) gombra.
  6. Hozzon létre egy "App" nevű új mappát.
  7. Kattintson egyszer az Alkalmazás mappára.
  8. Kattintson a Select Folder (Mappa kiválasztása) gombra, és a Unity elkezdi a projekt Visual Studio.

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.

Megjegyzés

A Hibák panelen vörös színű hibákat Visual Studio észre. Ezeket biztonságosan figyelmen kívül hagyhatja. Váltson a Kimenet panelre a build tényleges folyamatának megtekintéséhez. A Kimeneti panel hibáihoz javításra van szükség (leggyakrabban egy szkript hibája okozza őket).

1. fejezet – Kézzel észlelt visszajelzés

Célkitűzések

  • Feliratkozás kézkövetési eseményekre.
  • A kurzort használhatja a felhasználók nyomon követésére.

Megjegyzés

A 2 HoloLens helyen a kéz akkor is tűzes, amikor a kéz látható (nem csak akkor, ha egy kéz mutat fel).

Utasítások

  • A Hierarchy (Hierarchia) panelen bontsa ki az InputManager objektumot.
  • Keresse meg és válassza ki a GesturesInput objektumot.

A InteractionInputSource.cs szkript a következő lépéseket végzi el:

  1. Feliratkozik a InteractionSourceDetected és a InteractionSourceLost eseményekre.
  2. Beállítja a HandDetected állapotot.
  3. Leiratkozik a InteractionSourceDetected és a InteractionSourceLost eseményekről.

Ezután frissítjük a kurzort az MR Input 210-ről egy olyanra, amely a felhasználói műveletektől függően visszajelzést ad.

  1. A Hierarchy (Hierarchia) panelen válassza ki a Cursor objektumot, és törölje azt.
  2. A Project keresse meg a CursorWithFeedback ikonra, és húzza a Hierarchy (Hierarchia) panelre.
  3. Kattintson az InputManager elemre a Hierarchy panelen, majd húzza a CursorWithFeedback objektumot a hierarchiából az InputManager SimpleSinglePointerSelectorkurzormezőjére az Inspectoralján.
  4. Kattintson a CursorWithFeedback elemre a hierarchiában.
  5. Az Inspector panelen bontsa ki a Kurzorállapot adatai gombra az Objektum kurzora szkripten.

A kurzorállapot-adatok a következő szerint működnek:

  • Bármely Figyelt állapot azt jelenti, hogy a rendszer nem észlel kézeket, és a felhasználó egyszerűen csak körbe fog ásni.
  • Bármely Interakció állapot azt jelenti, hogy a rendszer egy adott kéz vagy vezérlő észlelését jelzi.
  • Bármely Rámutatás állapot azt jelenti, hogy a felhasználó egy hologramot néz.

Build és üzembe helyezés

  • A Unityben a File Build Gépház az alkalmazás újraépítéséhez.
  • Nyissa meg az Alkalmazás mappát.
  • Ha még nincs megnyitva, nyissa meg a ModelExplorer Visual Studio megoldással.
    • (Ha a telepítés során már felépítette/üzembe Visual Studio a projektet, akkor megnyithatja a VS ezen példányát, és ha a rendszer kéri, kattintson az "Összes újratöltése" gombra).
  • A Visual Studio 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.
  • Miután az alkalmazás üzembe helyezése a HoloLens, a légi koppintásos kézmozdulattal bezárja a fitboxot.
  • Helyezze a kézzel a nézetbe, és az indexa kezében az eget mutatva kezdje meg a kézkövetést.
  • Mozgassa a bal, jobb, felfelé és lefelé mozgatott kézzel.
  • Figyelje meg, hogyan változik a kurzor, ha a kéz észlelve van, majd elveszett a nézetben.
  • Ha modern headsetet csatlakozik, csatlakoztatnia kell a vezérlőt, és le kell bontani a kapcsolatot. Ez a visszajelzés kevésbé érdekes egy modern eszközön, mivel a csatlakoztatott vezérlő mindig "elérhető" lesz.

2. fejezet – Navigáció

Célkitűzések

  • Használjon navigációs kézmozdulat-eseményeket az űrhajósok elforgatása érdekében.

Utasítások

Ha navigációs kézmozdulatokat szeretnénk használni az alkalmazásban, a GestureAction.cs fájl szerkesztését fogjuk használni az objektumok elforgatása érdekében a navigációs kézmozdulat előfordulásakor. Emellett megjelenítendő visszajelzést is adjuk a kurzorhoz, ha a Navigáció elérhető.

  1. A Hierarchy (Hierarchia) panelen bontsa ki a CursorWithFeedback ikonra.
  2. A Hologramok keresse meg a ScrollFeedback eszközt.
  3. Húzza a ScrollFeedback előfedőt a hierarchiában lévő CursorWithFeedback GameObjectre.
  4. Kattintson a CursorWithFeedback elemre.
  5. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  6. A menüben írja be a következőt a keresőmezőbe: CursorFeedback. Válassza ki a keresési eredményt.
  7. Húzza a ScrollFeedback objektumot a hierarchiából a Scroll Detected Game Object (Görgetett észlelt játékobjektum) tulajdonságra az Inspector Kurzorvisszacsatolás összetevőjére.
  8. A Hierarchy (Hierarchia) panelen válassza ki az AstroMan objektumot.
  9. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  10. A menüben írja be a következőt a keresőmezőbe: Kézmozdulati művelet. Válassza ki a keresési eredményt.

Ezután nyissa meg a GestureAction.cs Visual Studio. A 2.c kódolási gyakorlatban szerkessze a szkriptet a következő lépésekhez:

  1. Az AstroMan objektum elforgatása navigációs kézmozdulatok esetén.
  2. A rotationFactor kiszámítása az objektumra alkalmazott rotáció mennyiségének szabályozásához.
  3. Ha a felhasználó balra vagy jobbra mozgatja az objektumot az y tengely körül.

A szkriptben töltse ki a 2.c kódolási gyakorlatot, vagy cserélje le a kódot az alábbi kész megoldásra:

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Figyelje meg, hogy a többi navigációs esemény már meg van töltve néhány adatgal. Leküldjük a GameObjectet az eszközkészlet InputSystem modális vermére, így a felhasználónak nem kell az űrhajósra összpontosítania a rotáció elkezdődtével. Ennek megfelelően a kézmozdulat befejezése után kiugrjuk a GameObjectet a veremből.

Build és üzembe helyezés

  1. Építse újra az alkalmazást a Unityben, majd a Visual Studio és üzembe helyezés után futtassa a HoloLens.
  2. Az űrhajósra nézve két nyílnak kell megjelennie a kurzor mindkét oldalán. Ez az új vizualizáció azt jelzi, hogy az űrhajós elforgatható.
  3. Helyezze a kézzel a kész helyre (az indexamutatót az sky felé), hogy a HoloLens elkezdi nyomon követni a kézzel.
  4. Az űrhajós elforgatása érdekében csökkentse az indexamutatót egy csippentés pozícióba, majd mozgassa a kézzel balra vagy jobbra a NavigationX kézmozdulat aktiválása érdekében.

3. fejezet – Útmutató kézhez

Célkitűzések

  • A kéz útmutató pontszámának használatával előre jelezhető, hogy mikor fog elveszni a kézkövetés.
  • Adjon visszajelzést a kurzorra, hogy a felhasználó kézének a kamera szegélyéhez közel láthatónak kell-e nyílni.

Utasítások

  1. A Hierarchy (Hierarchia) panelen válassza ki a CursorWithFeedback objektumot.
  2. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  3. A menüben írja be a következőt a keresőmezőbe: Útmutató a kézhez. Válassza ki a keresési eredményt.
  4. A Project panel Hologramok keresse meg a HandGuidanceFeedback-eszközt.
  5. Húzza a HandGuidanceFeedback eszközt az Inspector panel Hand Guidance Indicatortulajdonságára.

Build és üzembe helyezés

  • Építse újra az alkalmazást a Unityben, majd hozza létre és Visual Studio az alkalmazást a HoloLens.
  • Vigye a kézét a képbe, és emelje fel az indexamutatót a nyomon követéséhez.
  • Kezdje el az űrhajós rotálását a navigációs kézmozdulattal (csippentse össze az index-ujjlenyomatot és a ujjlenyomatot).
  • Mozgassa a kézzel balra, jobbra, felfelé és lefelé.
  • Ahogy a kézmozdulatkeret széléhez közeledik, egy nyílnak kell megjelennie a kurzor mellett, amely figyelmezteti, hogy a kézkövetés elveszhet. A nyíl jelzi, hogy melyik irányba kell mozgatni a kézzel, hogy a követés ne veszzen el.

4. fejezet – Manipuláció

Célkitűzések

  • Az események manipulálása használatával a saját kezűleg mozgatja az űrhajóst.
  • Adjon visszajelzést a kurzorhoz, hogy a felhasználó tudja, mikor használható a Manipulation (Manipuláció).

Utasítások

A GestureManager.cs és az AstronautManager.cs a következőket teszi lehetővé:

  1. Használja a"Move Astronaut" (Űrhajós mozgatása)kulcsszót a manipulációs kézmozdulatok engedélyezéséhez, és a "Rotate Astronaut" (Űrhajós elforgatása) kulcsszót a letiltásához.
  2. Váltson a manipulation gesture recognizer (Kézmozdulatok felismerése) válaszra.

Lássunk neki!

  1. A Hierarchy (Hierarchia) panelen hozzon létre egy új üres GameObjectet. Nevezze el "AstronautManager".
  2. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  3. A menüben írja be a következőt a keresőmezőbe: Űrhajós-menedzser. Válassza ki a keresési eredményt.
  4. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  5. A menüben írja be a szöveget a Speech Input Source keresőmezőbe. Válassza ki a keresési eredményt.

Most hozzáadjuk az űrhajós interakciós állapotának vezérléséhez szükséges beszédparancsokat.

  1. Bontsa ki a Keywords (Kulcsszavak) szakaszt az Inspector (Vizsgáló) panelen.
  2. Új kulcsszó hozzáadásához kattintson a jobb oldalon + található elemre.
  3. Írja be a kulcsszót a Move Astronaut (Űrhajós áthelyezése) kifejezésre. Szükség esetén hozzáadhat egy gyorsbillentyűt is.
  4. Új kulcsszó hozzáadásához kattintson a jobb oldalon + található elemre.
  5. Írja be a kulcsszót az Űrhajósok elforgatása kifejezésre. Szükség esetén hozzáadhat egy gyorsbillentyűt is.
  6. A megfelelő kezelőkód a GestureAction.csfájlban található az ISpeechHandler.OnSpeechKeywordRecognized kezelőben.

A Beszédbemeneti forrás beállítása a 4. fejezethez

Ezután beállítjuk a manipulációval kapcsolatos visszajelzést a kurzoron.

  1. A Project panel Hologramok keresse meg a PathingFeedback eszközt.
  2. Húzza a PathingFeedback előfedőt a hierarchiában lévő CursorWithFeedbackobjektumra.
  3. A Hierarchy (Hierarchia) panelen kattintson a CursorWithFeedback elemre.
  4. Húzza a PathingFeedback objektumot a hierarchiából a Pathing Detected Game Object tulajdonságra az Inspector kurzorvisszacsatolás összetevőjére.

Most kódot kell hozzáadnunk a GestureAction.cs fájlhoz a következők engedélyezéséhez:

  1. Adjon hozzá kódot az IManipulationHandler.OnManipulationUpdated függvényhez, amely egy manipulációs kézmozdulat észlelésekor áthelyezi az űrhajóst.
  2. Számítsa ki a mozgási vektort annak meghatározásához, hogy hová kell áthelyezni az űrhajóst a kézi helyzet alapján.
  3. Helyezze át az űrhajóst az új állásba.

Töltse ki a 4.a kódolási gyakorlatot a GestureAction.cs fájlban,vagy használja az alábbi kész megoldást:

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
            transform.position = manipulationOriginalPosition + eventData.CumulativeDelta;
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Build és üzembe helyezés

  • Építse újra az alkalmazást a Unityben, majd hozza létre és Visual Studio az alkalmazást a HoloLens.
  • Mozgassa a kezében a HoloLens, és emelje fel az indexaját, hogy nyomon követhető legyen.
  • A kurzort az űrhajós fölé kell fektetni.
  • Mondja ki az "Űrhajós áthelyezése" szót, hogy egy manipulációs kézmozdulattal áthelyezi az űrhajóst.
  • Négy nyílnak kell megjelennie a kurzor körül annak jelzésére, hogy a program mostantól reagál a manipulációs eseményekre.
  • Húzza le az indexamutatót a lefelé mutató ujjlenyomatra, és tartsa őket csippentve.
  • A kéz mozgatása során az űrhajós is mozgásban lesz (ez a Manipuláció).
  • Emelje fel az indexamutatót, hogy ne manipulálja az űrhajóst.
  • Megjegyzés: Ha a kéz mozgatás előtt nem mondja ki az "Űrhajós áthelyezése" szót, a rendszer a navigációs kézmozdulatot használja.
  • Mondja ki az 'Űrhajós rotációja' szót, hogy visszatérjen a forgó állapotba.

5. fejezet – Modellbővítés

Célkitűzések

  • Bontsa ki az Astronaut (Űrhajós) modellt több kisebb darabra, amelyekhez a felhasználó interakcióba léphet.
  • Az egyes részeket egyenként mozgatja navigációs és manipulációs kézmozdulatokkal.

Utasítások

Ebben a szakaszban a következő feladatokat fogjuk elvégezni:

  1. Adjon hozzá egy új kulcsszót az"Expand Model" (Modell kibontása)kulcsszóval az űrhajós modell kibontásához.
  2. Adjon hozzá egy új kulcsszót a"Reset Model"(Modell alaphelyzetbe állítása) kulcsszóval, hogy a modell visszatérjen az eredeti formjére.

Ehhez két további kulcsszót ad hozzá a Speech Input Source forráshoz az előző fejezetből. Bemutatjuk a felismerési események másik módját is.

  1. Kattintson vissza az AstronautManager elemre az Inspectorban, és bontsa ki a Keywords (Kulcsszavak) szakaszt az Inspector (Vizsgáló) panelen.
  2. Új kulcsszó hozzáadásához kattintson a jobb oldalon + található elemre.
  3. Írja be a kulcsszót a Modell kibontása mezőbe. Szükség esetén hozzáadhat egy gyorsbillentyűt is.
  4. Új kulcsszó hozzáadásához kattintson a jobb oldalon + található elemre.
  5. Írja be a kulcsszót Alaphelyzetbe állítási modellként. Szükség esetén hozzáadhat egy gyorsbillentyűt is.
  6. Az Inspector panelen kattintson az Add Component (Összetevő hozzáadása) gombra.
  7. A menüben írja be a következőt a keresőmezőbe: Speech Input Handler. Válassza ki a keresési eredményt.
  8. Jelölje be a Globális listener(Globális figyelő) jelölőnégyzetet, mivel azt szeretnénk, hogy ezek a parancsok a GameObjecttől függetlenül is működjön.
  9. Kattintson a + gombra, és válassza + a Kulcsszó legördülő menüből.
  10. Kattintson a Válasz alatti elemre, és húzza az ++ hierarchiából a Nincs (Objektum) mezőbe.
  11. Most kattintson a Nincs függvény legördülő menüre, válassza az AstronautManager, majd az ExpandModelCommand lehetőséget.
  12. Kattintson a Beszédbemenet-kezelő gombjára, és válassza a Modell alaphelyzetbe állítása lehetőséget a + Kulcsszó legördülő + menüből.
  13. Kattintson a Válasz alatti elemre, és húzza az ++ hierarchiából a Nincs (Objektum) mezőbe.
  14. Most kattintson a Nincs függvény legördülő menüre, válassza az AstronautManager, majd a ResetModelCommand lehetőséget.

A Speech Input Source és a Handler beállítása az 5. fejezethez

Build és üzembe helyezés

  • Próbálja ki! Készítse el és telepítse az alkalmazást a HoloLens.
  • A kibontott űrhajós modellért tekintse meg a Modell kibontása szót.
  • A navigációval elforgathatja az űrhajósruhának egyes darabjait.
  • Mondja az Űrhajós áthelyezése, majd a Manipulation (Manipuláció) használatával helyezze át az űrhajósruhának egyes darabjait.
  • Például az Űrhajós elforgatása a darabok újra forgassuk.
  • Mondja a Modell alaphelyzetbe állítása szót, hogy az űrhajós visszatérjen az eredeti formára.

Vége

Gratulálunk! Befejezte az MR Input 211: Gesture művelettel.

  • Tudja, hogyan észlelheti a kézkövetési, navigációs és manipulációs eseményeket, és hogyan reagálhat ezekre.
  • Tisztában van a navigációs és a manipulációs kézmozdulatok közötti különbséggel.
  • Tudja, hogyan módosíthatja a kurzort, hogy vizuális visszajelzést adjon a kéz észlelésének, a kéz elveszettnek, illetve arra, hogy mikor támogatja egy objektum a különböző interakciókat (navigáció vagy manipuláció).