本文介绍了如何将 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 资产.

但我不确定如何将缓冲区从 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 05:33
查看更多