HoloLens (1. generációs) Bemenet 211: Kézmozdulat

Fontos

A Mixed Reality Academy oktatóanyagait a HoloLens (1. generációs), a Unity 2017 és a Mixed Reality modern headsetek szem előtt tartásával tervezték. Ezért fontosnak tartjuk, hogy ezeket az oktatóanyagokat megtartsuk 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 legújabb eszközkészletekkel vagy interakciókkal, amelyeket HoloLens 2 használnak, és előfordulhat, hogy nem kompatibilisek a Unity újabb verzióival. A támogatott eszközökön való munka folytatásához megmaradnak. Új oktatóanyag-sorozat jelent meg a HoloLens 2.

A kézmozdulatok működésbe léptetik a felhasználói szándékot. A felhasználók kézmozdulatokkal használhatják a hologramokat. Ebben a kurzusban megtanuljuk, hogyan követheti nyomon a felhasználó kezét, válaszolhat a felhasználói bevitelre, és hogyan küldhet visszajelzést a felhasználónak a kéz állapota és helye alapján.

Az MR Basics 101-ben egy egyszerű érintéses kézmozdulattal kommunikáltunk a hologramokkal. Most lépünk túl a légcsapásos kézmozdulaton, és megismerkedünk az új fogalmakkal:

  • Észleli, hogy a felhasználó keze nyomon van követve, és visszajelzést küld a felhasználónak.
  • A hologramok elforgatásához használjon navigációs kézmozdulatot.
  • Visszajelzés küldése, ha a felhasználó keze ki fog lépni a nézetből.
  • Manipulációs események használatával lehetővé teszi a felhasználók számára a hologramok áthelyezését a kezükkel.

Ebben a kurzusban újra megvizsgáljuk a Unity-projekt Model Explorerét, amelyet az MR Input 210-ben építettünk fel. Űrhajós barátunk visszatért, hogy segítsen nekünk az új kézmozdulatokkal kapcsolatos fogalmak feltárásában.

Fontos

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

Eszköztámogatás

Tanfolyam HoloLens Modern headsetek
MR Bemenet 211: Kézmozdulat ✔️ ✔️

Előkészületek

Előfeltételek

Projektfájlok

  • Töltse le a projekthez szükséges fájlokat . A Unity 2017.2-s vagy újabb verziójára van szükség.
  • Törölje a fájlok archiválását az asztalra vagy más könnyen elérhető helyre.

Megjegyzés

Ha a letöltés előtt át szeretné tekinteni a forráskódot, az elérhető a GitHubon.

Errata és megjegyzések

  • Az "Enable Just My Code" (Csak saját kód engedélyezése) elemet le kell tiltani (nincs bejelölve) a Visual Studióban az Tools-Options-Debugging>> területen ahhoz, hogy töréspontokat találjon 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. Lépjen a korábban archiválatlan kézmozdulat mappára.
  4. Keresse meg és válassza ki a Modellkezelő indítása/ mappát.
  5. Kattintson a Mappa kiválasztása gombra.
  6. A Projekt panelen bontsa ki a Jelenetek mappát.
  7. Kattintson duplán a ModelExplorer jelenetre a Unityben való betöltéséhez.

Épület

  1. A Unityben válassza a Fájl > buildelési beállításai lehetőséget.
  2. Ha a Jelenetek/ModelExplorer elem nem szerepel a Jelenetek buildben listában, kattintson a Jelenetek hozzáadása elemre a jelenet hozzáadásához.
  3. Ha kifejezetten a HoloLenshez fejleszt, állítsa a Céleszköz beállítást HoloLens értékre. Ellenkező esetben hagyja meg bármely eszközön.
  4. Győződjön meg arról, hogy a build típusaD3D , az SDK pedig a Legújabb telepítve van (amelynek SDK 16299 vagy újabbnak kell lennie).
  5. Kattintson a Build (Build) gombra.
  6. Hozzon létre egy "App" nevű új mappát .
  7. Kattintson egyetlen kattintással az Alkalmazás mappára.
  8. Nyomja le a Mappa kiválasztása gombot , és a Unity elkezdi felépíteni a projektet a Visual Studióhoz.

Amikor a Unity elkészült, megjelenik egy Fájlkezelő ablak.

  1. Nyissa meg az Alkalmazás mappát.
  2. Nyissa meg a ModelExplorer Visual Studio Solution alkalmazást.

