Get an URL from SCNScene



在apple的ARKit示例代码中,他们提供了一个VirtualObject类,用于从Models.scnassets加载Scn文件。

static let availableObjects: [VirtualObject] = {
let modelsURL = Bundle.main.url(forResource: "Models.scnassets", withExtension: nil)!
let fileEnumerator = FileManager().enumerator(at: modelsURL, includingPropertiesForKeys: [])!
return fileEnumerator.compactMap { element in
let url = element as! URL
guard url.pathExtension == "scn" && !url.path.contains("lighting") else { return nil }
return VirtualObject(url: url)
}
}()

假设我有一个从服务器下载的SCNScene,第一个问题是,这个SCNScene类似于scn文件?如果是,我如何将此SCNScene添加到上述函数中,并获得其URL以在返回VirtualObject(url: url)中添加它?我在这部分卡住了好几天,如果有人能帮助我,我将不胜感激。

您可以将其存储在文件管理器中并从中获取url

如果场景是你的SCNScene:

static let availableObjects: [VirtualObject] = {

var virtualObjects: [VirtualObject] = []
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = paths.appendingPathComponent("chair.scn")

scene.write(to: url, options: nil, delegate: nil) { float, error, pointer in
if let error = error {
print(error.localizedDescription)
return
}
}

if let objects = VirtualObject(url: url) {
virtualObjects.append(objects)
}
return virtualObjects
}

最新更新