Как ускорить обнаружение самолета в ARCore / Sceneform - PullRequest
0 голосов
/ 17 сентября 2018

Пример проекта ARCore sceneform "hellosceneform" классный и работает очень хорошо.

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

Мое приложение не требует, чтобы что-либо отображалось в вертикальной плоскости (стене), а только когда-либо на полу. Можно ли вообще пропустить шаг «переместить телефон» или хотя бы ускорить его?

Я пробовал:

session.getConfig().setPlaneFindingMode(Config.PlaneFindingMode.HORIZONTAL);

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

Спасибо!

Ответы [ 3 ]

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

К сожалению, каркас ограничен (читай: включен) моделями компьютерного зрения, которые он использует для обнаружения самолетов. Контроллер обнаружения плоскостей (то есть шаг «переместить телефон вокруг») - это толчок пользователю для предоставления моделям информации о глубине через камеру, которая им необходима для обнаружения этих плоскостей. Удаление этого шага не ускорит процесс, просто оставит пользователя без каких-либо инструкций.

Без улучшений моделей обнаружения базовой плоскости я бы не ожидал, что есть способ сделать это быстрее. Лучшее, что мы можем сделать, - это использовать толчки UX, которые побуждают пользователя более эффективно перемещать телефон в поперечном направлении.

0 голосов
/ 08 апреля 2019

Ускорить обнаружение самолета в ARCore довольно просто. Вот фрагмент кода:

class MainActivity : AppCompatActivity() {

    lateinit var arFrag: ArFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_ux)

        arFrag = supportFragmentManager.findFragmentById(R.id.ux_fragment) as ArFragment
        arFrag.planeDiscoveryController.hide()
        arFrag.planeDiscoveryController.setInstructionView(null)
        arFrag.arSceneView.planeRenderer.isEnabled = false
        arFrag.arSceneView.scene.setOnUpdateListener(::onFrame)
    }

    // ........................................................
}

Надеюсь, это поможет.

0 голосов
/ 03 октября 2018

Чтобы скрыть анимацию, которая показывает пользователям, как они должны двигать свой телефон используйте

 arFragment.planeDiscoveryController.hide()
 arFragment.planeDiscoveryController.setInstructionView(null)
...