1

使用 ARCore 和 Sceneform 我正在尝试在垂直表面(即墙壁)上添加肖像我目前正在使用 ViewRenderer 从 Sceneform 库中执行此操作.. 一切正常,但我现在面临 2 个问题:

第一个问题是 ViewRenderer 将以 3D 呈现 Android 视图,因此我必须将节点在其右矢量上旋转 90 度,使其平展在墙上.. 这可行,但现在我的第二个问题是我需要始终保持肖像直接与地球的重力。

怎么可能做到这一点?

4

2 回答 2

1

在为您的对象创建 Anchor 时,您可能想调用 Pose.extractTranslation() ( https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation() ) . 这会从 ARCore 处理触摸事件时添加的 Pose 中移除旋转部分。使用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)
        ...
于 2018-05-24T05:27:09.083 回答
0

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

但是,如果您对传感器数据进行一些标准化,这样它就不会经常跳来跳去,那么该解决方案将是完美的。

于 2018-05-31T04:39:24.530 回答