我怎么知道一张脸离开现场的时间?

时间:2018-03-15 18:21:41

标签: ios arkit object-recognition

我正在使用ARFaceTrackingConfiguration的ARKit。当我看着相机时它会检测到我的脸,这很棒。但是,当我离开相机时,我没有得到renderer:didRemoveNode:forAnchor:

我想做的是检测脸部何时消失,以便我可以重置会话并开始寻找(可能)新面孔。

编辑:似乎我可以这样做:

- (void)renderer:(id<SCNSceneRenderer>)renderer updateAtTime:(NSTimeInterval)time {
  SCNVector3 location = [renderer projectPoint:self.faceNode.position];
  CGPoint point = CGPointMake(round(location.x), round(location.y));
  BOOL isNodeVisible = CGRectContainsPoint(self.view.frame, point);
  // ... do stuff ...
}

虽然我不确定这是否正确。

1 个答案:

答案 0 :(得分:0)

我没有iPhoneX因此无法准确测试。

但我相信您可以使用isNodeInsideFrustum:withPointOfView方法:

  

返回一个布尔值,指示从指定的视点是否可以看到节点。

在一个简单的测试中,我创建了一个名为SCNNode的{​​{1}}。

然后使用委托回调:

faceNode

我能够确定节点是否在相机的视野中,例如:

renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)

希望这对你目前的情况有所帮助....