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

查看:405
本文介绍了如何将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类已经桥接。我正在做导入ModelIO 这让我可以访问所有的ModelIO类,同样导入SceneKit 这给了我SceneKit类,但是,我缺少导入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)

这很简单......

Easy as that...

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

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