Отображение узлов ARKit по отношению к реальным объектам

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

Можно ли это как-то побороть?

Скриншот


person Darkslave    schedule 01.08.2017    source источник


Ответы (2)


@John Scalo прав, ваша проблема не в том, чтобы сначала обнаружить плоскость, а в том, что ваш механизм рендеринга не знайте, что часть рамки вашего зеленого прямоугольника перекрыта (скрыта) реальным объектом.

"…как-то преодолеть это"

Да, и тем самым вы можете «решить» свою первоначальную проблему — помочь кому-нибудь понять размеры предмета.

(В зависимости от вашего выбора движка рендеринга, например, SceneKit) Вы можете добавить невидимый 3D-объект, который имеет те же размеры, что и реальный объект; поэтому движок рендеринга будет «знать», что некоторые части вашей рамки находятся за этим (невидимым для пользователя) 3D-объектом. Поэтому вы можете сказать ему не рисовать те части рамки вашей коробки, которые создадут иллюзию (здесь заимствовано у Apple), что ваша банка с газировкой окружена коробкой.

Эти обходные пути неточны, но, возможно, их точности достаточно для того уровня реализма, которого вы пытаетесь достичь:

  • Вариант 1: 1. После обнаружения поверхности стола поместите полупрозрачный 3D-объект на банку с газировкой, а затем измените его размер (жесты/кнопки по вашему выбору), пока он не станет размером с банку с газировкой. 2. Подтвердите, что вы закончили, и просто не рисуйте на нем текстуру, просто позвольте ей закрыть зеленую рамку.

  • Вариант 2. Держите устройство рядом с краями банки с газировкой и добавьте «достаточное количество» ARAnchor, чтобы иметь возможность создать «ограничивающую форму», которую (опять же) можно использовать для захвата реального объекта и его закрытия.

  • Вариант 3: (интенсивный и, возможно, наименее точный) Используйте палец, чтобы «провести» по объекту под разными углами, и при каждом прикосновении выполняйте тест на попадание (надеюсь, верхнее/ближайшее попадание является частью вашей банки с газировкой) и таким образом создайте «ограничивающую форму».

  • Вариант X: любая комбинация 1-2-3.

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

person PDK    schedule 04.08.2017

Проблема, с которой вы столкнулись, называется окклюзией, и ARKit не включает (в настоящее время?) поддержку окклюзии. Возможно, когда-нибудь iPhone и iPad начнут поставляться с LIDAR (или аналогичным), и в этом случае ARKit сможет обнаруживать объекты на сцене, значительно упрощая окклюзию.

person John Scalo    schedule 03.08.2017