Categories: Virtual Reality

Einsteigerguide: Einführung in HoloLens.

Dies ist ein spannendes Jahr für neue bahnbrechende Geräte. Es soll das Jahr der Virtual (VR) und Augmented Reality (AR) werden und einige sehr bemerkenswerte und mit Spannung erwartete Geräte wurden veröffentlicht, darunter die HoloLens, HTC und Oculus Rift CV1. John Riccitiello, der CEO von Unity Technologies, sagte zu VR/AR: „Es ist eine Technologie der ersten Generation, die so überzeugend ist, dass sie buchstäblich alles verändert.“ HoloLens, das aufregende neue Gerät von Microsoft, ist in der Lage, die reale und virtuelle Welt zu verbinden.

Was ist HoloLens?

HoloLens ist ein losgelöster, vollständig in sich geschlossener Windows 10-Computer, der bequem als Head-Mounted-Display auf dem Kopf getragen wird. Es ist das, was als Mixed-Reality-Gerät bekannt ist, ein Gerät, das versucht, die reale und digitale Welt zu verschmelzen. Sie sehen Objekte, die in der Welt platziert sind, die aussehen und im Großen und Ganzen so wirken, als wären sie in der realen Welt vorhanden. Im Gegensatz dazu taucht VR Sie in eine Umgebung ein und Sie sehen normalerweise nichts um sich herum als diese virtuelle Welt. In der Regel sind Sie sich der realen Welt außerhalb ihres Head Mounted Displays nicht visuell bewusst. Dieses Erlebnis kann Sie mitnehmen, im Weltraum zu fliegen, während Sie in ihrem Bürostuhl sitzen. Und AR versucht, die Welt um Sie herum mit zusätzlichen Daten wie Markern oder Head-Ups-Informationen zu verbessern, die sich auf ihren Standort beziehen können. Einige AR-Headsets werfen einfach Text und Bilder auf einen Bildschirm, der sich überlappt, unabhängig davon, was Sie gerade sehen.

Mit der HoloLens können Sie Anwendungen und Objekte in die Welt um Sie herum bringen, die ihre Umgebung verstehen. Wenn Sie eine Anwendung an die Wand gepinnt oder in der Luft wie einen digitalen Bildschirm haben möchten, stellt das kein Problem dar. Solche Apps bleiben an Ort und Stelle, auch wenn Sie ihr Zimmer verlassen und am nächsten Tag wiederkommen. Ich lasse ständig virtuelle Fenster in anderen Räumen offen, um überrascht zu sein, wenn ich Tage später zurückkehre und sie noch da sind. Und das ist noch nicht alles. Angenommen, Sie möchten ein Skelett, das vor ihnen in ihrem Wohnzimmer steht, um das Sie herumlaufen können. Derartiges lässt sich realisieren. Lassen Sie ein virtuelles 3D-Objekt fallen, sagen wir eine Kugel – als Hologramm bezeichnet – in ihre Welt und sie fällt und tritt ihren realen Tisch und stoppt. Bewege den Tisch und der Ball fällt und trifft ihren richtigen Boden. Die HoloLens versteht die Welt um Sie herum und die meisten sind absolut erstaunt, als sie es das erste Mal ausprobieren.

In diesem Beitrag werden wir die Entwicklungsumgebung von HoloLens und die drei Säulen Input-Gaze, Gesture und Voice behandeln, welche die wichtigsten Möglichkeiten der Interaktion mit der HoloLens darstellen. Weitere HoloLens-Funktionen wie räumliches Mapping und Audio sowie Koordinatensysteme werden in einem weiteren Beitrag erläutert.

Die Tools und SDK.

Es gibt kein separates SDK für die HoloLens – es ist einfach Teil des Windows 10 SDK. Sie benötigen lediglich Visual Studio 2015 mit installiertem Update 3 und müssen sicherstellen, dass Sie „Tools and Windows 10 SDK“ während der Installation deaktiviert haben. Sie können zurückgehen und das Visual Studio-Installationsprogramm erneut ausführen, um diese Optionen auszuwählen, natürlich führen Sie einfach das Installationsprogramm für Update 3 erneut aus.

