如何在 Scenekit macOS 应用程序中导入 obj 文件

Sar*_*pta 3 macos .obj 3d-model scenekit swift

我正在尝试使用以下代码从 macOS 应用程序(而非 iOS)上的本地驱动器将 .obj 文件读入 SCNNode:

let url = NSURL(string: objPath!)
let asset = MDLAsset(url: url! as URL)
       
let node = SCNNode(mdlObject: asset.object(at: 0))
node.geometry?.firstMaterial?.diffuse.contents = NSColor.red
        
scnView.scene?.rootNode.addChildNode(node)
Run Code Online (Sandbox Code Playgroud)

objPath 是本地文件夹的正确且绝对路径(不在应用程序构建内部)。但读取时出现“无法打开 OBJ 文件”错误。我只需要访问本地路径。

Jub*_*bei 6

这应该让你在 swift/xcode 10.2+ 中加载 obj/dae 文件:

通过转到文件 --> 新建 --> 文件并从列表中选择“SceneKit Catalog”来创建 scenekit 模型目录。

import SceneKit.ModelIO
Run Code Online (Sandbox Code Playgroud)

然后:

guard let url = Bundle.main.url(forResource: "your_obj_filename", withExtension: "obj", subdirectory: "your_folder.scnassets") 
     else { fatalError("Failed to find model file.") }

let asset = MDLAsset(url:url)
guard let object = asset.object(at: 0) as? MDLMesh 
     else { fatalError("Failed to get mesh from asset.") }

let newNode  = SCNNode(mdlObject: object)
Run Code Online (Sandbox Code Playgroud)