在增强现实(ARKit等)中检测物体与相机的距离?

时间:2017-11-24 18:14:55

标签: augmented-reality arkit gauge

是否可以在ARKit或其他类似的库中以任何精度或精度检测距物体的距离?

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

  1. 垂直高度为1/8"至6"并且是6"至24"远离相机
  2. 垂直高度为5'到20'并且是5'到20'远离相机
  3. 例如,对于上面的1:我可以拿着咖啡杯或车钥匙远离手臂长度并检测它在一定精度范围内有多远?对于上面的2:我可以站在树前,检测树有多远吗?

    如果在高精度范围内可以实现距离(Z尺寸),那么这是否意味着它的垂直高度(Y尺寸)可以在某个比例精度内测量或计算?

    为了测试这个,关于核心代码元素的建议?

1 个答案:

答案 0 :(得分:0)

使用ARKit当然可以做到这一点。

ARKit运行时会在环境中查找功能。这些是它可以反复识别的点,用于确定相机的“姿势”。

这些特征点在现实空间(相对于相机)中的位置为updater.process(req.body, { flashErrors: true, fields: 'name, email, phone, enquiryType, message', errorMessage: 'There was a problem submitting your enquiry:', }, function (err) { if (err) { locals.validationErrors = err.error; console.log(err); } else { locals.enquirySubmitted = true; } next(); }); 。如果您点击其中一个,则ARKit屏幕可以为您提供您所点击的最近特征点的3D姿势。

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

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

以下功能将对您有用。

[x, y, z]

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 } } 获取位置,并用它来确定距当前相机位置的距离。