HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

0 Shares

Eines der wirklich schönen Dinge an der HoloLens ist ihre völlig ungebundene Freiheit, die Welt ist deine Auster. Dies, gepaart mit der Möglichkeit, Ihre reale Umgebung zu sehen, während Sie das Gerät tragen, ermöglicht einige unglaublich interessante Anwendungen. Eine besondere Verwendung ist das Auslösen von Ereignissen, wenn ein Benutzer einen bestimmten Ort in einem physischen Raum betritt. Betrachten Sie es als eine futuristische automatische Tür.

In diesem Tutorial erstellen wir einen einfachen standortbasierten Trigger oder Hotspot, um die Farbe eines GameObjects bei Aktivierung zu ändern. Dies besteht aus dem Einrichten der Kamera, eines Hotspots und eines Objekts, auf das die Ereignisaktion angewendet werden soll.

In diesem Tutorial wird davon ausgegangen, dass Sie bereits ein HoloLens-Projekt eingerichtet und einsatzbereit haben. Wenn nicht, folgen Sie unserer Kurzanleitung. Als Referenz verwende ich eine HoloToolkit-Version, die im März 2017 von GitHub abgerufen wurde.

Verpassen Sie nicht; HoloToolkit: So fügen Sie Ihrer HoloLens-App Sprachbefehle hinzu

Schritt 1: Richten Sie die Kamera ein

Fügen wir zunächst dem Objekt “HoloLensCamera” einen Collider hinzu. Sie können dies tun, indem Sie das Objekt im Hierarchiefenster in Unity auswählen. Klicken Sie dann im Inspektor auf “Komponente hinzufügen” und geben Sie “sph c” in die Suchleiste ein. Dadurch wird der Sphere Collider oben angezeigt. Klicken Sie auf “Sphere Collider” oder drücken Sie die Eingabetaste.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Ich werde dafür einen kugelförmigen Collider verwenden, da ich festgestellt habe, dass er für die meisten Szenarien effektiv ist und gleichzeitig die Einfachheit beibehält. Sie können experimentieren, indem Sie der Kamera Kinder mit Kollidern hinzufügen, um die Ganzkörperposition eines Benutzers genauer zu erraten. Dies führt jedoch zu vielen Komplexitäten, da wir nicht wissen, ob Benutzer stehen oder sitzen, und die Feststellung, ob sie nach oben oder unten schauen, den Rahmen dieses Lernprogramms sprengt.

Sobald der Sphere Collider hinzugefügt wurde, überprüfen Sie die Ist Auslöser Box. Dies verhindert, dass sich unsere Kamera löst, wenn wir “feste” Hologramme durchlaufen. Wir können den Radius auch auf 0,25 einstellen. Dadurch wird der Collider enger, um ein versehentliches Auslösen zu verhindern, und wir erhalten mehr Flexibilität beim Einrichten von “Auslösezonen”.

Als nächstes wollen wir der Kamera einen starren Körper hinzufügen. Da es sich bei der Kamera um ein sich bewegendes Objekt mit einem Collider handelt, möchten wir die Best Practice für die Leistung befolgen und sie durch Hinzufügen eines starren Körpers zu einem dynamischen Collider machen. Weitere Informationen zu Collidern finden Sie in den Unity-Dokumenten.

Klicken Sie im Inspektor wieder auf “Komponente hinzufügen”, geben Sie “rig” ein und drücken Sie die Eingabetaste. Überprüf den Ist kinematisch Box. Dadurch wird sichergestellt, dass die Kamera nicht auf die Physik-Engine reagiert. Deaktivieren Sie für Reinigungszwecke die Auswahl Verwenden Sie die Schwerkraft.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Wenn Sie das Fertighaus “HoloLensCamera” mit dem angehängten Skript “ManualGazeControl” verwenden, spielen Sie die Szene ab. Sie sollten in der Lage sein, die Kamera mit Ihrer Tastatur herumzufahren. Stellen Sie sicher, dass der Collider folgt und die Kamera nicht in den Abgrund fällt.

Schritt 2: Erstellen Sie einen Hotspot

