【问题标题】:AR Kit 2.0 tracking images from the serverAR Kit 2.0 跟踪来自服务器的图像
【发布时间】:2019-03-09 10:19:59
【问题描述】:

我最近构建了一个有效的 AR 应用程序,它可以使用您自己的照片和文本来创建您自己的自定义 AR 对象。

现在,该应用会生成一个 QR 码并将该 QR 码图像存储在服务器上。我想做一些可以检索这些图像并将它们存储到 AR Resource Group 文件夹中的东西。目前我所做的实际上是下载所有图像,将它们转换为 ARReferenceImage 类型,然后使用这些图像列表运行会话。随着我的应用程序获得更多用户和创作,下载需要更长的时间。

检索和转换所有图像类型的代码

func getAllQRCodes(completion: @escaping CompletionHandler) {
            var downloaded = 0
            let reference = Database.database().reference().child("QR")
            reference.observe(DataEventType.value, with: { (snapshot) in
                let postDict = snapshot.value as? [String : String] ?? [:]
                DispatchQueue.global(qos: .background).async {
                    for (key, value) in postDict {
                        print("downloaded: \(downloaded) / total: \(postDict.count)")
                        let percentage = (Double(downloaded)/Double(postDict.count)) * 100
                        DispatchQueue.main.async {
                            self.qrProgressCircle.startProgress(to: CGFloat(percentage), duration: 1)
                        }
                        if self.downloadURLs.contains(value) == false {
                            self.downloadURLs.insert(value)
                            let qrImage = UIImage(url: URL(string: value))
                            let qrCiImage = CIImage(image: qrImage!)
                            let qrCGImage = self.convertCIImageToCGImage(inputImage: qrCiImage!)
                            let qrARImage = ARReferenceImage(qrCGImage!, orientation: CGImagePropertyOrientation.up, physicalWidth: 0.2)
                            qrARImage.name = key
                            self.ARTrackingImages.insert(qrARImage)
                            downloaded += 1
                        }
                    }
                completion(true)
                }
            })
    }

我的问题是,有没有更好的方法来做到这一点?也许在后台线程上运行它然后不断地重新运行场景视图会话? (这实际上会导致糟糕的用户体验吗?)

【问题讨论】:

    标签: ios swift augmented-reality arkit


    【解决方案1】:

    我实际上不是从服务器下载所有图像,而是首先从会话委托函数 didUpdate 帧检测图像

    从我得到的帧中,我然后进行正确的操作以将图像添加到我的 AR 资源组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多