如何在ARCore / Sceneform中加速平面检测



ARCore sceneform示例项目"hellosceneform"很酷,效果很好。

问题是需要移动手机以获得放置锚点的表面。太慢了。

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

我试过:

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

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

谢谢!

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

如果不改进核心平面检测模型,我不希望有一种方法可以使其更快。我们能做的最好的事情就是提出UX轻推,鼓励用户更有效地横向移动手机。

隐藏向用户显示应如何移动手机的动画 用

arFragment.planeDiscoveryController.hide()
arFragment.planeDiscoveryController.setInstructionView(null)

在 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)
}
// ........................................................
}

希望这有帮助。

最新更新