ARCore - Как разместить / создать объекты на поверхностях, таких как стены, без каких-либо характерных точек? - PullRequest
0 голосов
/ 06 ноября 2018

Например: мне интересно разместить 2D-изображения на вертикальной плоскости (например, белые или однотонные стены без характерных точек).

Какие существуют обходные пути?

Мне известно, что ARCore поддерживает размещение объектов относительно других объектов. Как я могу расширить это, чтобы выполнить мое требование размещения объектов относительно других объектов, где характерные точки не обнаружены?

Любые идеи или обходные пути высоко ценится.

Ответы [ 3 ]

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

Вы можете установить Якорь относительно положения камеры - т.е. навести камеру на стену, к которой вы хотите прикрепить.

Чтобы получить правильную глубину, вам нужно либо держать камеру на заданном заранее установленном расстоянии, либо добавить возможность перемещать объект назад и вперед. Как сказал @Ali, у вас будет дрейф, но это обычное явление в настоящее время.

Приведенный ниже код добавит якорь в центр обзора камеры:

          //Add an Anchor and a renderable in front of the camera       
          Session session = arFragment.getArSceneView().getSession();
          float[] pos = { 0,0,-1 };
          float[] rotation = {0,0,0,1};
          Anchor anchor =  session.createAnchor(new Pose(pos, rotation));
          anchorNode = new AnchorNode(anchor);
          anchorNode.setRenderable(andyRenderable);
          anchorNode.setParent(arFragment.getArSceneView().getScene());

Смотрите здесь для дальнейшего обсуждения:

Подход работает, и вы можете установить глубину по своему усмотрению.

Если вы хотите также переместить рендеринг вперед и назад, то могут быть более эффективные способы сделать это, но наиболее надежный подход, который я нашел, следуя совету по отдельному обсуждению на GitHub, заключался в удалении якоря и создании новый находится в заданной позиции позади или перед новой позицией - то есть имеет кнопку, которая позволяет пользователю переместить рендеринг назад на 0,1M или вперед на 0,1M.

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

Существует как минимум 5 различных способов размещения 3D-объектов на вашей сцене. Но любая 3D геометрия не может существовать без Anchor -. В локальной системе координат объекта, расположенной на его точке поворота 1004 *

Для размещения объекта могут использоваться следующие подходы :

  • Если обнаружение плоскости включено, ARCore может автоматически добавить Anchor к текущему сеансу.
  • При нажатии на экран позволяет спроецировать точку на воображаемую плоскость, поместив Якорь.
  • ARCore Преобразование камеры (ее расположение и ориентация) может использоваться для размещения якоря.
  • Особые точки (точки на полях с высокой контрастностью) могут дать вам место для привязки.
  • Кластеры характерных точек позволяют сохранить карту окружающей среды реального мира для последующего ее получения.

Как видите, опция Feature points не всегда используется. Будьте изобретательны и используйте все эффективные методы для размещения 3D в вашей сцене.

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

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

...