Ha a HoloLensben helyezi üzembe a következőt:

  1. A Visual Studio felső eszköztárának használatával módosítsa a célértéket 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-eszköz IP-címét , és állítsa a hitelesítési módot univerzális (titkosítatlan protokoll) értékre. Kattintson a Kiválasztás elemre. Ha nem ismeri az eszköz IP-címét, tekintse meg a Beállítások > Hálózat & Internet > speciális beállításai című témakört.
  4. A felső menüsávon kattintson a Hibakeresés –> Indítás hibakeresés nélkül parancsra, vagy nyomja le a Ctrl + F5 billentyűkombinációt. Ha ez az első üzembe helyezés az eszközön, párosítania kell azt a Visual Studióval.
  5. Az alkalmazás üzembe helyezésekor egy kijelölési kézmozdulattal zárja be a Fitboxot.

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

  1. A Visual Studio felső eszköztárának használatával módosítsa a célértéket Hibakeresésről Kiadásra , ARM-ről x64-esre.
  2. Győződjön meg arról, hogy az üzembehelyezési cél helyi gépre van állítva.
  3. A felső menüsávon kattintson a Hibakeresés –> Indítás hibakeresés nélkül parancsra, vagy nyomja le a Ctrl + F5 billentyűkombinációt.
  4. Az alkalmazás üzembe helyezésekor zárja be a Fitboxot úgy, hogy lekérte az eseményindítót egy mozgásvezérlőn.

Megjegyzés

Előfordulhat, hogy piros hibát észlel a Visual Studio-hibák panelen. Nyugodtan figyelmen kívül hagyhatja őket. Váltson a Kimenet panelre a tényleges buildelési folyamat megtekintéséhez. A Kimenet panel hibáinak kijavítása szükséges (leggyakrabban egy szkript hibája okozza őket).

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

Célkitűzések

  • Iratkozzon fel a kézkövetési eseményekre.
  • A kurzorvisszajelzéssel megjelenítheti a felhasználókat, ha egy kéz nyomon követése történik.

Megjegyzés

A HoloLens 2 a kéz akkor észlelt tüzet, amikor a kéz látható (nem csak akkor, ha egy ujj felfelé mutat).

Utasítások

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

Az InteractionInputSource.cs szkript a következő lépéseket hajtja végre:

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

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

  1. A Hierarchia panelen jelölje ki a Kurzor objektumot, és törölje azt.
  2. A Projekt panelen keresse meg a CursorWithFeedback kifejezést, és húzza a Hierarchia panelre.
  3. Kattintson az InputManager elemre a Hierarchia panelen, majd húzza a CursorWithFeedback objektumot a Hierarchia elemből az InputManager SimpleSinglePointerSelectorKurzor mezőjébe az Inspector alján.
  4. Kattintson a Hierarchia CursorWithFeedbackelemére.
  5. Az Inspector panelen bontsa ki a Kurzorállapot adatai elemet az Objektumkurzor szkripten.

A kurzorállapot adatai a következőképpen működnek:

  • A Megfigyelési állapot azt jelenti, hogy a rendszer nem észleli a kezét, és a felhasználó egyszerűen körülnéz.
  • Bármely interakciós állapot azt jelenti, hogy a rendszer kéz vagy vezérlőt észlel.
  • Minden rámutatási állapot azt jelenti, hogy a felhasználó hologramot néz.

