Отображение предварительного просмотра камеры в AR-среде с использованием сцены - PullRequest
0 голосов
/ 07 сентября 2018

Я пытался поэкспериментировать с ARCore и Scenefrom SDK, создав простое приложение, в котором пользователь может коснуться пространства AR, чтобы разместить виртуальное зеркало, в котором он может видеть себя в своей среде.

То, что я сделал до сих пор, - это попытка использовать API-интерфейс Camera2 для захвата изображения с фронтальной камеры для показа на SurfaceView или TextureView и загрузки этого вида в среду AR с помощью ViewRenderable, но у меня ничего не получилось в предварительном просмотре в AR.

Поскольку я не очень знаком с Camera2 API, я также попробовал использовать библиотеку CameraView от Google . Как и раньше, я загрузил это представление в AR с помощью ViewRenderable и вызвал его методы #start() и #stop() в жизненном цикле узла onActivated() и onDeactivated() соответственно.

import com.google.android.cameraview.CameraView

private lateinit var mirrorRenderable: ViewRenderable
private lateinit var cameraView: CameraView

// During onCreate()
ViewRenderable.builder()
    .setView(this, R.layout.view_mirror)
    .build()
    .thenAccept {
        mirrorRenderable = it
        cameraView = it.view.findViewById(R.id.camera_view)
    }

// Upon tapping AR scene
val mirrorNode = Node()
with (mirrorNode) {
    renderable = mirrorRenderable
    addLifecycleListener(object : Node.LifecycleListener {
        override fun onActivated(node: Node) {
            cameraView.start()
        }

        override fun onUpdated(node: Node, frameTime: FrameTime) {}

        override fun onDeactivated(node: Node) {
            cameraView.stop()
        }
    })
}

Все же безуспешно.

Q1: Я что-то пропустил во фрагменте выше?

Q2: Разве мы не можем использовать SurfaceView и TextureView в AR, используя ViewRenderable, как и другие 2D-представления Android?

Так как я нашел что-то под названием ExternalTexture в Scenefrom SDK, где он содержит экземпляры Surface и SurfaceTexture для использования в среде AR. С этим открытием, кажется, он поддерживает мой Q2 , и кажется, что я неправильно понял API ViewRenderable Sceneform в начале, где я думал, что он может визуализировать любой 2D-вид Android в среде AR, как то, что может делать в Activity или Fragment.

Если это так, то

Q3: как я могу использовать это ExternalTexture для выполнения моего требования?

например. Если я загружаю предварительный просмотр камеры в Surface экземпляр ExternalTexture, я не могу найти способ добавить это в среду AR.

Я не могу найти много примеров для этого, я был бы признателен, если бы вы могли поделиться ими, если таковые имеются.

...