本文介绍了获取 ARKIT 中聚焦相机的所有 ARAnchors的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当应用程序首先启动时,在一面墙上检测到垂直表面,而不是相机聚焦到第二面墙,在第二面墙上检测到另一个表面.第一面墙现在对 ARCamera 不再可见,但此代码为我提供了第一面墙的锚点.但我需要第二面墙的锚点,现在在相机中可见/聚焦.
if let anchor = sceneView.session.currentFrame?.anchors.first {
let node = sceneView.node(for: anchor)
addNode(position: SCNVector3Zero, anchorNode: node)
} else {
debugPrint("anchor node is nil")
}
推荐答案
为了获得当前处于视点中的节点,您可以执行以下操作:
In order to get the node that is currently is in point of view you can do something like this:
var targettedAnchorNode: SCNNode?
if let anchors = sceneView.session.currentFrame?.anchors {
for anchor in anchors {
if let anchorNode = sceneView.node(for: anchor), let pointOfView = sceneView.pointOfView, sceneView.isNode(anchorNode, insideFrustumOf: pointOfView) {
targettedAnchorNode = anchorNode
break
}
}
if let targettedAnchorNode = targettedAnchorNode {
addNode(position: SCNVector3Zero, anchorNode: targettedAnchorNode)
} else {
debugPrint("Targetted node not found")
}
} else {
debugPrint("Anchors not found")
}
如果你想得到所有的焦点节点,把它们收集到一个满足指定条件的数组中
If you would like to get all focused nodes, collect them in an array satisfying specified condition
祝你好运!
这篇关于获取 ARKIT 中聚焦相机的所有 ARAnchors的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!