Virtuelle Realität mit Google



Gepostet von Nikolai Khabarov, Embedded Expert DataArt, Evangelist für Smart Home-Technologie, Erfinder.

Dieser Artikel ist ein kurzer Einblick in die Grundlagen der Arbeit mit virtueller und erweiterter Realität. Ich habe mir nicht die Aufgabe gestellt, alle Funktionen des Google VR SDK vollständig offenzulegen, und wollte denjenigen, die an diesen Technologien interessiert sind und mit ihnen arbeiten möchten, eine minimale Basis bieten.

Aus der Geschichte von 3D


Um ein dreidimensionales Bild zu sehen, müssen wir zunächst zwei verschiedene Bilder für das linke und das rechte Auge übertragen. Es ist klar, dass unsere Augen, wenn wir ein Objekt im normalen Leben betrachten, es aus verschiedenen Winkeln sehen, weil sie in einiger Entfernung voneinander sind. Aus diesem Grund nehmen wir den dreidimensionalen Raum wahr.

Die Idee des 3D-Bildes ist ziemlich alt. Es gibt viele Technologien, mit denen Sie ein dreidimensionales Bild reproduzieren können. Zum Beispiel sah jeder in Kinos Anaglyphenbrillen mit verschiedenen Farblinsen. Das Bild wird aus zwei Winkeln und einem in zwei Teile unterteilten Farbspektrum auf dem Bildschirm angezeigt. In diesem Fall wird jeder Winkel durch einen der Filter geführt, wodurch die Illusion von Volumen auftritt. Der Hauptnachteil dieser Methode ist ein merklicher Verlust der Farbwiedergabe.

In der nächsten Phase der Technologieentwicklung tauchten die sogenannten Shuttergläser auf, die auch als Lichtventilgläser bezeichnet werden - sie werden auch in Kinos eingesetzt. Das Gerät einer solchen Brille ist anders: Jedes Objektiv hat einen kleinen Bildschirm mit einer Auflösung von einem Pixel. Es kann das Bild entweder vollständig schließen oder ganz überspringen. Die Brille wechselt abwechselnd zwischen den Bildschirmen, sodass wir das Bild mit dem einen oder anderen Auge sehen können. Um ein dreidimensionales Bild zu sehen, müssen wir gleichzeitig das Umschalten der Brille mit einem Fernseh- oder Filmbildschirm synchronisieren. Dies kann über den Funkkanal oder, wie am häufigsten, mithilfe eines Infrarotempfängers und eines Senders erfolgen, die auf der Brille in der Nähe des Bildschirms installiert sind. Ein weiterer Nachteil dieser Methode ist der Helligkeitsverlust - für die Hälfte der Zeit sehen wir nichts mit einem Auge. Darüber hinaus erfordert das Wiedergabegerät eine hohe Bildrate.

Eine interessante Entwicklung der Idee war die Polarisationstechnologie - mit Hilfe eines Filters können wir nur den notwendigen Teil der in verschiedene Richtungen polarisierten Wellen abschneiden. Sicher ist jeder mit Polarisationsfiltern für Kameras vertraut, die Blendung beseitigen können. Bei einem 3D-Bild wird auf besondere Weise ein Bildschirm vorbereitet, von dem einige Linien vertikal polarisiertes Licht emittieren, andere - horizontal polarisiertes Licht. In Kinos wird die Zirkularpolarisation auch verwendet, wenn das Licht nach rechts oder links gedreht wird.

Einfachheit ist der Schlüssel zum Erfolg


Die Erfinder von Google Cardboard machten alles einfach und genial und entschieden sich für die Übertragung dreidimensionaler Bilder mit einem normalen Smartphone. Zuvor gab es viele Optionen für Brillen mit verschiedenen Bildschirmen, aber die Auflösung der Matrix solcher Bildschirme war sehr bescheiden. Darüber hinaus waren solche Gläser sehr teuer. Und das vorgeschlagene Google Cardboard ist ein Stück gewöhnlicher Karton mit zwei Linsen, in den es noch Ihr Telefon stecken muss. Dies reicht aus, um ein dreidimensionales Bild mit eigenen Augen zu sehen.


Eine Weiterentwicklung von Cardboard war die Entstehung von Tagtraum - Das Gerät unterscheidet sich vom Vorgänger nicht durch das Funktionsprinzip, hat aber im Vergleich dazu erhebliche Vorteile. Insbesondere ist das Material, aus dem Daydream selbst hergestellt wird, nicht mehr nur Pappe, sondern von viel höherer Qualität. Ein weiteres unbestreitbares Plus ist die Software-Unterstützung von Daydream.