Jetzt erstellen wir den Hotspot, der eine Aktion auslöst, wenn die Kamera ihre Triggerzone passiert. Erstellen Sie dazu zunächst einen “Würfel” und setzen Sie seine Position auf (0, 0, 1,5) und seine Skalierung auf (0,25, 0,25, 0,25).

An einen Würfel ist bereits ein Box Collider angehängt. Nehmen wir einige Anpassungen an den Standardwerten vor. Für Ihr eigenes Projekt möchten Sie möglicherweise, dass diese Hotspots auf physische Kollisionen reagieren. In unserem Beispiel werden wir sie jedoch deaktivieren, indem wir das Kontrollkästchen aktivieren Ist Auslöser Box. Während wir möchten, dass die Triggerzone groß genug ist, um tatsächlich Ereignisse auszulösen, möchten wir nicht unbedingt die gesamte Zone rendern. Dazu passen wir die Größe des Box Colliders auf (4, 8, 4) an. Mit der aktuellen Skala des Würfels wird eine Zone von 1 x 2 x 1 Meter erstellt.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Für den Fall, dass sich dieses Objekt irgendwann verschieben soll, fügen wir eine Rigidbody-Komponente hinzu. Wieder abwählen Verwenden Sie die Schwerkraft und prüfe Ist kinematisch.

Schritt 3: Erstellen Sie das Hotspot-Skript

Jetzt können wir das kurze Skript erstellen, das diesen Hotspot zum Leben erweckt. Zu diesem Zweck werden wir Ereignisse verwenden, um ein einfaches dynamisches Broadcast-System zu erstellen. Dies bietet eine gute Basis zum Bauen und bietet viel Flexibilität, während unser Code entkoppelt bleibt.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Fügen Sie dem Cube-Objekt zunächst eine Skriptkomponente mit dem Namen “Hotspot” hinzu. Öffnen Sie es in Ihrer bevorzugten IDE und fügen Sie den hier gefundenen Code ein.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Wenn Sie sich den Code ansehen, sehen Sie, dass wir einen Delegatentyp erstellen und ihn “HotspotEntered” nennen. Dann erstellen wir die Ereignisvariable basierend auf unserem Delegaten und nennen diese “OnEntered”. Wir möchten, dass dies eine öffentliche statische Variable ist, damit wir sie außerhalb ihrer Klasse verwenden können, ohne eine neue Instanz zu benötigen.

Wir möchten das Ereignis aufrufen, wenn unser Hotspot ausgelöst wird. Seit wir … Haben Ist Auslöser ausgewählt, verwenden wir die integrierte Funktion “OnTriggerEnter”. Wir möchten auch sicherstellen, dass wir Abonnenten für dieses Ereignis haben. Andernfalls wird ein Fehler ausgegeben. Dazu prüfen wir, ob die Bedingung nicht null ist. Wenn dies erfüllt ist, rufen wir das Ereignis auf.

Dies ist ein guter Zeitpunkt, um zu überprüfen, ob unsere Trigger und Collider richtig eingerichtet sind und ihr Ding machen. Fügen Sie in der OnTriggerEnter-Funktion ein Debug.Log hinzu über die if-Anweisung. Speichern und spielen Sie die Szene. Wenn wir die Kamera durch den Collider des Würfels bewegen, sollten wir unser Protokoll in der Konsole sehen!

Gut gemacht. Der letzte Teil des Hotspot-Skripts besteht darin, ein Ereignis zu erstellen, wenn ein Trigger beendet wird. Befolgen Sie die gleichen Schritte wie beim Enter-Trigger, verwenden Sie jedoch die integrierte Funktion “OnTriggerExit” und die entsprechende Benennung.

Schritt 4: Abonnieren Sie das Event

Wir haben den Hotspot alle bereit, um einige Aktionen auszulösen! Lassen Sie uns ein Objekt erstellen, um die Ereignissendung zu empfangen und etwas damit zu tun.

