HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – ARkit – 从SCNScene中的Web服务器URL加载.scn文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为我的应用程序使用ARKit,我尝试从我的web服务器(URL)动态加载.scn文件

这是我的代码的一部分

let urlString = "https://da5645f1.ngrok.io/mug.scn"
        let url = URl.init(String: urlString)
        let request = URLrequest(url: url!)
        let session = URLSession.shared
        let downloadTask = session.downloadTask(with: request,completionHandler: { (LOCATIOn:URL?,response:URLResponse?,error:Error?)
                -> Void in
                print("LOCATIOn:\(String(describing: LOCATIOn))")
                let LOCATIOnPath = LOCATIOn!.path
                let documents:string = NSHomeDirectory() + "/Documents/mug.scn"
                ls = NSHomeDirectory() + "/Documents"
                let fileManager = FileManager.default
                if (fileManager.fileExists(atPath: documents)){
                     try! fileManager.removeItem(atPath: documents)
                }
                try! fileManager.moveItem(atPath: LOCATIOnPath,toPath: documents)
                print("new LOCATIOn:\(documents)")
                let node = SCNNode()
                let scene =  SCNScene(named:"mug.scn",inDirectory: ls)
                let nodess = scene?.rootNode.childNode(withName: "Mug",recursively: truE)
                node.addChildNode(nodess!)
                let nodeArray = scene!.rootNode.childNodes
                for childNode in nodeArray {
                    node.addChildNode(childNode as SCNNodE)
                }
                 self.addChildNode(nodE)
                 self.modelLoaded = true

        })
        downloadTask.resume()

NSLog的:

LOCATIOn:Optional(file:///private/var/mobile/Containers/Data/Application/A1B996D7-ABE9-4000-91DB-2370076198D5/tmp/CFNetworkDownload_duDlwf.tmp)

new LOCATIOn:/var/mobile/Containers/Data/Application/A1B996D7-ABE9-4000-91DB-2370076198D5/Documents/mug.scn

.scn文件下载与上面提到的(新位置)文件路径..但​​当我尝试在SCNScene中使用此下载文件

let scene =  SCNScene(named:"mug.scn",inDirectory: ls)

总是场景值为零.
错误

如何解决这个问题.谢谢

解决方法

关于init?(named:String),文档说:

因为您在主包中没有这样的文件(来自下载),您可以尝试使用以下构造函数

init(url: URL,options: [SCNScenesource.LoadingOption : Any]? = nil)

所以你的代码可能是:

do {
   let documents = "yourValidPath"
   let scene = try SCNScene(url: URL(fileURLWithPath: documents),options: nil)
} catch {}

大佬总结

以上是大佬教程为你收集整理的ios – ARkit – 从SCNScene中的Web服务器URL加载.scn文件全部内容,希望文章能够帮你解决ios – ARkit – 从SCNScene中的Web服务器URL加载.scn文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。