Der Bildschirm eines Telefons verfügt über eine Reihe von Funktionen, z. B. Papplinsen. Der klassische Karton ist in Form eines QR-Codes gekennzeichnet. Bevor Sie Ihr Telefon einlegen, müssen Sie diesen Code lesen, um die Objektivparameter in das Telefon eingeben zu können. Durch Kombinieren der Parameter kann das Gerät berechnen, wie das Bild so angezeigt werden soll, dass es Sie mit minimaler Verzerrung erreicht.

Wenn Sie Daydream verwenden, reicht es aus, das Gerät so zu platzieren, dass es die Parameter der Brille selbst mit NFC liest. Das Etikett selbst ist auf der Rückseite versteckt.

Karton hat auch ein kleines Bedienfeld; Viele Hersteller haben Analoga von Karton und ihren Fernbedienungen herausgebracht, die unterschiedlichsten sind: Trägheit, Gravitation, nur Joysticks. Daydream verfügt über zwei Tasten und ein kleines Touchpad, mit dem Sie Objekte im Raum bewegen oder sich selbst bewegen können, indem Sie Ihren Finger bewegen. Der Karton hatte nur einen Knopf auf dem Gehäuse der Brille selbst, der einfach die Presse aufzeichnete und diese Informationen auf den Telefonbildschirm übertrug.

Karton kann mit jedem Telefon verwendet werden, das physisch in die Box passt und sehr billig ist. Um mit Daydream arbeiten zu können, wurden zum Zeitpunkt des Schreibens nur drei Telefone zertifiziert: ZTE Axon 7, Google Pixel und Motorola Moto Z. Sie planen, neue Modelle hinzuzufügen. Für die Verwendung von Daydream ist jedoch ein Betriebssystem mit mindestens Android 7.0 erforderlich.

Interaktion mit der virtuellen Realität


Der interessanteste Teil beginnt, wenn wir nicht nur ein dreidimensionales Bild betrachten (3D ist auch im Fernsehen zu sehen), sondern auch den Kopf drehen.

Jedes moderne Telefon ist mit mikroelektromechanischen Sensoren ausgestattet. Hierbei handelt es sich um mikroskopische Geräte, bei denen Elektronik und kleine bewegliche mechanische Teile auf einem Kristall gesammelt werden, wodurch verschiedene externe Faktoren verfolgt werden können. Wahrscheinlich weiß jeder, was ein Gyroskop ist - ein Gerät, mit dem Sie den Drehwinkel ermitteln können. Bei MEMS-Sensoren gibt der Kreisel nicht den Drehwinkel selbst an, sondern die Winkelgeschwindigkeit. Darin befindet sich ein kleines Element, das sich unter dem Einfluss der Coriolis-Kraft bewegt (ich hoffe, Sie erinnern sich daran, was es aus der Physik ist). Auf diese Weise können Sie die Winkelgeschwindigkeit kennen und bereits integrieren. Wir können den Drehwinkel bestimmen. Diese Methode ist insofern schlecht, als wir das Telefon in verschiedene Richtungen drehen und höchstwahrscheinlich nicht an den Punkt zurückkehren können, an dem wir ursprünglich waren.

Der zweite interessante Sensor ist der Beschleunigungsmesser. Sie bestimmt die auf das Telefon einwirkenden Kräfte, insbesondere die Erdbeschleunigung. In einem ruhigen Zustand zeigt es die auf unserem Planeten übliche Erdbeschleunigung, die ungefähr 9,8 m / s² entspricht. Wenn wir das Telefon jedoch bewegen oder drehen, beschleunigen wir es. Infolgedessen gibt der Sensor in diesen Momenten nicht die erforderlichen Messwerte aus. Erst wenn wir aufhören, uns zu bewegen, beruhigt sich das System und wir können die auf die Erde gerichtete Kraft erkennen. Wie Sie sehen können, ist keiner der beiden genannten Sensoren geeignet, um einfach die Position des Telefons im Weltraum zu bestimmen.

