从Web服务器中加载Collada文件到Scenekit

5
我正在使用SceneKit和Collada文件进行工作。现在,我能够加载art.scnassets文件夹中以及我的项目根目录中的collada文件。但是,当我尝试从本地Web服务器加载文件时,出现错误。有什么原因我不能这样做吗?
let url = NSURL(string: "http://localhost:8888/new.dae")
let scn = try! SCNScene(URL: url!, options: nil)


2016-07-31 17:41:29.537 biOS[3863:254446] SceneKit IO: error, COLLADA files are not supported on this platform.
fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=259 "The document "new.dae" could not be opened." UserInfo={NSURL=http://localhost:8888/new.dae, NSLocalizedDescription=The document "new.dae" could not be opened., NSLocalizedRecoverySuggestion=Collada is not supported by this version of SceneKit}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.8/src/swift/stdlib/public/core/ErrorType.swift, line 54

我的目标是从Web服务器读取Collada文件,然后让用户下载该文件到设备上。我不知道为什么会出现错误。顺便说一句,我进行了文档预览以呈现文件,并且成功地将文件渲染为XML格式。因此,这不是无法访问文件的情况。请帮忙!
3个回答

8

我不能这样做的原因是什么?

很遗憾,是有原因的。

XCode在构建过程中将您的Collada编译为.scn文件。这是一个SceneKit特定的二进制文件格式,这样做可以减小资产文件的大小(Collada文件基于XML),从而提高加载性能。运行在iOS设备上的SceneKit只会加载.scn文件,不会加载Collada文件。

您可以考虑使用ModelIO来加载不属于您应用程序的资源,但是我注意到Collada不是支持的格式之一


0

我发现AssetImportKit框架可以解决这个问题。该框架允许您在运行时(macOS和iOS)直接在SceneKit中导入Assimp支持的文件格式。该库支持:

  • 几何材料(带颜色,嵌入式纹理和外部纹理)
  • 相机和骨骼动画
  • 序列化为.scn格式

0

您也可以像 Xcode 一样使用终端转换您的 dae 文件。 使用 Xcode 构建一个包含 dae 文件的项目,并检查由 Xcode 执行的命令(搜索 scntool)。 相关链接:SceneKit 中的 COLLADA 变换


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接