6

ARCore sceneform 示例项目“hellosceneform”很酷并且运行良好。

问题是需要移动电话以获得放置锚的表面。它太慢了。

我的应用程序不需要任何东西出现在垂直平面(墙壁)上,而只需要出现在地板上。无论如何我可以跳过“移动手机”步骤或至少加快速度吗?

我试过了:

session.getConfig().setPlaneFindingMode(Config.PlaneFindingMode.HORIZONTAL);

认为如果我不再需要寻找垂直平面,那么一切都会更快......看起来不够快。

谢谢!

4

3 回答 3

4

不幸的是,该框架受到其用于检测平面的计算机视觉模型的限制(阅读:启用)。平面发现控制器(即“移动手机”步骤)有助于用户通过相机向模型提供检测这些平面所需的深度信息。删除此步骤不会加快进程,只会让用户没有任何指示。

如果不对核心平面检测模型进行改进,我不会期望有一种方法可以使这更快。我们能做的最好的事情就是提出用户体验微调,鼓励用户更有效地横向移动手机。

于 2018-11-15T03:45:54.970 回答
0

在 ARCore 中加速平面检测非常容易。这是一个代码片段:

class MainActivity : AppCompatActivity() {

    lateinit var arFrag: ArFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_ux)

        arFrag = supportFragmentManager.findFragmentById(R.id.ux_fragment) as ArFragment
        arFrag.planeDiscoveryController.hide()
        arFrag.planeDiscoveryController.setInstructionView(null)
        arFrag.arSceneView.planeRenderer.isEnabled = false
        arFrag.arSceneView.scene.setOnUpdateListener(::onFrame)
    }

    // ........................................................
}

希望这可以帮助。

于 2019-04-08T14:09:32.160 回答
0

要隐藏向用户展示他们应该如何移动手机的动画,请使用

 arFragment.planeDiscoveryController.hide()
 arFragment.planeDiscoveryController.setInstructionView(null)
于 2018-10-03T11:14:04.853 回答