目前,我正在使用以下代码从 Assets.xcassets 的“AR 资源”加载 ARReferenceImage,
guard let trackingImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else {
print("Missing expected asset catalog resources.")
return
}
configuration.trackingImages = trackingImages
现在,我正在将图像从服务器下载到 iOS 应用程序文档目录中名为“Images”的自定义文件夹。
如何将这些图像用作“跟踪图像”?
最佳答案
为了从默认 ARReference
以外的指定位置加载自定义 ARAssets Folder
图像,您需要使用以下方法创建它们:
init(CGImage, orientation: CGImagePropertyOrientation, physicalWidth: CGFloat)
在这个例子中,我使用的是
ARWorldTrackingConfiguration
但如果使用 ARImageTrackingConfiguration
的原理是一样的。假设您将所有下载的图像存储到 [UIImage] 数组中,例如:
let imagesFromServer: [UIImage] = [UIImage(named: "gitHubIcon")!, UIImage(named: "stackOverflowIcon")!]
然后,您可以使用以下内容将它们转换为
ARReferenceImages
:/// Converts An Array Of [UIImage] Into A Set Of ARReferenceImages
///
/// - Parameter images: [UIImage])
/// - Returns: Set<ARReferenceImage>
func loadedImagesFromDirectoryContents(_ images: [UIImage]) -> Set<ARReferenceImage>{
var index = 0
var customReferenceSet = Set<ARReferenceImage>()
images.forEach { (downloadedImage) in
//1. Convert The UIImage To A CGImage
guard let cgImage = downloadedImage.cgImage else { return }
//2. Get The Width Of The Image
let imageWidth = CGFloat(cgImage.width)
//3. Create A Custom AR Reference Image With A Unique Name
let customARReferenceImage = ARReferenceImage(cgImage, orientation: CGImagePropertyOrientation.up, physicalWidth: imageWidth)
customARReferenceImage.name = "MyCustomARImage\(index)"
//4. Insert The Reference Image Into Our Set
customReferenceSet.insert(customARReferenceImage)
print("ARReference Image == \(customARReferenceImage)")
index += 1
}
//5. Return The Set
return customReferenceSet
}
记住
ARWorldTrackingConfiguration
需要一个 Set<ARReferenceImage>
。然后,您可以像这样初始化您的自定义
configurations detectionImages
: let detectionImages = loadedImagesFromDirectoryContents(imagesFromServer)
configuration.detectionImages = detectionImages
augmentedRealitySession.run(configuration, options: [.resetTracking, .removeExistingAnchors])
希望它为您指明正确的方向......
关于ios - 如何从文档目录加载 ARReferenceImage?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51998613/