Beginnen Sie mit der Erstellung eines anderen Grundelements. Dieses Mal verwenden wir eine Kugel. Stellen Sie die Position auf (0, 0,5, 3) und die Skalierung auf (0,5, 0,5, 0,5). Fügen Sie eine neue Skriptkomponente mit dem Namen “HotspotColorChanger” hinzu. Fügen Sie den hier gefundenen Code ein. Dieses Skript ist eine modifizierte Version des HoloToolkit-Skripts “FocusedObjectColorChanger”.

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Das Attribut “RequireComponent” führt einige nützliche Aktionen aus, die Fehler verhindern und Popup-Warnungen in Unity anzeigen, wenn Sie versuchen, dieses Skript an ein GameObject anzuhängen, das keine Renderer-Komponente enthält.

Als nächstes greifen wir auf die Anfangsfarbe des Objekts zu, auf die später zurückgegriffen werden soll, sowie auf die aktivierte Farbe, die über den Inspektor ausgewählt wurde.

Wir abonnieren die Ereignisse in der Funktion “OnEnable” im folgenden Format:Class.Event + = functionToCall. Es ist wichtig, sich von Ereignissen abzumelden, wenn wir das zugehörige Objekt deaktivieren oder zerstören, um Speicherlecks und verrücktes Verhalten zu verhindern. Wir tun dies in der “OnDisable” -Funktion im gleichen Format wie oben, aber stattdessen mit “- =” –Class.Event – = functionToCall.

Das Letzte, was wir tun müssen, ist etwas Nützliches, wenn unsere Ereignisse ausgelöst werden. Unter Bezugnahme auf die Funktionsnamen aus unseren Abonnements bauen wir den Hauptteil dieser Funktionen auf. Wenn “OnHotspotEnter” aufgerufen wird, setzen wir die Materialfarbe auf unsere Standardfarbe “activeColor” oder eine im Inspektor angegebene. Wenn “OnHotspotExit” aufgerufen wird, wenden wir einfach die ursprüngliche GameObject-Farbe erneut an.

Okay, machen Sie einen kurzen Test in Unity. Alles sollte gut sein. Wenn ja, stellen Sie es auf Ihrer HoloLens oder Ihrem Emulator bereit und beobachten Sie die Magie, wenn Sie zu Ihrem Hotspot gehen!

HoloLens Dev 101: So erstellen Sie Hotspots für Benutzerstandorte, um Ereignisse mit der HoloLens auszulösen

Nachdem die Grundlagen fertig sind, können Sie diese Funktion wirklich skalieren. Eine beliebige Anzahl von GameObjects mit benutzerdefinierten Skripten und Verhaltensweisen kann das Hotspot-Ereignis abonnieren. Das Hotspot-Ereignis kann auch zu einem robusten Ereignissystem gemacht werden, bei dem mehrere Hotspots mehrere Ereignisse auslösen. Diese Hotspots können auch ausgeblendet werden, indem der MeshRenderer deaktiviert wird, um wirklich ein magisches Erlebnis zu schaffen.

Nun Leute, das wird dieses Hotspot-Tutorial abschließen. Während dies ein einfaches Beispiel dafür war, was getan werden kann, geschieht der wahre Spaß und die Aufregung, wenn man mit diesem Konzept kreativ wird. Anstatt die Farbe eines GameObjects zu ändern, kann der Hotspot eine REST-Anfrage stellen und die Farbe Ihrer realen Wi-Fi-fähigen Glühbirnen ändern. In einer interaktiven Geschichte implementiert, kann der KI-Erzähler Ihnen möglicherweise dabei helfen, einen tückischen erweiterten Pfad zu navigieren. Wie wäre es mit einem musikalischen Rhythmus-Spiel, das den Träger zu einem Uptempo-Training herausfordert?

Wir würden gerne sehen, was Sie mithilfe von Hotspots erstellen oder erstellt haben. Bitte teilen Sie uns alle Fragen, Rückmeldungen oder Entwicklungsprobleme mit, über die Sie in den Kommentaren unten erfahren möchten. Prost!

Weiter oben: So erkunden Sie die Leistungsfähigkeit von räumlichem Audio mithilfe von Hotspots

0 Shares