天道酬勤,学无止境

aranchor

检查 ARReferenceImage 是否在相机视图中不再可见(Check whether the ARReferenceImage is no longer visible in the camera's view)

问题 我想检查 ARReferenceImage 是否在相机视图中不再可见。 目前我可以检查图像的节点是否在相机的视图中,但是当 ARReferenceImage 被另一个图像覆盖或图像被删除时,该节点在相机的视图中仍然可见。 func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { guard let node = self.currentImageNode else { return } if let pointOfView = sceneView.pointOfView { let isVisible = sceneView.isNode(node, insideFrustumOf: pointOfView) print("Is node visible: \(isVisible)") } } 所以我需要检查图像是否不再可见,而不是图像的节点可见性。 但我不知道这是否可能。 第一个屏幕截图显示了在找到下面的图像时添加的三个框。 当找到的图像被覆盖时(见截图 2),我想删除这些框。 回答1 我设法解决了这个问题! 使用了一些Maybe1 的代码和他的概念来解决问题,但方式不同。 以下代码行仍然用于重新激活图像识别。 // Delete anchor from the

2021-10-22 18:44:32    分类:技术分享    swift   xcode   scenekit   arkit   aranchor

SceneKit 节点不会随着场景的根节点改变位置(SceneKit nodes aren't changing position with scene's root node)

问题 我正在使用带有 ARKit 的 SceneKit,现在有一个简单的应用程序,我点击屏幕,它会向我的场景添加一个 ARAnchor 和一个 SCNNode。 在某些时候,我会想要移动整个场景,所以我尝试更改sceneView.scene.rootNode.position.x += 10来测试这一点。 如果我在任何特定节点上调用它,该节点确实会适当移动。 但是在rootNode上调用它,没有任何反应,我希望每个子节点(即场景中的每个节点)都随之移动。 为什么我的其他节点没有适当移动,我可以做些什么来解决这个问题? 还是我在想这个错误? 回答1 根据 SCNScene.rootNode 的文档: 您不应修改根节点的transform属性。 根节点定义了世界坐标系的原点——所有其他测量都与它相关。 因此,改变它的位置、方向、比例或其变换的任何其他方面是没有意义的(并且通常是有问题的)。 如果要移动 SceneKit 场景中的所有内容,请创建一个新节点以包含所有其他内容,并更改该节点的变换。 (对于由ARSCNView添加的节点,您不能这样做,因为 ARKit 会生成根节点的直接子节点,但重点是将它们定位在世界空间中。)

2021-10-15 23:36:18    分类:技术分享    ios   scenekit   scnnode   arkit   aranchor

SceneKit nodes aren't changing position with scene's root node

I'm using SceneKit with ARKit, and right now have a simple app where I tap on the screen and it adds an ARAnchor and a SCNNode to my scene. At some point, I'm going to want to move the entire scene, so I tried changing sceneView.scene.rootNode.position.x += 10 to test this out. If I call this on any particular node, that node does move appropriately. But calling this on rootNode, nothing happens, where I'd expect every child node (which is every node in the scene) to move along with it. Why are my other nodes not moving appropriately, and is there something I can do to fix this? Or am I

2021-06-03 17:44:41    分类:问答    ios   scenekit   scnnode   arkit   aranchor

Check whether the ARReferenceImage is no longer visible in the camera's view

I would like to check whether the ARReferenceImage is no longer visible in the camera's view. At the moment I can check if the image's node is in the camera's view, but this node is still visible in the camera's view when the ARReferenceImage is covered with another image or when the image is removed. func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { guard let node = self.currentImageNode else { return } if let pointOfView = sceneView.pointOfView { let isVisible = sceneView.isNode(node, insideFrustumOf: pointOfView) print("Is node visible: \(isVisible)") } } So I

2021-05-16 04:14:00    分类:问答    swift   xcode   scenekit   arkit   aranchor

Adding 3D object to ARGeoAnchor

Please forgive me if this question is not that great. I've hit a bit of a road block on Apple's documentation of ARGeoAnchor. Currently ARGeoAnchor just shows a blue dot in the AR Scene View. I'm trying to show any 3d rendereing or object instead. My code: let coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lng) let geoAnchor = ARGeoAnchor(name: "Point 1", coordinate: coordinate) let boxGeometry = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0) let cube = SCNNode(geometry: boxGeometry) geoAnchor.scene.rootNode.addChildNode(cube) self.addGeoAnchor(geoAnchor) The

2021-04-21 08:16:21    分类:问答    swift   augmented-reality   scenekit   arkit   aranchor