@John Scalo прав, ваша проблема не в том, чтобы сначала обнаружить плоскость, а в том, что ваш механизм рендеринга не знайте, что часть рамки вашего зеленого прямоугольника перекрыта (скрыта) реальным объектом.
"…как-то преодолеть это"
Да, и тем самым вы можете «решить» свою первоначальную проблему — помочь кому-нибудь понять размеры предмета.
(В зависимости от вашего выбора движка рендеринга, например, SceneKit) Вы можете добавить невидимый 3D-объект, который имеет те же размеры, что и реальный объект; поэтому движок рендеринга будет «знать», что некоторые части вашей рамки находятся за этим (невидимым для пользователя) 3D-объектом. Поэтому вы можете сказать ему не рисовать те части рамки вашей коробки, которые создадут иллюзию (здесь заимствовано у Apple), что ваша банка с газировкой окружена коробкой.
Эти обходные пути неточны, но, возможно, их точности достаточно для того уровня реализма, которого вы пытаетесь достичь:
Вариант 1: 1. После обнаружения поверхности стола поместите полупрозрачный 3D-объект на банку с газировкой, а затем измените его размер (жесты/кнопки по вашему выбору), пока он не станет размером с банку с газировкой. 2. Подтвердите, что вы закончили, и просто не рисуйте на нем текстуру, просто позвольте ей закрыть зеленую рамку.
Вариант 2. Держите устройство рядом с краями банки с газировкой и добавьте «достаточное количество» ARAnchor
, чтобы иметь возможность создать «ограничивающую форму», которую (опять же) можно использовать для захвата реального объекта и его закрытия.
Вариант 3: (интенсивный и, возможно, наименее точный) Используйте палец, чтобы «провести» по объекту под разными углами, и при каждом прикосновении выполняйте тест на попадание (надеюсь, верхнее/ближайшее попадание является частью вашей банки с газировкой) и таким образом создайте «ограничивающую форму».
Вариант X: любая комбинация 1-2-3.
Удачи, есть много людей, пытающихся обойти это ограничение устройства/ARKit в данный момент, так что следите за хорошими идеями.
person
PDK
schedule
04.08.2017