Buildelés és üzembe helyezés

  • A Unityben használja a Fájlépítési > beállításokat 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 Solution alkalmazást.
    • (Ha a telepítés során már elkészítette/üzembe helyezte ezt a projektet a Visual Studióban, akkor megnyithatja a VS adott példányát, és ha a rendszer kéri, kattintson az Összes betöltése elemre.
  • A Visual Studióban kattintson a Hibakeresés –> Indítás hibakeresés nélkül parancsra, vagy nyomja le a Ctrl + F5 billentyűkombinációt.
  • Miután az alkalmazás üzembe helyezést végzett a HoloLensben, zárja be a fitboxot a levegőbe koppintásos kézmozdulattal.
  • Vigye a kezét a nézetbe, és mutasson a mutatóujja az égre a kézkövetés elindításához.
  • Mozgassa a kezét balra, jobbra, fel és le.
  • Figyelje meg, hogyan változik a kurzor, amikor a kéz észleli, majd elveszik a nézetből.
  • Ha magával ragadó headsetet használ, csatlakoztatnia kell és le kell választania a vezérlőt. Ez a visszajelzés kevésbé lesz érdekes egy modern eszközön, mivel a csatlakoztatott vezérlő mindig "elérhető" lesz.

2. fejezet – Navigáció

Célkitűzések

  • A Navigációs kézmozdulat eseményekkel elforgathatja az űrhajóst.

Utasítások

Ha navigálási kézmozdulatokat szeretne használni az alkalmazásban, a GestureAction.cs szerkesztésével elforgatjuk az objektumokat a navigációs kézmozdulat használatakor. Emellett visszajelzést adunk a kurzorhoz, hogy megjelenjen, ha elérhető a navigáció.

  1. A Hierarchia panelen bontsa ki a CursorWithFeedback elemet.
  2. A Hologramok mappában keresse meg a ScrollFeedback objektumot .
  3. Húzza a ScrollFeedback előfabját a Hierarchia CursorWithFeedback GameObject elemére.
  4. Kattintson a CursorWithFeedback elemre.
  5. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  6. A menübe írja be a keresőmezőbe a CursorFeedback kifejezést. Válassza ki a keresési eredményt.
  7. Húzza a ScrollFeedback objektumot a hierarchia hierarchiájából a Scroll Detected Game Object tulajdonságra az InspectorKurzorvisszajelzés összetevőjében.
  8. A Hierarchia panelen válassza az AstroMan objektumot.
  9. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  10. A menübe írja be a keresőmezőbe a Kézmozdulat művelet kifejezést. Válassza ki a keresési eredményt.

Ezután nyissa meg a GestureAction.cs fájlt a Visual Studióban. A 2.c kódolási gyakorlatban szerkessze a szkriptet a következő műveletek végrehajtásához:

  1. Az AstroMan objektum elforgatása navigációs kézmozdulat végrehajtásakor.
  2. Számítsa ki a rotációTevőt az objektumra alkalmazott forgatás mennyiségének szabályozásához.
  3. Forgassa el az objektumot az y tengely körül, amikor a felhasználó balra vagy jobbra mozgatja a kezét.

Végezze el a 2.c kódolási gyakorlatokat a szkriptben, vagy cserélje le a kódot az alábbi befejezett 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();
    }
}

Megfigyelheti, hogy a többi navigációs esemény már ki van töltve néhány információval. A GameObject-et az Eszközkészlet InputSystem modális veremébe küldjük, így a felhasználónak nem kell az űrhajósra összpontosítania a forgatás megkezdése után. Ennek megfelelően a kézmozdulat befejezése után leugrik a GameObject elemről.

Buildelés és üzembe helyezés

  1. Építse újra az alkalmazást a Unityben, majd hozza létre és telepítse a Visual Studióból a HoloLensben való futtatásához.
  2. Nézze meg az űrhajóst, 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 kezét a kész helyzetbe (mutatóujja az ég felé mutat), így a HoloLens elkezdi nyomon követni a kezét.
  4. Az űrhajós elforgatásához engedje le a mutatóujját egy csippentő pozícióba, majd mozgassa a kezét balra vagy jobbra a NavigationX kézmozdulat elindításához.

3. fejezet – Kézi útmutató

Célkitűzések

  • A kézkövetés elvesztésének előrejelzéséhez használja a kézi útmutató pontszámát .
  • Visszajelzés küldése a kurzorról annak megjelenítéséhez, hogy a felhasználó keze mikor közeledik a kamera nézetének széléhez.

Utasítások

  1. A Hierarchia panelen válassza a CursorWithFeedback objektumot.
  2. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  3. A menüben írja be a keresőmezőbe a Hand Guidance (Útmutató) kifejezést. Válassza ki a keresési eredményt.
  4. A Projekt panel Hologramok mappájában keresse meg a HandGuidanceFeedback objektumot .
  5. Húzza a HandGuidanceFeedback objektumot a Hand Guidance Indicator tulajdonságra az Inspector panelen.