Da das Gyroskop jedoch mit der Zeit „wegläuft“ und der Beschleunigungsmesser nur zum Zeitpunkt der Drehung „wegläuft“, ist es möglich, die Position des Geräts mit verschiedenen mathematischen Methoden zu berechnen, beispielsweise mit dem Kalman-Filter. Wenn Sie für Android programmiert haben, haben Sie wahrscheinlich bemerkt, dass im Android SDK selbst in der Liste der Sensoren nicht nur ein Beschleunigungsmesser und ein Gyroskop vorhanden sind, sondern auch die sogenannte TYPE_ORIENTATION. Dies ist nur eine dieser mathematischen Methoden, mit denen die Position des Telefons anhand der Informationen beider Sensoren berechnet wird. Sie selbst sind in der Regel auf einem Mikrokreis zusammengebaut, sehr oft ist zusätzlich ein Magnetfeldsensor, dh ein Kompass, darauf angeordnet.

Diejenigen, die sich für Quadrocopter interessieren, haben wahrscheinlich bemerkt, dass die Aufschrift "Barometer" auf den neuen Modellen erschien. Offensichtlich ist dieses Gerät nicht für die Wetteranalyse vorgesehen. Ein solcher Sensor wird verwendet, um den atmosphärischen Druck zu messen, um die Höhe zu bestimmen. Es funktioniert auch im Telefon, und wir können seine Bewegung entlang der vertikalen Achse auf den nächsten Zentimeter berechnen. Natürlich müssen die Messwerte mit einem Filter geglättet werden.


Übe


Google hat das Google VR SDK für seine Cardboard- und Daydream-Geräte veröffentlicht. Letzteres ist eine Reihe von Komponenten, mit denen wir Anwendungen speziell für die Anzeige der 3D-Realität entwickeln können. Es ist sowohl für iOS als auch für Android verfügbar. Dieses SDK erleichtert das Erstellen von Anwendungen für virtuelle und erweiterte Realität.

Das Google VR SDK kümmert sich um die gesamte Arbeit mit Sensoren. Dank dessen müssen wir keine Quaternionen berechnen, um zu verstehen, wie eine Szene in OpenGL gedreht wird, wenn wir den Kopf drehen. Setzen Sie einfach View auf die Aktivität, und das SDK erledigt alles selbstständig.

Lassen Sie uns einen kurzen Blick darauf werfen, wie wir schnell mit dem Google VR SDK beginnen und wie Sie eine einfache Android-App erstellen. Zunächst müssen Sie Android Studio vorinstalliert haben.
Laden Sie das SDK aus dem offiziellen Git-Repository herunter. Die SDK-Dokumentation finden Sie hier .

Öffnen Sie jetzt einfach das Stammverzeichnis des Repositorys mit Android Studio. Dort finden Sie Beispiele, die aus dem Quellcode kompiliert und auf Ihrem Android-Gerät ausgeführt werden können. Das Projekt verfügt sofort über Konfigurationen zum Ausführen von Beispielen.



Daydream hat auch einen eigenen kleinen Controller, mit dem das SDK auch unterstützt. Es verfügt über eine Reihe von Rückruffunktionen, und Sie können diesen Controller sicher in Ihren Entwürfen verwenden. Es gibt ein spezielles Beispiel im SDK 'sdk-controllerclient'.

Für die realistischste Wahrnehmung möchte ich den Klang fühlen und damit klar ist, woher er kommt, wohin er gerichtet ist und in welcher Umgebung er verteilt ist. Dafür gibt es in der Bibliothek eine GvrAudioEngine, die einer vereinfachten Open Audio Library oder Direct3D Sound ähnelt. Es reicht aus, die Koordinaten der Schallquelle im Raum zu kommunizieren, und die Bibliothek selbst mischt den Klang nach Bedarf. Sie können verschiedene Materialien für die Umgebung angeben. Sie können beispielsweise eine Szene erstellen, in der in den Spalten rechts und links unterschiedliche Musik abgespielt wird, und Sie können weitere Tonquellen angeben.

Das Beispiel 'sdk-Treasurehunt' ist ein ziemlich einfaches Spiel, das auf reinem OpenGL implementiert ist. Es verwendet auch GvrAudioEngine, um dem Spiel Surround-Soundeffekte zu verleihen.

Es gibt ein Google VR SDK und eine wunderbare, wenn auch kleine Reihe von Ansichten, die Sie in Ihre Anwendungen einbetten können. Insbesondere ist VrPanoramaView eine Komponente zur Anzeige von Panoramafotos bei 360 Grad und zur stereografischen Anzeige. Sie können das Foto einfach in die Ressourcen der Anwendung einfügen und VrPanoramaView.loadImageFromBitmap () in nur einer Zeile aufrufen, um dieses bestimmte Bild aufzunehmen und anzuzeigen. Als Ergebnis erhalten Sie eine vorgefertigte Komponente, die der Benutzer in seiner Anwendung sehen kann - dies ist eine normale Ansicht, genau wie alle anderen in Android.

