Поделиться через


Понятия, связанные с World Locking Tools

задачи;

В повседневном физическом мире пространство можно описать с помощью стационарной системы координат. Неподвижный объект в стационарной системе координат всегда будет иметь одни и те же координаты. Группа объектов, размещенная в определенной конфигурации, будет сохранять эту конфигурацию. Два объекта, движущиеся с одинаковыми скоростями, будут оставаться на фиксированном расстоянии друг от друга.

Эти и подобные им законы являются настолько фундаментальным аспектом реальности, что при их нарушении трудно полагаться на интуицию о мире.

Предыдущие решения

Глобальное пространство координат Unity и пространственные привязки решают разные аспекты проблем, вызванных неточностями и отклонениями в данных датчиков.

Глобальное пространство координат Unity обеспечивает стабильную систему отсчета, в которой голографические объекты остаются фиксированными относительно друг друга. Хотя объекты в этом пространстве будут вести себя согласованно по отношению друг к другу, согласованность с физическим миром не гарантируется и обычно не обеспечивается. Будут возникать несоответствия, особенно при перемещении пользователя.

Пространственные привязки Unity могут сохранять положение голограммы в физическом мире, когда пользователь передвигается, но это происходит в ущерб согласованности в виртуальном мире. Разные привязки постоянно перемещаются относительно друг друга. Они также перемещаются в глобальном пространстве координат, что усложняет выполнение задач, таких как компоновка и моделирование физических взаимодействий.

Источник проблемы

Обсуждение здесь будет сосредоточено вокруг технологии HoloLens, но эти концепции в целом применимы к методам отслеживания inside-out без маркеров, особенно в сочетании с инерциальными системами.

Устройство HoloLens очень точно определяет, где оно находится относительно видимых признаков в своем окружении. Кроме того, оно также отлично подходит для позиционирования других виртуальных объектов с учетом тех же видимых признаков. Когда пользователь сидит или стоит в более-менее постоянном положении, устройство фиксирует виртуальные объекты по видимым физическими ориентирам. Виртуальная чашка, поставленная на физический стол, в основном будет оставаться на одном и том же месте на поверхности стола.

Это так, если устройство HoloLens ограничено одним небольшим объемом с постоянным набором видимых признаков для ориентации. Но существуют и другие интересные сценарии.

Когда пользователь встает и перемещается по комнате или даже между комнатами, устройство HoloLens должно переключаться между старыми признаками, которые исчезают из поля зрения, и новыми, которые появляются. Даже без изучения подробностей реализации понятно, что при перемещении точность отслеживания будет сильно снижена.

Ниже приведен упрощенный сценарий для контекста.

Иллюстрация

Пользователь находится в точке А. Если посмотреть по сторонам, можно увидеть много подходящих видимых признаков для ориентации, поэтому качество отслеживания головы будет отличным и любые размещенные голограммы останутся на месте.

Затем пользователь проходит 10 метров в физическом пространстве до точки Б. Но при движении отслеживание имеет более низкую точность, поэтому после достижения пользователем точки Б устройство зарегистрирует, что пройдено только 9 метров. Такое крупное значение приведено для иллюстрации, но оно соответствует спецификациям устройства, которые в таком случае допускают для расстояния погрешность в размере +-10 %.

Если посмотреть по сторонам в точке Б, устройство запишет подходящие видимые признаки. Отслеживание и стабильность голограмм в точке Б также превосходны.

Пока пользователь находится в определенной точке, все вокруг этой точки выглядит отлично. Но есть определенная несогласованность. 10 метров между точками A и Б в физическом пространстве соответствуют всего 9 метрам в виртуальном пространстве. Это часто называют "проблемой масштаба", хотя "проблема расстояния", пожалуй, более точно описывает происходящее. Мы вскоре рассмотрим эту проблему.

Вернемся к нашему сценарию. Для следующего действия пользователь возвращается в точку A. На этот раз из-за погрешностей отслеживания 10-метровая прогулка от Б до A в физическом пространстве составляет в сумме 10,5 метров в виртуальном пространстве. Это означает, что полное расстояние от A до Б и до A составляет в сумме чистое расстояние 1,5 метра, хотя должно быть 0,0 метра. Очевидно, что это является проблемой. Голограмма, помещенная в точку А перед передвижением, теперь появится на расстоянии 1,5 метра от точки А.