Die HoloLens, eine universelle Windows-Plattform (UWP), weil es ein Windows 10 Gerät ist, führt UWP-Anwendungen aus. Das ist richtig – jede Windows 10-Anwendung kann potenziell nicht nur auf dem Desktop, dem Smartphone und der Xbox, sondern auch auf dem HoloLens ausgeführt werden. Sie finden veröffentlichte Anleitungen zur Konvertierung ihrer Windows Phone und Store Nicht-UWP-Anwendungen unter bit.ly/2c3Hkit. Um sicherzustellen, dass eine UWP-Anwendung um Windows-Shop angezeigt wird, stellen Sie sicher, dass Sie die HoloLens-Gerätefamilie im Windows Dev Center zugelassen haben, wenn ihre Anwendung veröffentlicht wird. Wie bei jeder App auf jeder Plattform müssen Sie sicherstellen, dass ihre Anwendung auf den jeweiligen Geräten, die Sie ansprechen, gut aussieht, da verschiedene Geräte unterschiedliche Auflösungen und Speicherfähigkeiten haben.

Die HoloLens, eine universelle Windows-Plattform (UWP), führt UWP-Anwendungen aus. Das ist richtig – jede Windows 10-Anwendung kann potenziell nicht nur auf dem Desktop, dem Smartphone oder der Xbox, sondern auch auf dem HoloLens ausgeführt werden. Sie finden veröffentlichte Anleitungen zur Konvertierung ihrer Windows Phone und Store Nicht-UWP-Anwendungen unter bit.ly/2c3Hkit. Um sicherzustellen, dass eine UWP-Anwendung im Windows Shop angezeigt wird, stellen Sie sicher, dass Sie die HoloLens-Gerätefamilie im Windows Dev Center zugelassen haben, wenn ihre Anwendung veröffentlicht wird. Wie bei jeder App auf jeder Plattform müssen Sie sicherstellen, dass ihre Anwendung auf den jeweiligen Geräten, die Sie ansprechen, gut aussieht, da verschiedene Geräte unterschiedliche Auflösungen und Speicherfähigkeiten haben.

Die beiden Optionen für die Entwicklung holografischer Anwendungen, die den vollen Funktionsumfang von HoloLens nutzen können, sind DirectX und Unity. Sie können auch eine einfache UWP-App mit C# und XAML erstellen, aber es wird als 2D-Anwendung auf der HoloLens ausgeführt und Sie haben nicht die Möglichkeit, Hologramme überall im Weltraum fallen zu lassen. In Visual Store gibt es Projektvorlagen für holografische Anwendungen, die Hologramme anzeigen können. Stellen Sie sicher, dass die vorherigen Anforderungen erfüllt sind, da sonst die verfügbaren Vorlagen möglicherweise nicht angezeigt werden. Unity unterstützt die HoloLens Technical Preview (HTP) Builds, die auf ihrer Website unter bit.ly/2bBZsNn verfügbar sind.

Irgendwann müssen Sie jedoch Visual Studio berühren, auch wenn Sie Unity verwenden, obwohl die Developer-Experience ganz anders ist als bei der Verwendung von reinem DirectX. Die Bereitstellung auf dem HoloLens erfolgt über Visual Studio und kann über eine lokale USB-Verbindung, eine Remote-Verbindung oder über den Emulator erfolgen.

Wie sieht es mit der Dokumentation aus? MSDN ist seit langem ein Standbein für Entwickler, aber jahrelange Erweiterungen haben es schwieriger gemacht, das zu finden, was man benötigt. Jetzt wird die Dokumentation unter docs.microsoft.com komplett überarbeitet. Das HoloLens-Team sieht seine Dokumentation als ausgezeichnet an und Sie sollten unter bit.ly/1rb7i5C das meiste an einer Stelle finden können. Wenn Sie etwas vermissen, lassen Sie es das HoloLens-Team wissen. Wir befinden uns in einer neuen Ära, in der wir bei Microsoft viele Dinge besser machen und das HoloLens-Team trägt dazu bei, bei der Erstellung einer guten, soliden Dokumentation eine Vorreiterrolle zu übernehmen.

