我正在研究AR项目,我需要同时获取水平和垂直两个表面(包括墙壁)并将Ar对象放置在该表面上。我已经尝试了以下方法来实现这一目标。但是有些方法无法检测墙壁或任何垂直表面。以下代码我已经实现。
扩展ARFragment的自定义ARFragment。
class CustomARFragment : ArFragment() {
override fun getSessionConfiguration(session: Session?): Config {
val config = super.getSessionConfiguration(session)
config.updateMode = Config.UpdateMode.LATEST_CAMERA_IMAGE
config.planeFindingMode = Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
return config
}
}
我扩展了此类,以在我的项目中实现ar。我仍然无法获取垂直平面。
答案 0 :(得分:0)
您是否正在使用最新版本的ARCore?可能尝试更新到1.6.0版以获得最新的改进。另外,您尝试检测哪种类型的垂直表面?我已经成功地检测到了水平和垂直表面(地板,墙壁,天花板),只要该表面有足够的变化来跟踪特征点即可。
答案 1 :(得分:0)
垂直检测真的很差。
您需要海报,橱柜甚至是正在运行的电视。可以区分墙上的点的东西。否则,它会失败。尝试一些分散的便签。
在没有附加深度传感器的情况下,使用标准相机进行垂直单色检测时,AR令人震惊。您可以使用各种技术(从视图中的水平面到色差,从射线到地板)来尝试克服这一问题,但这不是一件容易的事,也不能带来最佳的用户体验。因此,尽管我们所有人都渴望做一些垂直的墙壁检测和AR放置,而又没有很麻烦的解决方法来识别它,但还不存在。
这是Griddyanmics的一篇不错的文章,其中提供了一些很棒的细节。 https://blog.griddynamics.com/how-arkit-and-arcore-recognize-vertical-planes/