Buildelés és üzembe helyezés

  • Építse újra az alkalmazást a Unityben, majd hozza létre és telepítse a Visual Studióból az alkalmazást a HoloLensben való használathoz.
  • Vigye a kezét a nézetbe, és emelje fel a mutatóujját a nyomon követés érdekében.
  • Kezdje el elforgatni az űrhajóst a Navigációs kézmozdulattal (csippentse össze a mutatóujját és a hüvelykujját).
  • Mozgassa a kezét balra, jobbra, felfelé és lefelé.
  • Ahogy a kéz a kézmozdulat keretének széléhez közeledik, a kurzor mellett egy nyílnak kell megjelennie, amely figyelmezteti, hogy a kézkövetés elveszik. A nyíl jelzi, hogy melyik irányban mozgassa a kezét, hogy ne vesszenek el a nyomkövetések.

4. fejezet – Manipuláció

Célkitűzések

  • A Manipulációs események segítségével mozgathatja az űrhajóst a kezével.
  • Adjon visszajelzést a kurzorról, hogy a felhasználó tudja, mikor használható a manipuláció.

Utasítások

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

  1. A "Move Astronaut" (Űrhajós áthelyezése) beszéd kulcsszóval engedélyezheti a manipulációs kézmozdulatokat és az "Űrhajós elforgatását" a letiltásukhoz.
  2. Váltson a manipulációs kézmozdulat-felismerőre való válaszadásra.

Lássunk neki!

  1. A Hierarchia panelen hozzon létre egy új üres GameObject elemet. Nevezze el "AstronautManager"-nek.
  2. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  3. A menübe írja be az Astronaut Manager keresőmezőt. Válassza ki a keresési eredményt.
  4. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  5. A menübe írja be a szövegbeviteli forrás kifejezést a keresőmezőbe. Válassza ki a keresési eredményt.

Most hozzáadjuk az űrhajós interakciós állapotának szabályozásához szükséges beszédparancsokat.

  1. Bontsa ki az InspectorKulcsszavak szakaszát.
  2. Új kulcsszó hozzáadásához kattintson a + jobb oldalon lévő elemre.
  3. Írja be a kulcsszót áthelyezési űrhajósként. Igény szerint adjon hozzá egy billentyűparancsot.
  4. Új kulcsszó hozzáadásához kattintson a + jobb oldalon lévő elemre.
  5. Írja be a kulcsszót az Űrhajós forgatása mezőbe. Igény szerint adjon hozzá egy billentyűparancsot.
  6. A megfelelő kezelőkód megtalálható a GestureAction.cs fájlban, az ISpeechHandler.OnSpeechKeywordRecognized kezelőben.

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

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

  1. A Projekt panel Hologramok mappájában keresse meg a PathingFeedback objektumot .
  2. Húzza a PathingFeedback előfabját a HierarchiaCursorWithFeedback objektumára.
  3. A Hierarchia panelen kattintson a CursorWithFeedback elemre.
  4. Húzza a PathingFeedback objektumot a hierarchiából az InspectorCursor FeedbackösszetevőJének Pathing Detected Game Object tulajdonságára.

Most hozzá kell adnunk a kódot 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 a manipulációs kézmozdulat észlelésekor áthelyezi az űrhajóst.
  2. Számítsa ki a mozgásvektort annak meghatározásához, hogy hová kell áthelyezni az űrhajóst a kéz pozíciója alapján.
  3. Helyezze át az űrhajóst az új pozícióba.

Fejezze be a 4.a kódolási gyakorlatot a GestureAction.cs fájlban, vagy használja az alábbi, befejezett 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();
    }
}

Buildelés és üzembe helyezés

  • Építse újra a Unityben, majd hozza létre és telepítse a Visual Studióból az alkalmazást a HoloLensben való futtatásához.
  • Vigye a kezét a HoloLens elé, és emelje fel a mutatóujját, hogy nyomon követhető legyen.
  • Helyezze a kurzort az űrhajósra.
  • Mondja az "Űrhajós áthelyezése" parancsot, hogy egy manipulációs kézmozdulattal mozgassa az űrhajóst.
  • Négy nyílnak kell megjelennie a kurzor körül, hogy jelezze, hogy a program most reagál a Manipuláció eseményekre.
  • Engedje le a mutatóujját a hüvelykujjához, és tartsa őket összecsukva.
  • Ahogy mozog a kezed körül, az űrhajós is mozogni fog (ez a Manipuláció).
  • Emelje fel a mutatóujját, hogy ne manipulálja az űrhajóst.
  • Megjegyzés: Ha a kéz mozgatása előtt nem mondja ki az "Űrhajós áthelyezése" szöveget, akkor a navigációs kézmozdulatot fogja használni.
  • Mondja az "Űrhajós elforgatása" parancsot, hogy visszatérjen a forgatható állapotba.