Die Hardware, die das HoloLens bei 60 FPS anzeigt, ist daher äußerst wichtig, um sicherzustellen, dass ihre Erfahrungen mit dieser Bildrate laufen. Sie werden auch sicherstellen wollen, dass Sie den Speicherbedarf des Geräts einhalten (zum Zeitpunkt dieses Schreibens bedeutet dies 900 MB RAM für ihre App). Wenn Sie neu in der Entwicklung grafischer Erlebnisse sind, ist es verlockend, sich jedes Kunstobjekt zu schnappen und es in die Szene zu setzen. Sie denken vielleicht: „Ich kann mir ein 3D-Modell meiner Stadt schnappen und es in meine Szene werfen. Anschließend kann ich es mir in 3D ansehen.“ Aber das würde wahrscheinlich zu Problemen auf jeder Plattform führen. Denken Sie daran, dass die meisten Spiele viele Tricks implementieren, um Draw Calls zu reduzieren, Geometrie zu verschließen, Modelle mit geringerer Auflösung zu zeigen, die weiter entfernt sind und mehr. Die HoloLens ist in dieser Hinsicht keine Ausnahme. Die Leistungsempfehlungen sind unter bit.ly/2besJxQ aufgeführt. Einige Beispiele für Optimierungen finden Sie im Modul „Optimizing Your Games“ unter bit.ly/2dVqMxw.

Der Emulator der HoloLens kann Sie im Entwicklungsprozess ziemlich weit bringen. Technisch gesehen benötigen Sie keine HoloLens, um ein Erlebnis zu entwickeln, so wie Sie kein Smartphone benötigen, um etwas für Mobile zu entwickeln. Irgendwann werden Sie es jedoch auf einem Gerät testen wollen. Der Emulator kann Gesten, Kopfposition und Stimme nachahmen, aber auch dieser hat Einschränkungen. Zum einen, wenn Sie sich in einem Emulator befinden, werden Sie die reale Welt um ihre Hologramme herum nicht sehen, obwohl Sie ihrem räumlichen Mesh einen Shader zuordnen können, der im nächsten Abschnitt behandelt wird.

Es gibt vier vordefinierte Raummodelle, die Sie im Emulator auswählen können. Da Sie kein HoloLens auf dem Kopf haben, sollte der Emulator den Raum und dessen Aussehen aus 3D-Sicht kennen. Die HoloLens versteht den Raum um Sie herum und aktualisiert ständig ihr Verständnis von diesem Raum. Diese Ansicht, was die HoloLens sieht, ist ein Raum, der standardmäßig im Emulator geladen und im Windows Device Portal sichtbar ist, auf das Sie für den Emulator oder ihr echtes HoloLens-Gerät zugreifen können. Sie können ein Raummodell, das Sie mit der HoloLens gescannt haben, speichern und in den Emulator laden – das bedeutet, dass Sie auch Multi-User-Erlebnisse mit einer HoloLens und dem Emulator oder mehreren Instanzen des Emulators entwickeln und in ihre eigenen Räume laden können, um es auszuprobieren.

Windows Holographic.

Windows 10 beinhaltet APIs für Desktop, Mobile und Xbox für die Windows Holographics-Plattform. Über diese APIs können Sie nicht nur mit der HoloLens, sondern auch mit anderen zukünftigen Geräten interagieren, einschließlich Initiativen anderer Anbieter, wie z.B. Intels neues Project Alloy, HTC, Qualcomm und viele andere. Einige der APIs für Windows Holographic finden Sie in den folgenden neuen Namespaces (Es ist zu empfehlen, dass Sie sich diese ansehen, um sich einen Überblick über einige der zugrunde liegenden Klassen und Strukturen zu verschaffen).

  • Windows.Graphics.Holographic (bit.ly/2bFbeqv)
  • Windows.Perception (bit.ly/2bVNMHj)
  • Windows.Perception.Spatial (bit.ly/2bwjB8h)
  • Windows.Perception.Spatial.Surfaces (bit.ly/2bG9jCZ)
  • Windows.UI.Input.Spatial (bit.ly/2bipBOo)

