You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARCore单对象创建后停止平面识别并隐藏识别范围的实现求助

嘿,我来帮你搞定这个问题!你已经完成了最核心的部分,剩下的停止平面识别和隐藏识别区域其实很直接,分两步就能实现:

1. 停止ARCore的平面识别功能

这部分主要是关闭ARCore检测新平面的能力,不同开发环境的实现方式略有不同:

Unity环境下的实现

ARCore在Unity中是通过ARPlaneManager组件管理平面识别的,创建完对象后只需要两步:

  • 禁用ARPlaneManager组件,停止新平面的检测
  • 遍历所有已识别的平面,隐藏它们的可视化网格

示例代码:

// 提前获取ARPlaneManager的引用(可以在Start()里赋值)
private ARPlaneManager _planeManager;

// 在你创建对象的方法中,完成对象创建后执行以下代码:
_planeManager.enabled = false;

// 隐藏所有已识别的平面
foreach (var plane in _planeManager.trackables)
{
    plane.gameObject.SetActive(false);
}

Android原生(Kotlin/Java)环境下的实现

原生ARCore通过Session的配置来控制平面识别模式,同时需要隐藏已渲染的平面视图:

  • 修改Session的Config,将平面识别模式设置为禁用
  • 遍历场景中的平面节点,隐藏它们的可视化

Kotlin示例代码:

// 获取ARCore Session和当前配置
val config = session.config
// 关闭平面识别
config.planeFindingMode = Config.PlaneFindingMode.DISABLED
// 重新配置Session
session.configure(config)

// 隐藏所有已识别的平面(假设使用ArFragment管理场景)
arFragment.arSceneView.scene.children.forEach { node ->
    if (node is PlaneNode) {
        node.isVisible = false
    }
}
2. 额外小提示
  • 执行完上述操作后,相机就不会再检测新的平面,之前显示的平面网格也会完全消失,只保留你创建的对象。
  • 如果之后需要重新开启平面识别,只需要反向操作:Unity中重新启用ARPlaneManager并遍历显示平面;原生环境中把planeFindingMode改回HORIZONTAL_AND_VERTICAL(或你需要的模式),再显示平面节点即可。

内容的提问来源于stack exchange,提问作者user9802048

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:27:51