ARCore场景样例项目“ hellosceneform”非常酷,并且运行良好。
问题是移动电话以在其上放置锚点的表面的要求。太慢了。
我的应用程序不需要在垂直平面(墙壁)上显示任何内容,而仅在地板上显示任何内容。无论如何,我可以跳过“移动电话”步骤或至少加快速度吗?
我尝试过:
session.getConfig().setPlaneFindingMode(Config.PlaneFindingMode.HORIZONTAL);
认为,如果我不再需要查找垂直平面,那么一切都会更快。....看起来不够快。
谢谢!
答案 0 :(得分:1)
隐藏动画,该动画向用户显示如何移动手机 使用
arFragment.planeDiscoveryController.hide()
arFragment.planeDiscoveryController.setInstructionView(null)
答案 1 :(得分:0)
不幸的是,该框架受(用于读取)启用的计算机视觉模型(用于检测平面)的限制。平面发现控制器(即“移动电话”步骤)是对用户的推动,可以通过照相机为模型提供他们需要检测这些平面的深度信息。删除此步骤不会加快流程,只会使用户无须任何说明。
在没有改进核心平面检测模型的情况下,我不希望有一种方法可以使其更快。我们能做的最好的事情就是提出UX微调,鼓励用户更有效地横向移动手机。
答案 2 :(得分: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)
}
// ........................................................
}
希望这会有所帮助。