Как выровнять SCNScene к физической таблице, используя ARKit? - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь найти лучшую стратегию для выравнивания SCNScene с физической таблицей. Также как приложение ARKit WWWFreeRivers .

enter image description here

В настоящее время я просто тестирую, чтобы отобразить простую модель самолета с теми же размерами, что и в таблице. Если я вытяну плоскость, которую обнаруживает ARKit, я увижу, что плоскость не очень точна с краями. Они всегда выходят за границы (изображение ниже).

enter image description here

Так что я не могу полагаться на этот самолет, просто поместив модель в центр этого. Модель также вращается неправильно (изображение ниже).

enter image description here

У меня была другая идея использовать технику ARReferenceImage, чтобы сфотографировать текстуру столешницы, и позволить ARKit найти и сопоставить это «изображение» таблицы. Но даже с текстурой деревянного зерна ARKit не хватило данных, чтобы распознать его. И ARKit просто терпит неудачу, если у вас есть эти ошибки. Он даже не пытается сделать плохой матч.

enter image description here

Как мне это сделать?

Идеи, которые у меня были до сих пор:

  • Возьмите изображение таблицы и используйте функцию ARImageReference, чтобы соответствовать ему. Это не сработало. Может быть, если я добавлю в таблицу еще несколько интересных особенностей, например, какие-нибудь QR-коды в углах.
  • Определите самолет, а затем нажмите на четыре угла на столе, чтобы наметить квадрат, и используйте его.
  • Сделайте как приложение WWW, просто поместите объект случайным образом на плоскость, а затем позвольте пользователю масштабировать, перемещать и вращать модель, чтобы дать ей правильное положение.

Есть еще идеи? Как вы думаете, что будет лучшим подходом к этому?

1 Ответ

0 голосов
/ 19 ноября 2018

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

  1. Вы можете создать ARWorldMap (только для iOS12 +) и использовать его вместо ARImageReference, обходя область при создании карты, которую запомнят последующие сеансы ARKit. Вы можете немного поэкспериментировать с тем, как разместить ваши модели в четырех углах таблицы (это немного утомительно без большой помощи от редактора SceneView). Однако, когда вы загружаете сохраненный ARWorldMap и локализуете его (точно так же, как ARImageReference), ваша модель должна каждый раз помещаться в четырех углах таблицы.

  2. Если вы используете что-то вроде Unity (и его плагин ARKit), у него есть гораздо более мощные инструменты редактора (средство просмотра 3D / конструктор). Есть некоторые инструменты, которые могут помочь вам сохранить карту, как ARWorldMap, но затем внести детали карты в редактор, чтобы вы могли действительно легко выстроить все в ряд. Пространственный захват Placenote Инструментарий может помочь здесь. Placenote (iOS11 +) создает свою собственную «Карту мира», но она предоставляет визуальные детали в редакторе Unity, упрощая выстраивание и последующую локализацию ( Пример ). Карта также хранится в управляемом облаке с самого начала, что значительно упрощает обмен данными между телефонами.

P.S .: Обе эти опции требуют, чтобы вы в целом сохраняли статичность (небольшие изменения освещения и т. Д.), Хотя это было аналогичным ограничением при использовании ARIMageReference.

...