Я пытался поэкспериментировать с 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.
Я не могу найти много примеров для этого, я был бы признателен, если бы вы могли поделиться ими, если таковые имеются.