gpt4 book ai didi

ios - SCNNode 未显示在 ARFrame 的 captureImage 中

转载 作者:行者123 更新时间:2023-12-01 16:20:31 24 4
gpt4 key购买 nike

我在 ARSCNView 中添加了一个 SCNNode:

 func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
guard let faceAnchor = anchor as? ARFaceAnchor else { return nil }
guard let device = sceneView.device else { return nil }
guard let faceGeometry = ARSCNFaceGeometry(device: device, fillMesh: true) else { return nil }

let faceNode = FaceNode(faceGeometry)

// Node is a custom SCNNode class
let glassesNode = Node(image: UIImage(named: "glasses")!, position: .glasses, anchor: faceAnchor)
faceNode.addChildNode(glassesNode)

return faceNode
}

然后我使用这个委托(delegate)函数为每个帧添加一个过滤器。问题是添加的 SCNNode: glassesNodeframe.capturedImage 中无法识别.因此,没有过滤器应用于 SCNNode,而是应用于其他所有内容。
 func session(_ session: ARSession, didUpdate frame: ARFrame) {

guard let image = CIImage(cvImageBuffer: frame.capturedImage)) else { return }

let filterImage = setFilter(image)

sceneView.scene.background.contents = context.createCGImage(filterImage, from: filterImage.extent)
}

唯一的解决方法是使用 snapshot() ARSCNView 的属性。哪个效果很好。 SCNNode 被过滤,但屏幕上的 UI 元素延迟太高,这是一个问题。

无论如何我可以使用 ARFrame 的 capturedImage并让它识别 ARSCNView 上的 SCNNode?

最佳答案

使用 capturedImage 是不可能的。 ARFrame 的。 ARKit 本身并不知道您正在使用 SceneKit 来渲染 3D 内容,因此 capturedImage将仅包含相机图像本身。

关于ios - SCNNode 未显示在 ARFrame 的 captureImage 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com