【发布时间】:2020-06-15 06:06:03
【问题描述】:
我是 ARKIT 的新手,我只是想知道有没有办法跟踪 .SCN 文件下载的百分比进度。我曾尝试使用 URL 会话,但无法正常工作。
虽然我的代码运行良好,但如果我的代码完全关闭,请告诉我如何让它变得更好!
private func dowloadModel(){
let url = URL(string: "URL for .SCN")!
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error{
print(error.localizedDescription)
return
}
if let data = data{
print(data)
let documentDirectories = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
if let documentDirectory = documentDirectories.first{
let fileURL = documentDirectory.appendingPathComponent("Food.scn")
let dataNS : NSData? = data as NSData
try! dataNS?.write(to: fileURL, options: .atomic)
let url1 = URL(string: "URL for .jpg overlay")
let data1 = try? Data(contentsOf: url1!) //make sure your image in this url does exist
self.imagesOne = UIImage(data: data1!)
print("Saved!")
}
}
}.resume()
}
这就是我渲染节点的方式:
func addItem2(hitTestResult : ARHitTestResult){
let documentDirectories = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
if let documentDirectory = documentDirectories.first{
let fileURL = documentDirectory.appendingPathComponent("Food.scn")
do{
let scene = try SCNScene(url: fileURL, options: nil)
let node = scene.rootNode.childNode(withName: "Burger", recursively: true)!
let material = SCNMaterial()
material.diffuse.contents = imagesOne
material.diffuse.wrapT = SCNWrapMode.repeat
material.diffuse.wrapS = SCNWrapMode.repeat
material.isDoubleSided = true
let transform = hitTestResult.worldTransform
let thirdColumn = transform.columns.3
node.scale = SCNVector3(x: 0.008, y: 0.008, z: 0.008)
node.pivot = SCNMatrix4MakeTranslation(0, -0.5, 0)
node.position = SCNVector3(thirdColumn.x, thirdColumn.y, thirdColumn.z)
//rotation added
let action = SCNAction.rotateBy(x: 0, y: CGFloat(2 * Double.pi), z: 0, duration: 15)
let repAction = SCNAction.repeatForever(action)
node.runAction(repAction, forKey: "myrotate")
self.sceneView.scene.rootNode.addChildNode(node)
}
catch{
print(error)
}
}
}
【问题讨论】:
-
问题不在于 ARKit 或 SCN 文件。它是关于使用 URLSession 跟踪数据的下载进度。你会在这个问题stackoverflow.com/questions/23987692/… 中找到你需要的所有信息
标签: ios swift nsurlsession nsurlsessiondownloadtask nsurlsessionconfiguration