5. fejezet – Modellbővítés

Célkitűzések

  • Bontsa ki az Űrhajós modellt több kisebb darabra, amelyekkel a felhasználó kommunikálhat.
  • Navigálási és manipulációs kézmozdulatokkal egyenként mozgathatja az egyes darabokat.

Utasítások

Ebben a szakaszban a következő feladatokat hajtjuk végre:

  1. Adjon hozzá egy új "Modell kibontása" kulcsszót az űrhajós modell kibontásához.
  2. Adjon hozzá egy új "Modell alaphelyzetbe állítása" kulcsszót, hogy visszaadja a modellt az eredeti formájának.

Ezt úgy fogjuk elvégezni, hogy hozzáadunk még két kulcsszót a Speech Input Source elemhez az előző fejezetből. Bemutatjuk a felismerési események kezelésének egy másik módját is.

  1. Kattintson vissza az AstronautManager elemre az Inspector területen, és bontsa ki az InspectorKulcsszavak szakaszát.
  2. Új kulcsszó hozzáadásához kattintson a + jobb oldalon lévő elemre.
  3. Írja be a kulcsszót a Modell kibontása mezőbe. Igény szerint adjon hozzá egy billentyűparancsot.
  4. Új kulcsszó hozzáadásához kattintson a + jobb oldalon lévő elemre.
  5. Írja be a kulcsszót alaphelyzetbe állítási modellként. Igény szerint adjon hozzá egy billentyűparancsot.
  6. Az Inspector panelen kattintson az Összetevő hozzáadása gombra.
  7. A menübe írja be a keresőmezőbe a Speech Input Handler kifejezést. Válassza ki a keresési eredményt.
  8. Ellenőrizze , hogy globális figyelő-e, mivel azt szeretnénk, hogy ezek a parancsok működjenek, függetlenül attól, hogy milyen GameObjectre összpontosítunk.
  9. Kattintson a + gombra, és válassza a Modell kibontása lehetőséget a Kulcsszó legördülő listában.
  10. Kattintson a + Válasz területen, és húzza az AstronautManagerhierarchiából a Nincs (Objektum) mezőbe.
  11. Most kattintson a Nincs függvény legördülő listára, válassza az AstronautManager, majd a ExpandModelCommand lehetőséget.
  12. Kattintson a Speech Input Handler + gombra, és válassza a Modell alaphelyzetbe állítása lehetőséget a Kulcsszó legördülő listában.
  13. Kattintson a + Válasz területen, és húzza az AstronautManagerhierarchiából a Nincs (Objektum) mezőbe.
  14. Most kattintson a Nincs függvény legördülő listára, válassza az AstronautManager, majd a ResetModelCommand lehetőséget.

A Beszédbeviteli forrás és kezelő beállítása az 5. fejezethez

Buildelés és üzembe helyezés

  • Próbálja ki! Az alkalmazást a HoloLensben hozhatja létre és helyezheti üzembe.
  • A kiterjesztett űrhajós modell megtekintéséhez mondja a Modell kibontása parancsot.
  • A Navigációval elforgathatja az űrhajós öltöny egyes darabjait.
  • Mondja ki az Űrhajós áthelyezése parancsot , majd használja a Manipulációt az űrhajós öltöny egyes részeinek mozgatásához.
  • Mondja el az Űrhajós forgatása parancsot, hogy ismét elforgatja a darabokat.
  • Mondja a Modell alaphelyzetbe állítása parancsot az űrhajós eredeti formájának visszaállításához.

Vége

Gratulálunk! Ezzel befejezte az MR Input 211: Gesture (Kézmozdulat) elemet.

  • Tudja, hogyan észlelheti és válaszolhatja meg a kézkövetési, navigációs és manipulációs eseményeket.
  • Tisztában van a navigáció és a manipuláció kézmozdulatai közötti különbségekkel.
  • Tudja, hogyan módosíthatja a kurzort, hogy vizuális visszajelzést adjon arról, hogy mikor észleli a kezét, mikor veszik el egy kéz, és hogy mikor támogatja egy objektum a különböző interakciókat (navigáció és manipuláció).