在 iOS 上的 SceneKit 中导入 3d 模型

ZHA*_*ida 5 3d ios scenekit swift swift3

从 URL 导入 .obj 文件并将其转换为 SCNNode 时出现问题

这是代码(swift3):

    let url = URL.init(string: "https://cloud.box.com/shared/static/ock9d81kakj91dz1x4ea.obj")
    let asset = MDLAsset(url: url! as URL)
    let object = asset.object(at: 0)
    let node = SCNNode(mdlObject: object)
Run Code Online (Sandbox Code Playgroud)

但是当我运行项目时,控制台显示:

Could not open OBJ file
Run Code Online (Sandbox Code Playgroud)

如何处理?

Hal*_*ler 4

我认为您的 OBJ 文件超出了某些内部 iOS 限制。请在https://bugreport.apple.com提交报告。

这个稍微修改过的代码版本可以在 macOS Playground (Xcode 8.0) 中完美运行。但在 iOS 游乐场中,我在控制台中看到相同的“无法打开 OBJ 文件”。

import SceneKit
import ModelIO
import SceneKit.ModelIO

if let url = URL.init(string: "https://cloud.box.com/shared/static/ock9d81kakj91dz1x4ea.obj") {
    let asset = MDLAsset(url: url)
    print(asset)
    let object = asset.object(at: 0)
    print(object)
    let node = SCNNode.init(mdlObject: object)
    print(node)
}
Run Code Online (Sandbox Code Playgroud)

我能够使用 Xcode 下载并打开 OBJ 文件。然后在场景编辑器中,我将其转换为 SCN 格式。这给了我一个 .SCN 文件,可以嵌入到 iOS 项目中并用 SCNScene 打开(就像著名的旋转宇宙飞船)。因此,如果您可以接受在 iOS 应用程序中嵌入静态文件,那么这是一种获取模型的方法。但如果您需要动态加载模型,那么它就行不通了。