【问题标题】:Detecting object's distance away from camera in augmented reality (ARKit, etc.)?在增强现实(ARKit 等)中检测物体与相机的距离?
【发布时间】:2018-05-08 18:24:41
【问题描述】:

是否有可能在 ARKit 或其他类似库中以任何精度或精度检测与对象的距离?

如果大小和范围在两个不同的真实世界场景类别中,则该距离值的准确度或精度有哪些限制或容差:

  1. 垂直高度为 1/8" 到 6",距离相机 6" 到 24"
  2. 垂直高度为 5' 到 20',距离相机 5' 到 20'

例如,对于上面的 1:我可以将咖啡杯或车钥匙放在一臂远的地方,并在一定精度范围内检测它的距离吗?对于上面的2:我可以站在一棵树前,检测树有多远吗?

如果距离(Z维度)在高精度内是可能的,那是否意味着它的垂直高度(Y维度)可以在某个比例精度内测量或计算?

要对此进行测试,请对核心代码元素提出建议?

【问题讨论】:

    标签: augmented-reality arkit gauge


    【解决方案1】:

    这当然可以通过 ARKit 实现。

    当 ARKit 运行时,它会在环境中找到特征。这些是它可以重复识别的点,并用于确定相机的“姿势”。

    这些特征点在现实世界空间中具有[x, y, z] 位置(相对于相机)。如果您点击一个屏幕,ARKit 可以为您提供您点击的最近特征点的 3D 姿势。

    要获取对象的位置,您必须:

    1. 使用手势识别器检测屏幕上的点击
    2. 找到被点击的特征点
    3. 获取此特征点的位置

    以下功能对你很有用。

    viewDidLoad

    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector( self.handleSingleTap ))
    self.sceneView.addGestureRecognizer(gestureRecognizer)
    

    与:

    @objc func handleSingleTap ( recogniser: UIGestureRecognizer) {
        let touchPosition = recogniser.location(in: self.sceneView)
    
        let featureHitTestResult = self.sceneView.hitTest(touchPosition, types: .featurePoint)
    
        if !featureHitTestResult.isEmpty {
            hitFeature = featureHitTestResult.first
        }
    }
    

    然后您可以从hitFeature 获取位置并使用它来确定与当前相机位置的距离。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      相关资源
      最近更新 更多