将.stl文件转化为.dae并动态加载到SceneKit显示(ios中显示3d模型)

本文介绍了如何在iOS应用中使用SceneKit框架显示3D模型,特别是从.stl转换为.dae格式,并在运行时动态加载。通过Blender转换模型,然后在iOS项目中创建SCNSceneSource,利用AFNetworking和SSZipArchive下载、解压模型文件,最终加载到场景中显示。

      ios8之后苹果推出了一个3D模型渲染框架。SceneKit。但是国内针对这方面的教程并不是很多。前两天搞了一下也是一头雾水,终于把最基础的内容搞明白了之后,写下这篇随笔作为cnblogs的开篇,希望能一直写下去。

  SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过。这篇文章只针对.dae模型写。

  首先如果是希望加载一个已有的,不需要程序在运行的时候动态添加的dae模型。那么我们可以直接新建一个game类型的工程。在选项中选择SceneKit,在程序中加载自带模型的那句话中将模型名称替换即可。本文主要讲一下如何导出dae模型,并在server端动态下载并显示。

  首先我们手中有一个.stl或者其他的模型文件,将模型文件转换成.dae文件我使用Blender。

  (1)在Blender中新建场景

  (2)在右上侧栏中将自动生成的Cube、Camera等3个物体删掉

  (3)导入我们已有的模型文件

  (4)调整我们的模型文件的方向、大小

  (5)在右上侧栏更改模型文件及子文件的名字为你要导出的dae文件的名字(这一步很重要!)

  (6)在左侧栏中Edit Options中点击Smooth

  (7)File->export->dae

  (8)在接下来的页面中,我们选择导出的位置和文件的名字,并且在左侧选项Texture中选择include material texture(同样重要!)

  接下来我们在桌面上新建一个文件夹,暂时起名为model,更改后缀为.scnassets,将我们生成好的模型文件拷贝进去。SceneKit对于动态添加文件夹写了两个脚本。不太清楚作用原理是什么,以后再研究吧。暂时知道怎么用就行。将copySceneKitAssets、scntool文件拷贝到model.scnassets所在的目录下,进入终端并cd到该目录下,运行

1 ./copySceneKitAssets model.scnassets -o model-o.scnassets

如果终端没有报错,并且生成了model-o.scnassets,则代表运行成功。

  接下来我们把生成的model-o.scnassets文件打包成zip文件,目的是为了能让iPhone客户端下载的时候文件更小。

  打包好了之后上传至服务器即可。

  两个可执行文件下载链接  http://download.youkuaiyun.com/detail/u013588047/8937773  

 

  接下来是重头戏,如何在程序中下载,解压,并显示呢。

  下载解压我使用了两个开源框架 AFNetworking 和 SSZipArchive ,朋友们可以自行查阅使用方法。

  一步一步来,先是下载,解压

 1 - (void)downloadZip {
 2     
 3     NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
 4     AFURLSessionManager *manag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值