Как сделать окклюзию с помощью Google Tango в Unity?

Я пытаюсь сделать окклюзию с помощью Google Tango в Unity.

То, что я хочу, довольно просто понять: когда перед виртуальным объектом находится реальный объект, виртуальный объект скрыт (или отображается по-другому)

Идеальный результат будет таким, как в этом впечатляющем видео, которое я нашел: https://www.youtube.com/watch?v=EpDhaM7ZhZs .

Я уже пробовал опцию «Включить окклюзию» камеры Tango, и я не очень доволен результатами (это не точно и не в реальном времени, так как основано на реконструкции сетки из облака точек).

Если у вас есть подсказки, советы или идеи о том, как этого добиться (как в видео), это было бы здорово!


person Pierre Baret    schedule 11.04.2017    source источник


Ответы (1)


Окклюзия все еще является экспериментальной функцией Tango. Проблема в том, что очень сложно сделать окклюзию с высокой точностью и производительностью, вот пара идей о том, как добиться этого, используя другой метод:

  1. Используйте 3D-реконструкцию.

Tango предоставляет функции для построения 3D-сетей из облака точек, вы можете найти пример кода в репозитории примеров кода Tango (C, Java, Unity). Если у вас есть предварительно отсканированный мир, вы можете по существу использовать данные этого меша для перекрытия виртуального объекта.

  1. Изображение глубины с повышением частоты дискретизации во время выполнения.

Вы также можете спроецировать все облака точек на плоскость изображения, повысить его дискретизацию и использовать изображение в качестве буфера глубины для рендеринга. Это то, что ARScreen occlusion использует в TangoUnitySDK. Из-за ограничений оборудования Tango для измерения глубины качество результата не очень идеальное, и оно не будет работать, если все физические объекты находятся далеко (более 4 метров) от устройства.

person xuguo    schedule 12.04.2017