如何将 Wavefront OBJ 文件转换为具有模型 I/O 的 SCNNode [英] How do you convert Wavefront OBJ file to an SCNNode with Model I/O

查看:23
本文介绍了如何将 Wavefront OBJ 文件转换为具有模型 I/O 的 SCNNode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从 URL 导入了一个 Wavefront OBJ 文件,现在我想将它插入到我的 iOS 9 应用程序(在 Swift 中)上的场景 (SceneKit) 中.到目前为止,我所做的是:

I've imported a Wavefront OBJ file from a URL and now I'd like to insert it into my scene (SceneKit) on my iOS 9 app (in Swift). What I've done so far is:

let asset = MDLAsset(URL: localFileUrl)
print("count = (asset.count)")  // 1

任何将其转换为 SCNNode 的帮助将不胜感激.根据 Apple 的文档:

Any help converting this to a SCNNode would be appreciated. According to to Apple's docs:

模型 I/O 可以与 MetalKit、GLKit 和 SceneKit 框架共享数据缓冲区,以帮助您高效地加载、处理和渲染 3D 资产.

Model I/O can share data buffers with the MetalKit, GLKit, and SceneKit frameworks to help you load, process, and render 3D assets efficiently.

但我不确定如何将缓冲区从 MDLAsset 获取到 SCNNode.

But I'm not sure how to get buffer from an MDLAsset into a SCNNode.

推荐答案

事实证明这很容易,因为许多 ModelIO 类已经桥接.我在做 import ModelIO 这让我可以访问所有 ModelIO 类,同样的 import SceneKit 给了我 SceneKit 类,但是,我错过了 import SceneKit.ModelIO 为 ModelIO 引入 SceneKit 支持.

Turns out this quite easy as many of the ModelIO classes already bridge. I was doing import ModelIO which gave me access to all the ModelIO classes and likewise import SceneKit which gave me the SceneKit classes, but, I was missing import SceneKit.ModelIO to bring in the SceneKit support for ModelIO.

let url = NSURL(string: "url-to-your-obj-here")
let asset = MDLAsset(URL: url!)
let object = asset.objectAtIndex(0)
let node = SCNNode(MDLObject: object)

就这么简单...

这篇关于如何将 Wavefront OBJ 文件转换为具有模型 I/O 的 SCNNode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