Es gibt drei Säulen des Inputs über den HoloLens-Blick, die Geste und die Stimme und darauf werden wir uns jetzt konzentrieren.

Gaze ist im Wesentlichen der Ort, an dem sich die HoloLens befindet, obwohl es am einfachsten ist, sie zu betrachten, wenn sie auf dem Kopf liegt. Um zu verstehen, was der Blick darstellt, schauen wir uns den Namespace Windows.Perception.People in der Klasse HeadPose an, die drei Vector3-Typen enthält (eine Vector3-Struktur enthält nur x,y,z Einzelwerte):

  • ForwardDirection: Ruft die Vorwärtsrichtung der HoloLens ab.
  • Position: Ruft die Position der HoloLens ab.
  • UpDirection: Ruft die Richtung ab, in die die HoloLens ausgerichtet ist.

Anhand dieser Informationen können Sie feststellen, wo sich der Benutzer befindet und in welche Richtung er schaut. Wenn eine App auf dem HoloLens startet, liegt die Startposition bei 0, 0, 0, 0. Von dieser Position aus ist es dann einfach zu bestimmen, wo und in welche Richtung sich der Benutzer bewegt. Betrachten wir zunächst, wie man das Objekt erkennt, auf das der Benutzer schaut. Die Anforderung ist, dass dieses Objekt eine Collider-Komponente darauf hat, um zu erkennen, was in Unity trivial ist, um es zu jedem Objekt hinzuzufügen. In Unity verwenden Sie anstelle der HeadPose einfach die Camera.main-Informationen, die der HeadPose zugeordnet sind. Wenn Sie es gewohnt sind, in Unity mit der Kamera zu arbeiten, ist es nichts anderes. Mit diesen Informationen können Sie einen unsichtbaren Pfeil herausschießen und herausfinden, was er trifft (eine gängige Technik in der 3D-Programmierung, das Ray Casting genannt wird). Wir brauchen nur ein Spielobjekt wie einen Würfel mit dem Interactible-Skript darauf und ein weiteres separates leeres Spielobjekt mit dem InteractibleManager darauf.

Interactible Class.

Copy to Clipboard

InteractibleManager Class.

Copy to Clipboard

Wir präsentieren hier nur einen Überblick über die wichtigsten Ideen. Sie finden viel mehr Details in Holograms 210, dem Kurs der holographischen Akademie über Blickkonzepte, einschließlich der Stabilisierung der Kopfposition, um ruckartige Bewegungen bei der Auswahl von Objekten zu vermeiden (bit.ly/2b9TWIR). Kurz gesagt, Camera.main ist die HoloLens-Position. Sie schießen ihren unsichtbaren Strahl aus dieser Position in die Richtung Camera.main. Forward, um den ersten Collider zu finden, den Sie getroffen haben. Wenn Sie etwas finden, müssen Sie es nur hervorheben, indem Sie eine Variable festlegen, die der Shader verwenden soll. Sie können auch den Standard Unity Shader verwenden und stattdessen die Helligkeit der Emmisionsfarbe einstellen:

Copy to Clipboard

Sie müssen sich der Auswirkungen von Shadern auf die Leistung der HoloLens bewusst sein. Dieses Gerät ist zwar erstaunlich, wird aber durch seine Größe eingeschränkt, wie es bei Hardware oftmals der Fall ist. Bei der Entwicklung für die HoloLens mit Unity sollten Sie zunächst die Shader gegen die optimierten Varianten aus dem HoloToolkit unter bit.ly/2bO6cH2 austauschen.

