#ios #arkit
#iOS #arkit
Вопрос:
Мы стремимся обмениваться опытом AR (ARWorldMap) через Интернет (не обязательно с близлежащими устройствами, я имею в виду данные, которые могут быть сохранены на каком-либо сервере, а затем извлечены другим пользователем).
Прямо сейчас мы изучаем ARWorldMap, который довольно потрясающий, но я думаю, что он работает только на одном устройстве и с соседними устройствами. Мы хотим иметь возможность удалять эти ограничения (и, следовательно, сохранять возможности через Интернет на каком-либо сервере), чтобы все остальные могли автоматически видеть 3D-объекты на своих устройствах (не обязательно одновременно) именно там, где они были размещены.
Знаете ли вы, возможно ли отправить архивированные данные (ARWorldMap) на какой-либо сервер в каком-либо формате, чтобы другой пользователь мог позже получить эти данные и загрузить AR experience на свое устройство?
Комментарии:
1. Вы ищете что-то вроде облачных якорей Google?
2. @AxelGuilmin Да, может быть! Работает ли это, даже если устройства больше не находятся поблизости? Например, устройство A размещает что-то, а затем устройство B некоторое время спустя видит ту же среду (когда устройства A больше нет). Я вижу, что существует ограничение в 24 часа.
Ответ №1:
ARWorldMap
Содержит функциональные точки в среде вокруг пользователя. Например, точное положение и размер таблицы, но включая все другие точки, обнаруженные камерой. Вы можете визуализировать их с debugOptions
помощью . Не имеет смысла делиться ими с пользователем, который не находится в той же комнате.
Что вы хотите сделать, так это поделиться взаимодействиями между пользователями, например, когда объект был размещен или повернут. Это то, что вам все равно нужно будет реализовать самостоятельно, поскольку ARWorldMap
содержит только привязки и функции.
Я могу порекомендовать Inside Swift Shot с WWDC последних лет в качестве отправной точки.
Комментарии:
1. Я ищу что-то, что позволяет людям размещать 3D-объекты по всему городу, и люди видят их именно там, где они были размещены, даже с разницей в годы. Похоже, то, что вы предлагаете, — это то, что можно использовать одновременно, я ищу что-то более асинхронное, если это имеет какой-то смысл.
2. Это
ARWorldMap
вам не поможет. Вам понадобится база данных, в которой хранятся координаты GPS и ориентация. Чтобы получить одинаковую ориентацию на всех устройствах, используйте.gravityAndWorldMap
мировое выравнивание. Возможно, задайте новый, более точный вопрос, если возникнут дополнительные проблемы
Ответ №2:
Да, технически это возможно, как указано в документах здесь. Вам придется использовать протокол кодирования nsssecure, который, возможно, придется расширить, если вы не используете серверную часть swift. Это все еще возможно, поскольку привязки arkit определяются сочетанием карт точек, данных вращения и алгоритмов изображения. Просто реализуйте части codable в JSON и вуаля, это жизнеспособно для большинства серверных систем. Конечно, это легче сказать, чем сделать.
Комментарии:
1. Спасибо! То есть вы говорите, что люди вполне могут сканировать среду, сохранять все данные на сервере, а затем загружать и загружать эти данные другим пользователем, даже с разницей в годы?
2. Разница в годах была бы сложной, ARKIT использует визуальную инерциальную одометрию для правильной калибровки. Учитывая это, кривизна земли немного усложняет обеспечение того, чтобы местоположения оставались на одном и том же месте в течение многих лет. Это определенно возможно алгоритмически, поскольку FB недавно играл с той же концепцией. Если подумать, вы, вероятно, могли бы экспортировать данные с помощью таких вещей, как CLocation. Попробуйте согласовать систему координат карты мира с клиентом, наконец, используя некоторую функцию потерь, минимизирующую ошибку. Не очень, но дайте мне немного подумать.