我正在为我的应用程序使用ARKit,我尝试从web-server动态加载.scn文件
这是我的代码的一部分
let url = URL(string: "http://192.168.0.31:1234/5a27e09cbad20a7a03ad5d80/box/box.scn")
if let objectScene = try? SCNScene(url: url!, options: [.overrideAssetURLs: true]) {
print("load success")
let node = SCNNode()
for childNode in objectScene.rootNode.childNodes {
node.addChildNode(childNode)
}
sceneView.scene.rootNode.addChildNode(node)
} else {
print("error loading")
}
此处box.scn
包含纹理。我收到了一个错误
加载失败:C3DImage 0x1c00f6f80 src:file:///var/containers/Bundle/Application/110F7AB6-00F8-4E5B-B843-46551A23CB7F/ar.app/maps/CMU_Split_Face_Running_200x400_bump.jpg [0.000000x0.000000]
为什么Scenekit会尝试从本地文件加载此纹理? 我该如何解决?
答案 0 :(得分:2)
您应该下载文件及其纹理,然后加载场景。请注意,.scn文件和纹理应位于同一目录中,除非您要添加一些加载选项。
从服务器下载带有纹理的.scn文件后,我使用此代码显示对象:
do {
let scene = try SCNScene(url: URL(fileURLWithPath: "YourDownloadedScnFilePath") , options: nil)
// Set the scene to the view
sceneView.scene = scene
} catch {
print("ERROR loading scene")
}