Перемещение в ранее сохраненном облаке точек - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время я работаю над приложением для внутренней навигации с ARcore.Я хотел бы сделать что-то вроде this , но из-за ограничений моего школьного проекта я должен работать на Android и, следовательно, не могу использовать Placenote.Поэтому я хотел попробовать сделать нечто подобное, используя облака точек.Я попытался сохранить облака точек и хотел бы спросить, можно ли переместить его в дальнейшем?Иначе, возможно ли использовать его как маркер?

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

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

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

Другая проблема в случае OP заключается в том, что ARCore меняет свою систему координат при каждом запуске приложения.Таким образом, по отношению к вашему устройству правая сторона равна +x, верхняя сторона равна +y, а направление вашего телефона - +z.Следовательно, для достижения того, что сделано здесь , вам необходимо привязать эти промежуточные точки и сохранить эти привязки локально на этапе сканирования вашего приложения.Затем в другом Session эти промежуточные точки должны быть расположены в том же физическом месте.Для этого вам необходимо иметь Преобразование между системой координат фазы сканирования и новой системой координат Session, учитывая, что ARCore меняет систему координат в каждом Session.

Чтобы решить эту проблему, я бы предложил использовать дополненное изображение, расположенное в определенном месте комнаты.Это изображение будет использоваться для расчета матрицы преобразования между двумя системами координат.В фазе сканирования вы должны отслеживать изображение и регистрировать 3 позиции от изображения (например, центр, верхний левый и нижний левый) вместе с позициями вашего якоря.Затем, когда пользователь хочет использовать внутреннюю навигацию, он / она должен сначала отследить изображение, а затем вы вычисляете матрицу преобразования, используя те же 3 точки снова в другой системе координат.Вы можете использовать Rigid Transform для этой задачи.

Как только вы нашли Матрицу Трансформации, вы можете снова расположить путевые точки в том же физическом месте в реальном мире (но не забывайте, что они будут иметь разные координаты в Unity).После этого вы можете осуществлять навигацию с помощью этих якорей.Вы также можете использовать больше дополненного изображения для увеличения точности, если у вас есть 3 общих точки в обеих системах координат .

...