Konzepte von World Locking Tools
Das Problem
In der alltäglichen physischen Welt wird der Raum durch ein stationäres Koordinatensystem gut beschrieben. Ein unbewegtes Objekt in einem stationären Koordinatensystem wird stets die gleichen Koordinaten aufweisen. Für eine Gruppe von Objekten, die in einer bestimmten Konfiguration angeordnet sind, wird diese Konfiguration beibehalten. Zwei Objekte, die sich mit identischer Geschwindigkeit bewegen, verbleiben in einem festen Abstand zueinander.
Diese und ähnliche Gesetze sind so grundlegend für unsere Existenz, dass unsere Wahrnehmung der Welt unzuverlässig wird, wenn sie nicht mehr gelten.
Bisherige Lösungen
Der globale Koordinatenraum und die Raumanker von Unity befassen sich jeweils mit unterschiedlichen Aspekten der Probleme, die durch Sensorungenauigkeiten und Abweichungen verursacht werden.
Der globale Koordinatenraum von Unity bietet einen stabilen Bezugsrahmen, in dem holografische Objekte relativ zueinander fest verankert sind. Während sich die Objekte in diesem Raum relativ zueinander konsistent verhalten, ist eine Konsistenz mit der physischen Welt weder garantiert noch generell gegeben. Inkonsistenzen treten insbesondere dann auf, wenn sich der Benutzer im Raum bewegt.
Die Raumanker von Unity können die Position eines Hologramms in der physischen Welt beibehalten, wenn der Benutzer mobil ist, allerdings auf Kosten der Eigenkonsistenz innerhalb der virtuellen Welt. Die verschiedenen Anker bewegen sich ständig relativ zueinander. Außerdem bewegen sie sich durch den globalen Koordinatenraum, was einfache Aufgaben wie das Layout erschwert und eine Simulation physischer Gegebenheiten problematisch macht.
Die Ursache des Problems
Im vorliegenden Dokument steht die HoloLens-Technologie im Mittelpunkt, aber diese Konzepte gelten generell für markerlose Tracking-Verfahren, insbesondere wenn sie durch Inertialsysteme ergänzt werden.
Mit HoloLens lässt sich erstaunlich gut feststellen, wo sich das Gerät im Verhältnis zu sichtbaren Merkmalen in der Umgebung befindet. Mithilfe einer Erweiterung kann außerdem eine erstaunlich gute Positionierung weiterer virtueller Objekte auf der Grundlage der gleichen sichtbaren Merkmale erfolgen. Wenn der Benutzer sitzend oder stehend eine annähernd konstante Position einnimmt, kann das Gerät virtuelle Objekte problemlos mithilfe sichtbarer physischer Bezugspunkte registrieren. Eine virtuelle Tasse, die auf einem realen Tisch abgestellt wird, erscheint weitestgehend immer an derselben Stelle auf der Tischoberfläche.
Das ist dann der Fall, wenn HoloLens auf ein und dasselbe kleine Raumsegment beschränkt ist und eine konstante Gruppe von sichtbaren Merkmalen als Referenz in Sichtweite ist. Es gibt jedoch noch weitere interessante Szenarien.
Wenn der Benutzer aufsteht und sich im Raum bewegt oder möglicherweise sogar zwischen Räumen wechselt, muss HoloLens zwischen den vorherigen, nicht mehr im Blickfeld liegenden Merkmalen und neu in das Blickfeld gelangenden Merkmalen umschalten. Ohne auf die Einzelheiten der Implementierung einzugehen, muss klar gesagt werden, dass die Verfolgungsgenauigkeit während der Bewegung erheblich abnimmt.
Dieses vereinfachte Szenario soll den Kontext bilden.
Abbildung
Der Benutzer befindet sich an Punkt A. Wenn er sich umsieht, gibt es viele gut sichtbare Referenzmerkmale, deshalb ist die Head-Tracking-Qualität ausgezeichnet, und alle platzierten Hologramme bleiben an ihrem Platz.
Dann geht der Benutzer zu Punkt B, der sich 10 Meter entfernt im physischen Raum befindet. Die Verfolgung während der Bewegung ist jedoch weniger genau, sodass das Gerät nach Erreichen von Punkt B registriert, dass der Benutzer nur 9 Meter zurückgelegt hat. Dies ist ein großer, glatter Betrag der Abweichung (zum Zweck der Veranschaulichung), aber er entspricht den Gerätespezifikationen, die in einem solchen Fall einen Abstandsfehler von +/-10 % zulassen.
Während sich das Gerät an Punkt B umsieht, werden gut sichtbare Merkmale erfasst. Die Nachverfolgung und Stabilität von Hologrammen an Punkt B ist ebenfalls hervorragend.
Während sich der Benutzer an einem bestimmten Punkt befindet, sehen die Dinge um diesen Punkt herum großartig aus. Es gibt jedoch eine Inkonsistenz. Die 10 Meter zwischen den Punkten A und B im physischen Raum entsprechen nur 9 Metern im virtuellen Raum. Dies wird oft als „Maßstabsproblem“ bezeichnet, obwohl „Distanzproblem“ vielleicht zutreffender ist. Um dieses Problem werden wir uns in Kürze kümmern.
Zurück zu unserem Szenario: Bei der nächsten Aktion geht der Benutzer zurück zu Punkt A. Diesmal summieren sich die 10 Meter Fußweg von Punkt B zu Punkt A im physischen Raum aufgrund der Tracking-Fehler auf 10,5 Meter im virtuellen Raum. Das bedeutet, dass der Gesamtweg von A nach B nach A eine Nettodistanz von 1,5 m ergibt, obwohl sie 0,0 m betragen sollte. Dies ist offensichtlich ein Problem. Ein Hologramm, das vor dem Gang zu Punkt B an Punkt A platziert wurde, erscheint nun 1,5 m von Punkt A entfernt.
Hier können Raumanker helfen. Nach dem Gang zu Punkt B und zurück erkennt das System, dass es sich wieder an Punkt A befindet, aber die Unity-Kopfkoordinaten haben sich um 1,5 m verändert. Wenn aber das Hologramm an Punkt A mit einem Raumanker versehen ist, kann der Raumanker die Schlussfolgerung ziehen: „Ich bin an Punkt A, der Kopf ist an Punkt A, aber meine Koordinaten unterscheiden sich von den Kopfkoordinaten um 1,5 m. Ich ändere einfach meine Koordinaten um 1,5 m, damit wir wieder übereinstimmen.“ Und ein Raumanker an Punkt C, einen Meter links vom Benutzer, durchläuft denselben Prozess. Im Wesentlichen definiert der Raumanker ständig neu, wo sich Punkt A im Unity-Raum befindet, damit die Kopfkoordinaten stets korrekt sind. Und jeder Raumanker nimmt diese Anpassung unabhängig für seine Position in der physischen Welt vor.
World Locking Tools for Unity
World Locking Tools verfügt über einen internen Bestand an Raumankern, die verteilt werden, wenn sich der Benutzer bewegt. WLT analysiert die Koordinaten der Kamera und dieser Raumanker für jeden Frame. Es erkennt, wenn sich all diese Raumanker um mehr als 1,5 m bewegen, um sich an die Kopfkoordinaten anzupassen, und stellt fest: „Hmm, anstatt die Koordinaten aller Dinge in der Welt zu ändern, um zu kompensieren, dass die Kopfkoordinaten anders lauten als beim letzten Mal an diesem Standort, werde ich stattdessen einfach die Kopfkoordinaten korrigieren.“
Dies bedeutet, dass ein Hologramm nicht von einem Raumanker durch den Unity-Raum gezogen werden muss, damit es im physischen Raum fixiert bleibt, sondern dass der gesamte Raum der Unity-Welt an den physischen Raum gebunden ist. Wenn ein Hologramm im Unity-Raum bewegungslos ist, bleibt es relativ zu den Merkmalen der physischen Welt um es herum bewegungslos. Und – was ebenso wichtig ist – das Hologramm bleibt im Verhältnis zu den umgebenden virtuellen Merkmalen fixiert.
Natürlich sind die tatsächlichen Abläufe komplizierter. Bedenken Sie zum Beispiel, dass ein Problem mit den Raumankern darin besteht, dass sie sich unabhängig voneinander bewegen und deshalb nicht immer übereinstimmen. Die zugrunde liegende FrozenWorld-Engine gleicht diese Unstimmigkeiten aus, um eine möglichst wahrnehmungsgerechte Kamerakorrektur vorzunehmen, und zwar bei jedem Frame.
Noch einmal das Maßstabsproblem
Wenn der Benutzer von Punkt A zu Punkt B und wieder zurück zu Punkt A geht, verfügt das System über genügend Informationen, um die auf dem Weg entstandene Abweichung zu korrigieren. Das System hat möglicherweise keine Kenntnis darüber, wo sich Punkt B befindet (und im Allgemeinen auch keine genaue Kenntnis darüber, wo sich irgendein Punkt B im Verhältnis zu Punkt A befindet), aber es weiß, ob es sich an Punkt A befindet oder nicht. Wenn das System zu Punkt A zurückkehrt, erwartet es, die Dinge so vorzufinden, wie es sie verlassen hat. Andernfalls kann das System dafür sorgen, dass diese Erwartung erfüllt wird.
Aber was ist mit Punkt B? Das System hat für den 10-Meter-Gang nur 9 Meter veranschlagt. Und das System kann nicht bestimmen, ob diese 9 Meter korrekt sind und, falls nicht, wie hoch die Abweichung ist. Raumanker bieten hier keine Hilfe. Bei Raumankern besteht das gleiche Problem wie beim Head-Tracker: Jeder Raumanker kennt seinen Standort in der physischen Welt (relativ zu sichtbaren Merkmalen), hat jedoch keinerlei Informationen über andere Raumanker. Insbesondere wissen Raumanker nicht, wie weit sie voneinander entfernt sind.
Dies kann in vielerlei Hinsicht unbequem sein, wird aber zu einem echten Problem, wenn Objekte oder Objektsysteme eine Größe von mehr als einem Meter haben. Stellen Sie sich ein Modell eines Zimmers, eines Gebäudes, eines Schreibtischs oder sogar eines Autos vor. Mithilfe eines Raumankers kann zwar ein Endpunkt des Modells an einem Merkmal der physischen Welt registriert werden, aber bei Erreichen des anderen Endpunkts des Modells können sich bereits erhebliche Fehler akkumuliert haben. Der entgegengesetzte Endpunkt wird nicht ordnungsgemäß ausgerichtet. Darüber hinaus variiert der Fehler von Gerät zu Gerät und möglicherweise sogar zwischen verschiedenen Durchläufen auf demselben Gerät.
Und bisher wurden in dieser Erörterung noch nicht die Informationen vorgestellt, die zur Lösung des Problems mindestens benötigt werden.
World Locking Tools begegnet diesem Problem mit der Space Pins-API, die es der Anwendung ermöglicht, genügend Informationen über die physische Welt und die holografische Welt zu liefern, um Fehler hinsichtlich der zurückgelegten Strecke zu korrigieren. Damit können große Hologramme überall mit der physischen Welt in Einklang gebracht werden.
Ein Blick auf das grundlegende System
Nachdem wir uns nun einen Überblick über die Konzepte der World Locking Tools verschaffen haben, sehen wir uns das grundlegende System an. Wenn Sie wissen, welche Dienste die Basisfunktionalität bereitstellt und welche nicht, können Sie später besser entscheiden, welche fortgeschrittenen Konzepte genutzt werden sollten und ob diese fortgeschrittenen Techniken für eine spezifische Anwendung überhaupt benötigt werden.