美文网首页
【Unity 3D自学笔记二】iOS-SceneKit网络下载模

【Unity 3D自学笔记二】iOS-SceneKit网络下载模

作者: 晴天ccc | 来源:发表于2019-02-12 17:13 被阅读16次

    前言:

    项目需求是:通过服务器动态加载网络下载的3D模型。

    思路流程:

    1、服务器给下载地址

    2、下载得到一个压缩包存入沙盒

    3、解压得到一个obj和jpg文件

    4、模型展示,代码参考上一篇iOS-SceneKit3D引擎展示本地obj模型、


    关键的分割线来了:

    这样看我们几乎没有遇到问题,网络框架使用:AFNetworking  解压框架使用:SSZipArchive,按照流程操作即可。

    但是还是遇到了一系列问题,是必须需要处理的。


     遇到问题:

    加载出来的模型是白色的,没有贴图。

    测试发现在本地的头模可以正常加载贴图,但是网络下载到沙盒的贴图怎么就是无法展示。

    展示头模的代码都是一样的,最后经过排查问题得到解决。

    问题分析:

    上一篇文章的案例中,模型文件是放在Xcode项目里面。这时候Xcode会默认对.scnassets文件夹里的.obj文件做一次优化。

    如果我们通过网络把文件下载到沙盒,然后我们从沙盒里读取,这时候是没有的,所以是获取不到贴图的(详细原因待研究)。

    解决思路:

    把Xcode默认的优化步骤,我们用手动优化一次。

    解决方法:

    1、打开你的Xcode,在 /Contents/Developer/usr/bin/ 路径里找到 copySceneKitAssets 、 scntool 这2个脚本。

    2、在桌面上新建一个文件夹,暂时起名为model,更改后缀为.scnassets 。将copySceneKitAssets、scntool文件拷贝到model.scnassets所在的目录下(也就是桌面)

    4、进入终端并cd到桌面下,运行

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

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

    5、我们拿到model-o.scnassets文件夹,放入Xcode项目工程中。项目运行的时候把Resource下的model-o.scnassets文件拷贝到沙盒根目录(这里压缩包也行,文件夹也行,压缩包可以节约空间。如果压缩包记得多一步解压操作)。

    这里压缩包也行,文件夹也行,压缩包可以节约空间。

    6、通过网络下载头模的压缩包。下载到沙盒的model-o.scnassets路径下面,并展示即可。

    完整总结:

    1、拿到文件,通过终端生成model-o.scnassets文件。

    2、将model-o.scnassets文件拖入Xcode工程里面。

    3、运行程序,将model-o.scnassets从Resource文件夹下拷贝到沙盒。

    4、下载头模数据(一般是压缩包),解压缩之后,放入沙盒的model-o.scnassets目录下。

    5、拿到路径加载头模即可。 

    完整代码:

    点击Github下载,SceneKitDemo02案例

    相关文章

      网友评论

          本文标题:【Unity 3D自学笔记二】iOS-SceneKit网络下载模

          本文链接:https://www.haomeiwen.com/subject/bnpkeqtx.html