Die Grundidee
Inside-out-Systeme zur Kopfnachverfolgung sind eine beeindruckende neue Technologie. In ihren Stärken sind sie fast magisch. Aber sie haben auch ihre Schwächen.
Inside-out-Systeme zur Kopfnachverfolgung wie die in HoloLens sind gut darin, die Position des Kopf relativ zu nahe gelegenen Körperregionen zu bestimmen. Ebenso gut können sie bestimmen, wo sich Features der realen Welt relativ zum Kopf befinden.
Sie können jedoch nicht so gut bestimmen, wo sich der Kopf relativ zu seiner vorherigen Position befindet. Wenn der Kopf von Punkt A zu Punkt B bewegt wird, liegt das Nachverfolgungssystem in der Regel etwas falsch, was die Entfernung betrifft, um die der Kopf bewegt wurde. Das bedeutet, dass das Nachverfolgungssystem den Abstand zwischen den Punkten A und B falsch bestimmt. Dieser Effekt tritt häufig auf und wird verwirrend als „Skalierungsproblem“ bezeichnet.
Wenn der Kopf dann von Punkt B zurück zu Punkt A zurück bewegt wird, wird die Entfernung erneut falsch bestimmt. Die Bestimmung liegt zwar schon beeindruckend nah am richtigen Ergebnis, ist aber deutlich falsch. Dieser Effekt wird auch als „Drift“ bezeichnet.
Diese Probleme werden ausführlicher in diesen Häufig gestellten Fragen behandelt.
Der Punkt ist, dass die World Locking Tools diese Probleme beheben können. Im letzteren Fall, der Drift, können die World Locking Tools anhand der physischen Merkmale um Punkt A herum erkennen, dass sich der Kopf wieder bei Punkt A befindet, und die Koordinaten des Kopfs korrigieren.
Im vorherigen Fall des Skalierungsproblems können die World Locking Tools Eingaben aus der Anwendung entgegennehmen, um zu wissen, wo Punkt B relativ zu Punkt A ist, und diese zurückgelegte Entfernung auch korrigieren.
Um besser zu verstehen, wie die World Locking Tools diese Probleme beheben, ist einige zusätzliche Terminologie hilfreich.
Spongy- und weltgebundene Räume
Spongy-Raum
Das Kernstück von World Locking Tools ist eine Optimierungs-Engine. Als Eingaben nimmt sie einen Graphen derzeit in der Welt aktiver Raumanker zusammen mit den aktuellen Informationen zur Kopfnachverfolgung entgegen. Diese Eingabe wird in dieser Dokumentation sowie zugehöriger Dokumentation und zugehörigem Code üblicherweise als Spongy-Zustand bezeichnet. Der Spongy-Zustand ist so benannt, da er ständig im Fluss ist. Die Raumanker sind immer relativ zueinander und innerhalb ihres nativen Spongy-Koordinatenraums in Bewegung, während eingehende Sensordaten ihren Zustand verfeinern.
Dieser Spongy-Raum ist das einzige bisher verfügbare Koordinatensystem, in dem der Mixed Reality-Anwendungsentwickler arbeiten konnte.
Weltgebundener Raum
Vom Spongy-Zustand aus berechnet die World Locking Tools-Engine einen stabilen Raum, der den Spongy-Raum optimal an der physischen Welt ausrichtet. Dieser stabile Raum wird als weltgebundener Raum und sein vollständiger Zustand als fixierter Zustand bezeichnet.
Es ist wichtig zu wissen, dass sowohl Spongy-Raum als auch weltgebundener Raum feste kartesische Koordinatensysteme sind und sich tatsächlich nur durch eine Drehung und einen Offset voneinander unterscheiden. Die Transformation vom Spongy-Raum in den weltgebundenen Raum ändert jedoch jeden Frame, wenn neue Sensordaten verarbeitet werden.
Der Unterschied zwischen den beiden Räumen besteht darin, dass eingehende Sensordaten zwar frei darin sind, Raumanker relativ zueinander und zu dem Kopf im Spongy-Raum zu verfeinern (d. h. zu bewegen), aber der weltgebundene Raum ausgewählt wird, um solche Bewegungen zu minimieren. Dieser Unterschied ermöglicht im weltgebundenen Raum platzierten Szenenobjekten, in der physischen Welt fixiert zu erscheinen, ohne einzelnen Raumankern angefügt zu sein. Für jeden Frame berechnet die Engine den weltgebundenen Raum, in dem die zugrunde liegenden Anker am stabilsten sind. Also den weltgebundenen Raum, in dem virtuelle Objekte optimal auf reale Features ausgerichtet bleiben.
Diese Transformation wird auf jeden Frame der Szene angewendet, indem die lokale Transformation eines übergeordneten Elements der Kamera im Szenengraphen angepasst wird. Da die Kamera den ursprünglichen Spongy-Raum definiert, wird der Stammbereich der Szene durch Einfügen dieser „Weltgebunden aus Spongy"-Transformation in die Kamerahierarchie als weltgebundenen Raum festgelegt.
Persistenz
Der fixierte Zustand kann optional sitzungsübergreifend persistiert werden. Es gibt manuelle Steuerelemente zum Speichern des aktuellen Zustands und zum Laden aus einem gespeicherten Zustand. Darüber hinaus aktivieren oder deaktivieren Flags im World Locking Tools Manager das automatische regelmäßige Speichern des fixierten Zustands und das automatische Laden des zuletzt gespeicherten Zustands beim Start.
Die Verwendung dieser Funktionen ermöglicht das Scannen und Stabilisieren eines realen Raums, der über mehrere Sitzungen hinweg persistiert werden kann.
Darüber hinaus kann diese Ausrichtung persistiert werden, wenn das Feature „Space Pin“ verwendet wird, um den Modellierungsraum am realen Raum auszurichten. In diesem Fall können nach einer ersten Ausrichtungssitzung zum Einrichten der „Space Pins“ zum Ausrichten der modellierten Szene an einem physischen Raum nachfolgende Sitzungen die modellierte Szene automatisch mit ausgerichteten virtuellen und realen Features in den physischen Raum laden.
Weitere Informationen finden Sie unter Persistenz und Space Pin-Feature.
Auswirkungen der Kamerabewegung
Hier ist unbedingt zu beachten, dass durch Anwenden der Korrekturtransformation auf die Kamera die native Unity „stationärer Referenzrahmen“ in den optimalen weltgebundenen Referenzrahmen konvertiert wurde. Da keine Objekte in der Szene verschoben wurden, beeinträchtigt diese Korrektur nicht die physikalische Simulation oder andere dynamische Berechnungen.
Dass die Kamera innerhalb des stationären Referenzrahmens bewegt wird, hat jedoch Auswirkungen. Insbesondere werden alle Subsysteme falsch sein, die davon ausgehen, dass die Kopftransformation die einzige Transformation zwischen dem stationären Referenzrahmen und dem Kameraraum ist.
Dieser Fehler ist in der Regel kein Problem, da Funktionen wie Teleportieren bereits auf der Fähigkeit zum Platzieren einer Transformation zwischen Kamera und Stammbereich basieren.
Darüber hinaus berücksichtigt MRTK bereits die Notwendigkeit solcher Transformationen, sodass dies für Benutzer von MRTK-Diensten „einfach funktioniert“.
Für Benutzer, die direkten Zugriff auf Systeme auf niedrigerer Ebene benötigen und MRTK nicht nutzen können, werden Beispiele zum Erstellen von Adaptern bereitgestellt. Im Folgenden sind einige Beispiele aufgeführt: