在ARKit的苹果示例代码中,他们提供了一个从Models.scnassets加载Scn文件的VirtualObject类。
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)中?我在这部分呆了几天,如果有人能帮我,我会很感激的。
发布于 2022-05-20 13:18:06
您可以将其存储在文件管理器中,并从那里获取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
}https://stackoverflow.com/questions/72318843
复制相似问题