我正在使用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 ...
}
虽然我不确定这是否正确。
答案 0 :(得分:0)
我没有iPhoneX
因此无法准确测试。
但我相信您可以使用isNodeInsideFrustum:withPointOfView
方法:
返回一个布尔值,指示从指定的视点是否可以看到节点。
在一个简单的测试中,我创建了一个名为SCNNode
的{{1}}。
然后使用委托回调:
faceNode
我能够确定节点是否在相机的视野中,例如:
renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)
希望这对你目前的情况有所帮助....