gpt4 book ai didi

swift - 如何使 UILabel 在未跟踪图像时出现在屏幕上,并在跟踪图像时消失

转载 作者:行者123 更新时间:2023-11-30 10:54:29 26 4
gpt4 key购买 nike

我正在使用 ARKit 制作一个图像识别应用程序,用户将相机指向空间中的几个不同图像,视频将在这些图像上播放。我创建了带有消息的 UILabel 以便向用户提供说明。当用户第一次打开应用程序时,我想向他们显示一条消息,告诉他们将相机对准图像。每当相机跟踪图像时,我希望 UILabel 消失。

在我的代码中,我得到了它,当跟踪图像时,我可以使标签消失,但是一旦我不再跟踪图像,我就无法让它重新出现。

extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor:
ARAnchor) -> SCNNode? {
let node = SCNNode()

//Show video overlayed to image
if let imageAnchor = anchor as? ARImageAnchor{
DispatchQueue.main.async { self.messageView?.isHidden =
true }
let plane = SCNPlane(width:
imageAnchor.referenceImage.physicalSize.width, height:
imageAnchor.referenceImage.physicalSize.height)

//Create Plane
switch imageAnchor.referenceImage.name!{
case "slaveAuction":
//Set AVPlayer as the planes texture and play
plane.firstMaterial?.diffuse.contents =
self.slaveAuction
self.slaveAuction.play()
case "columbus":
plane.firstMaterial?.diffuse.contents =
self.columbus
self.columbus.play()
case "isabellasCourt":
plane.firstMaterial?.diffuse.contents =
self.isabellasCourt
self.isabellasCourt.play()
case "hawksbell":
plane.firstMaterial?.diffuse.contents =
self.hawksbell
self.hawksbell.play()
default:
print("Images not found")
}

let planeNode = SCNNode(geometry: plane)

// Rotate the plane to match the anchor
planeNode.eulerAngles.x = -.pi/2

// Add plane node to parent
node.addChildNode(planeNode)
}

return node
}

}

我需要帮助,以便在不跟踪图像时显示消息 View 。

最佳答案

使你的planeNode类变量。并检查您的节点是否每帧都可见。

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
if let pointOfView = sceneView.pointOfView, planeNode != nil {
let isMaybeVisible = sceneView.isNode(planeNode, insideFrustumOf: pointOfView)
DispatchQueue.main.async {
if isMaybeVisible{
self.messageView.isHidden = true
}else{
self.messageView.isHidden = false
}
}
}
}

并参见 isNode(_:insideFrustumOf:)

关于swift - 如何使 UILabel 在未跟踪图像时出现在屏幕上,并在跟踪图像时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118381/

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