Das HoloToolkit enthält viele Hilfsfunktionen und Objekte, die bei der Entwicklung von HoloLens sehr hilfreich sein können, darunter Cursoren, Blickstabilisatoren, Gesten- und Handmanager, Ebenendetektoren, Follow-me-Skripte, Beispiele für die gemeinsame Nutzung über mehrere HoloLens und vieles mehr. Der Großteil dieser Funktionalität befindet sich in der HoloToolkit-Unity unter bit.ly/2bO8XrT, also achten Sie darauf, dass Sie im richtigen Repository suchen und nicht nur auf das grundlegende HoloToolkit unter bit.ly/2bPCbas, das jedoch an sich nützlich ist und verschiedene eigenständige Beispielprojekte und anderen Bibliothekscode enthält, den die HoloToolkit-Unity verwendet.

Wenn Sie Objekte haben, die sich nicht im sichtbaren Bereich befinden, sei es ein Spiel auf dem Bildschirm, VR, AR oder Mixed Reality, ist es nützlich, einen kleinen Indikator zur Verfügung zu stellen, der dem Benutzer sagt, in welche Richtung er nach einem Objekt suchen soll, wenn er anfängt, wegzuschauen. Dies ist eine sehr verbreitete Technik in vielen Videospielen und sie ist unglaublich nützlich in der Welt der Mixed-Reality.

Der folgende Code kann verwendet werden, um festzustellen, ob ein bestimmtes Hologramm sichtbar ist:

Feststellen, ob ein Hologramm sichtbar ist.

Copy to Clipboard

Sobald Sie wissen, ob ein Objekt nicht (oder nur knapp) sichtbar ist, können Sie herausfinden, in welche Richtung Sie einen Directional Indicator zeigen sollen. Da Sie Zugriff auf die Kameraposition und jede beliebige Position des Spielobjekts haben, ist es einfach herauszufinden, wo ein Hologramm im Vergleich zu dem, was der Benutzer sieht, steht. Einen Richtungsvektor zu erhalten, der einen Pfeil von der Kamera zu einem bestimmten Spielobjekt darstellt, bedeutet, einen Ort vom anderen abzuziehen und ihn zu normieren, um ihn one-based zu machen (es ist am einfachsten, einen normierten Vektor in vielen Berechnungen zu verwenden), so wie es ist:

Copy to Clipboard

Das Anzeigen von Richtungsanzeigern erfordert ein paar andere Dinge, die eingerichtet werden müssen, aber das ist der Kern der Funktionalität. Sobald Sie die Richtung von der HoloLens (d.h. der Kamera) zum Hologramm kennen, können Sie eine Anzeige auf dem Bildschirm anzeigen. Sie können dieses Feature genauer unter bit.ly/2bh0Hz7 nachlesen.

Gesture ist die nächste Möglichkeit, die Eingaben für die HoloLens zu verarbeiten. Gesten werden mit Hand-, Steuerungs- oder Sprachbefehlen ausgeführt. Handbewegungen werden über eine der Kameras auf der Vorderseite gescannt, innerhalb des so genannten Gestenrahmens, eine Fläche, die den Sichtbereich auf allen Seiten des Hologramms erweitert, so dass Sie ihre Hand näher an ihrem Körper halten können, anstatt sie jedes Mal nach außen zu halten. Sie tippen in der Regel nicht auf Hologramme, sondern tippen und bestimmen, was der Benutzer mit dem Blick betrachtet.

