将 .scn 文件从带有纹理的 URL 导入场景

2024-02-26

我正在为我的应用程序使用 ARKit,并尝试从网络服务器动态加载 .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")
    }

here 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.000 000]

为什么 Scenekit 尝试从本地文件加载此纹理? 我该如何修复它?


您应该下载该文件及其纹理,然后加载场景。请注意,.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")
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 .scn 文件从带有纹理的 URL 导入场景 的相关文章

随机推荐