Sie können mehrere solcher Komponenten gleichzeitig auf einem Bildschirm anzeigen, Sie können eine im Vollbildmodus anzeigen und gleichzeitig müssen Sie zum Umschalten zwischen Brille und einfacher Anzeige nur auf die Schaltfläche klicken, die von der Bibliothek gezeichnet wird. Es ist auch möglich, Videos mit der VrVideoView-Komponente hinzuzufügen. Und wenn Sie es irgendwann satt haben, können Sie das Video zurückspulen.

Zwei Beispiele aus dem SDK 'sdk-simplepanowidget' und 'sdk-simplevideowidget' zeigen, wie einfach es ist, Anwendungen mit solchen integrierten Objekten zu erstellen.

Es stellt sich die Frage, wo man solche Videos und Bilder bekommt. Einige Unternehmen haben jedoch bereits damit begonnen, Kameras in Form kleiner Schmuckstücke mit Linsen auf beiden Seiten herzustellen. Mit ihrer Hilfe können Sie Panoramafotos bei 360 Grad aufnehmen - sie können sie sogar selbstständig verbinden - aber das Video funktioniert nicht. Dazu benötigen Sie ein ziemlich teures Design und eine spezielle Software, mit der die resultierenden Bilder geklebt und in Inhalte umgewandelt werden können, die für die Anzeige in der virtuellen Realität geeignet sind.



Die Odyssey- Lösung umfasst 16 synchronisierte Kameras.


Anwendung


Wo können die beschriebenen Technologien angewendet werden? Die erste Option ist offensichtlich ein Spiel. OpenGL sind in der Regel Shooter und andere Spiele, bei denen wir ein Gefühl für Tiefe brauchen. Netflix hat kürzlich einen Dienst zum Anzeigen von 3D-Inhalten gestartet. Diese Bibliothek kann Ihnen auch beim Schreiben einer benutzerdefinierten Lösung für die Filmanzeige helfen.

Sie können Kunden im Geschäft mithilfe von Telefonen die Möglichkeit geben, ihre zusätzliche Beschreibung neben den Preisschildern anzuzeigen.

Sie können sie im Immobilienverkauf anwenden. Das Treffen mit Käufer und Verkäufer ist normalerweise unpraktisch. Und mit Hilfe eines solchen Videos wird es für den Käufer viel einfacher sein, im Voraus zu beurteilen, ob er dieses oder jenes Objekt überhaupt ansehen sollte.

Museen sind ein weiterer idealer Ort, um Technologie anzuwenden. In modernen Museen gibt es in der Halle oft Computer, über die Sie auf zusätzliche Informationen zugreifen und etwas anhören können. Aber diese Computer sind regelmäßig beschäftigt, und das Telefon ist immer für alle verfügbar, und er kann der Ausstellung Elemente der Augmented Reality hinzufügen. Die Bibliothek funktioniert mit fast jedem Gerätemodell, und auf Wunsch können wir den Museumsbesuchern weitere Informationen übermitteln.


Hier ist eine kurze Google-Anzeige, die zeigt, wie Google Earth in Virtual-Reality-Brillen aussieht. Sie können solche Videos auf einem normalen Monitor ansehen, aber die gleichen Bilder in Brillen sehen voluminös aus. Die Bewegung im Weltraum erfolgt mit der Daydream-Fernbedienung. Bei einigen Telefonen ist es auch möglich, das Barometer zu verwenden und sich einfach durch Drehen des Kopfes zu bewegen.

Eine weitere sehr interessante Idee für den Einsatz solcher Technologien ist der 3D-Druck.

Ein Startup schlug vor, dass Benutzer Augmented Reality verwenden, um Modelle zusammen mit anderen Modellierungswerkzeugen zu erstellen. Mit einem herkömmlichen Controller können Sie keine hochgenauen Modelle erhalten - der Fehler ist sehr groß. Mit Hilfe solcher Steuerungen können wir jedoch ein kleines Souvenir erstellen und es direkt bei der Anwendung bestellen, um es auf einem 3D-Drucker zu drucken. Diese Idee ist gut und wird sehr bald monetarisiert, zumal Drucker für solche Produkte allmählich billiger werden.

Source: https://habr.com/ru/post/de401809/


All Articles