Die HoloLens unterstützt zwei Kategorien von Gesten. Die erste beinhaltet diskrete Gesten, wie z.B. eine einzelne Schnellaktion. Der zweite Typ beinhaltet kontinuierliche Gesten, die im Laufe der Zeit auftreten und im Allgemeinen ausgelöst werden, wenn Sie die Hände drücken, halten und dann bewegen. Kontinuierliche Gesten unterstützen die Navigation und Manipulation. Navigationsgesten geben ihnen eine Startposition von 0, 0, 0, 0 – das ist, wo immer Sie die Geste beginnen – und sind dann auf einen virtuellen Würfel im Raum beschränkt, der es ihnen ermöglicht, sich von -1 bis 1 auf jeder Achse innerhalb dieses Würfels zu bewegen, um eine reibungslose Drehung um eine oder mehrere Achsen oder ein reibungsloses Scrollen zu ermöglichen. Manipulationsgesten, anstatt sich auf einen virtuellen Würfel zu beschränken, ermöglichen eine 1:1-Bewegung zwischen Händen und Hologrammen – denken Sie an das Malen von virtuellen oder schönen flüssigen Bewegungen, um Hologramme in ihrer Umgebung zu positionieren. Sie erhalten weltrative Positionsinformationen in x,y,z.

Als Entwickler können Sie sich natürlich in die Gesten wie Luftabgriff, Halten, Navigation und Manipulation einklinken. Derzeit gibt es keinen Support für benutzerdefinierte Gesten, aber Sie haben über die oben genannten Gesten Zugriff auf wesentlich mehr Daten. Sie können auch die Handposition in x,y,z verfolgen und verstehen, wann sich die Hände im Gesture Frame befinden oder ihn verlassen, was dem Benutzer hilfreiches Feedback geben kann, wenn seine Hände dabei sind, das Gesture Frame zu verlassen.

GestureManager Class.

Copy to Clipboard

Sie können eine GestureManager-Class wie oben hinzufügen, um sich für das angezapfte Ereignis zu registrieren, was Sie z.B. darüber informiert, wenn der Benutzer eine angezapfte Geste über den Sprachbefehl Select, einen Controller oder eine Hand ausgeführt hat. Sie müssen dann feststellen, was beim Antippen des Benutzers betrachtet wurde, genau wie das, was zuvor gemacht wurde. Es ist wichtig zu beachten, dass das TappedEvent in einem Ray übergeben wird, der darstellt, wo der Kopf war, als das Ereignis stattfand. Im Falle einer schnellen Kopfbewegung sollten Sie sicherstellen, dass Sie den Blick von dort richten, wo er beim Tippen war und nicht von dort, wo er beim Eintreffen des Ereignisses war, das leicht vom ursprünglichen Ort entfernt sein kann.

Sprachbefehle auf der HoloLens werden auf Systemebene über Cortana unterstützt, teilen sich aber auch die gleiche Sprach-Engine wie alle anderen UWP-Anwendungen und erfordern daher die Fähigkeit des Mikrofons in der Datei package.appxmanifest des Projekts. Die Audioverarbeitung ist hardwarebeschleunigt und bietet 16khz bis 48khz 24-Bit Audioströme der Sprach- und Ambient Umgebung des Benutzers. Zu den eingebauten Cortana-Befehlen gehören „Select“, „Hey Cortana“ und in In-App-Befehlen enthalten „Select“ (anstelle von Air-Tap) und „Place“.

Die Reaktion auf benutzerdefinierte Sprachbefehle ist möglich und unkompliziert. Fügen Sie einfach ihre Keywords hinzu und delegieren Sie den Code, um ihn auszuführen und starten Sie das Zuhören, wie im folgenden Code dargestellt.

Hinzufügen von Keywords und Delegate Code.

Copy to Clipboard

Für diejenigen, die mit Sprach-zu-Text arbeiten möchten, steht auch ein Diktat zur Verfügung, das mit der Klasse DictationManager die Ereignisse DictationHypothesis, DictationResult, DictationComplete und DictationError ermittelt. Beachten Sie, dass dies eine Wifi-Verbindung erfordert.

Die HoloLens eröffnet eine neue Ära, wie man die Welt um sich herum erleben kann, indem sie sowohl die Realität als auch die virtuelle Welt miteinander verbindet. Holen Sie sich mehr Informationen bei HoloLens.com und halten Sie dort Ausschau nach weiteren Ankündigungen.

Vielen Dank für ihren Besuch.

3DMaster