Сцена и геолокация - PullRequest
       6

Сцена и геолокация

0 голосов
/ 20 мая 2018

Используя ARCore и Sceneform, я пытаюсь добавить портрет на вертикальной поверхности (которая представляет собой стену). В настоящее время я использую ViewRenderer, чтобы сделать это из библиотеки Sceneform ... все работает отлично, но теперь я сталкиваюсь с 2 проблемами:

Первая проблема заключалась в том, что ViewRenderer будет отображать представление Android в 3D, поэтому мне пришлось повернуть узел на его правый вектор на 90 градусов, чтобы он выпал на стену ... это работает, но теперь моя вторая проблема заключается в том, что мне нуженпортрет, чтобы всегда быть прямо с гравитацией Земли.

Как можно было бы достичь этого?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

После долгих исследований я обнаружил, что лучшее решение сейчас здесь .

Но это решение было бы идеальным, если бы вы применили небольшую нормализацию данных датчика, чтобы она нечасто прыгаю.

0 голосов
/ 24 мая 2018

Возможно, вы захотите вызвать Pose.extractTranslation () (https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation()) при создании Якоря для вашего объекта. Это удаляет вращающуюся часть из Позы, которая добавляется, когда ARCore обрабатывает событие касания. С https://developers.google.com/ar/reference/java/com/google/ar/core/Session#createAnchor(com.google.ar.core.Pose) Вы можете создать новый Якорь из этой позы.

Если у вас есть Арфрагмент, он будет выглядеть так:

arFragment?.setOnTapArPlaneListener { hitResult, plane, motionEvent ->
        val arSession = arFragment.arSceneView.session
        val hitPose = hitResult.hitPose
        val poseWithoutRotation = hitPose.extractTranslation()
        val anchor = arSession.createAnchor(poseWithoutRotation)
        val anchorNode = AnchorNode(anchor)
        ...
...