Здесь могут помочь пространственные привязки. После передвижения до точки Б и обратно система распознает, что она снова в точке A, но координаты головы в Unity изменились на 1,5 метра. Но если голограмма в точке А прикреплена к пространственной привязке, эта привязка оценивает ситуацию так, что она сама и голова находятся в точке А, но координаты привязки и головы отличаются на 1,5 метра. При этом привязка просто изменит свои координаты на 1,5 метра, чтобы все согласовать. С пространственной привязкой в точке В, в метре левее от пользователя, происходит то же самое. По сути, пространственная привязка постоянно переопределяет, где находится точка A в пространстве Unity, чтобы координаты головы всегда были правильными. Каждая пространственная привязка выполняет эту коррекцию независимо от ее положения в физическом мире.

World Locking Tools для Unity

Решение World Locking Tools хранит внутренний набор пространственных привязок, которые оно размещает по мере перемещения пользователя. Оно анализирует координаты камеры и эти пространственные привязки в каждом кадре. Оно обнаруживает, когда все эти пространственные привязки перемещаются более чем на 1,5 метра, чтобы согласовать их с координатами головы, и вместо того, чтобы изменять координаты всех объектов в мире для компенсации разницы координат головы, оно просто корректирует эти координаты.

Это означает, что пространственная привязка не перемещает голограмму через пространство Unity, чтобы она оставалась фиксированной в физическом пространстве, а все пространство мира Unity привязывается к физическому пространству. Если голограмма неподвижна в пространстве Unity, она останется неподвижной и относительно признаков окружающего физического мира. И что не менее важно, она останется фиксированной по отношению к окружающим виртуальным признакам.

Очевидно, что на самом деле все сложнее. Например, помните, что проблема с пространственными привязками заключается в том, что они перемещаются независимо, поэтому они не всегда согласуются друг с другом. Базовый движок Frozen World Engine устраняет эти расхождения, предлагая наиболее правильную для восприятия коррекцию камеры и делая это в каждом кадре.

И снова о проблеме масштабирования

Если пользователь идет из точки А в точку Б и обратно в точку А, у системы будет достаточно информации, чтобы зафиксировать отклонение, возникшее при перемещении. Система может не знать, где находится точка Б (и, как правило, не знает, где точно находится любая точка Б относительно точки A), но она знает, находится ли она в точке A или нет. По возвращении в точку А она ожидает, что все будет почти так же, как и было. Если это не так, система может исправить это.

Но что насчет точки Б? Система оценила 10-метровую прогулку как 9-метровую. И она не может знать, правильна ли эта оценка, а если нет, — насколько она ошибочна. Пространственные привязки здесь не помогают. Пространственные привязки имеют тот же недостаток, что и средство отслеживания головы. Все они знают, где они находятся в физическом мире (относительно видимых признаков), но одна пространственная привязка ничего не знает о другой. В частности, пространственные привязки не знают, насколько далеко они находятся друг от друга.

Это может быть неудобно, но когда размер объектов или систем объектов равен метру или более того, это становится реальной проблемой. Представьте себе модель комнаты, здания, набора столов или даже автомобиля. Хотя пространственная привязка может удерживать один конец модели, зарегистрированный с признаком физического мира, к тому времени, когда будет достигнут другой конец модели, может возникнуть значительная погрешность. Другой конец не будет выровнен правильно. И такая погрешность будет разной на разных устройствах и, возможно, даже при разных запусках на одном устройстве.

До этого момента здесь не упоминались средства, которые помогли бы решить проблему.

Решение World Locking Tools решает эту проблему с помощью API пространственных маркеров (Space Pins), который позволяет приложению предоставлять достаточно информации, касающейся физического и голографического миров, для исправления ошибок, связанных с пройденным расстоянием. Это позволяет выравнивать крупные голограммы по физическому миру.

Вкратце о базовой системе

Теперь, когда мы описали основные понятия World Locking Tools, давайте рассмотрим базовую систему. Понимание того, какие возможности доступны, а какие нет, поможет вам позже определиться не только с правильным использованием расширенных концепций, но и с тем, нужны ли эти расширенные методы для конкретного приложения.

См. также раздел