SceneKit一个场景加载其他模型

在一个3D场景中不止一个模型,还可能会有更多模型,那么如何在一个场景中加载更多的模型呢。


方法一:

回顾上一章http://www.jianshu.com/p/903b3b14b9eb,说到如何导入DAE文件。

同理,加载更多的模型就需要创建多个scene,但我们只取里面的rootNode,不需要整个scene对象。上代码

SceneKit一个场景加载其他模型_第1张图片

最后将新的节点附加到指定场景上就OK了。

这个方法的好处是简单快捷,但是对于一些复杂的模型会在创建瞬间占用大量内存,有可能导致内存不足而闪退。

方法二:

这个就较复杂了,不过好处也很明显,在创建的瞬间不会占用太多内存(除非贴图超级大),但是需要对几何算法有深入认识。这里只提供想法。

不知道大家有没有注意到SCNGeometry这个类呢,它可以根据提供的顶点坐标,法向量以及贴图坐标生成一个几何体,不论什么图形,只要提供正确的数据就可以生成该图形。

每个模型文件里面都有包含顶点坐标,法向量以及贴图坐标,我们可以将其提取出来,根据一定算法生成顶点索引(有些模型文件也会提供顶点索引),然后使用SCNGeometry生成模型。

至于如何使用SCNGeometry类,我将会在下一篇文章中道出。

SCNGeometry的使用

今天介绍了载入多个模型的两种方法,大家可以尝试一下,有问题可以留言或加Q289193866交流一下

你可能感兴趣的:(SceneKit一个场景加载其他模型)