场景和地理定位

时间:2018-05-20 02:04:59

标签: arcore sceneform

使用ARCore和Sceneform我正在尝试在垂直表面(墙壁)上添加一个肖像我正在使用ViewRenderer从Sceneform库中执行此操作..所有工作都很完美但我现在面临2个问题:

第一个问题是ViewRenderer将在3D中渲染Android视图,因此我必须将其右侧矢量上的节点旋转90度,以便在墙上展开..这样可行但现在我的第二个问题是我需要这个肖像始终与地球的引力直接对准。

如何才能实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可能希望在为对象创建Anchor时调用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,它将如下所示:

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)
        ...

答案 1 :(得分:0)

经过大量研究,我发现现在最好的解决方案here

但是,如果对传感器数据进行一些标准化处理,那么这个解决方案将是完美的,因此它不会经常跳转。