如何将复杂的.dae模型导入SceneKit?

时间:2018-10-12 09:04:53

标签: swift scenekit augmented-reality blender arkit

我知道如何从Blender中将单个模型(例如汽车)导出为.dae文件,然后将其导入并使用SceneKit进行显示。并带有该模型的动画。

但是我想知道导入更复杂模型的最佳方法是什么。就像城市的一小部分。就像一个场景,其中有多辆汽车,还有建筑物和人,并且有不同的动画。

有没有一种方法可以将所有内容导出为带有一个动画的一个模型,然后通过SceneKit comebine中的代码放置所有内容?这样就可以在Blender /其他3D工具中尽可能多地进行定义。

2 个答案:

答案 0 :(得分:1)

很明显,您必须从分成较小部分的3D包中导出复杂模型。而且,当然,您不必一定要单独导出所有3D模型(以一个模型为基础)。无论如何,准备要在Game Engine中使用的所有3D模型都是非常耗时的过程。 没有一键式解决方案

像城市这样的复杂场景在逻辑上可以分为静态对象组:摩天大楼,柱子,沥青,房屋,长凳等。但是动画对象(例如人,树或汽车)必须从Blender中导出并分别导入SceneKit 。

请记住,这些3D对象的所有相应纹理(无论是单个对象还是一组对象)都必须另存为UV映射的正方形jpegpng文件(例如512x512或1024x1024 pix) )。而且不要忘记低多边形碰撞网格的动力学。

查看WWDC 2015 SceneKit session。您将看到如何在Xcode的场景编辑器中构建3D场景。

enter image description here

要实现您的目标,您需要从Blender中导出3D场景的较小部分(在逻辑上已分开,正如我之前提到的),将所有部分导入SceneKit的(ARKit)项目,然后通过Swift代码将它们组合在一起。同样,许多3D程序包可以将多个动画导出为具有子动画的单个动画。在this SO post中,您可以找到处理方法。

答案 1 :(得分:0)

实际上,有一种方法可以做到这一点。

如果您观看有关模型I / O的WWDC视频,那么该人员将演示如何循环访问.USD文件以轻松捕获节点,几何形状,关联的层次结构,材质,动画等。

很遗憾,他没有对.dae文件执行此操作。

过程如下:

  1. 在场景文件中创建节点数组。

  2. 创建一个描述每个节点的父节点的数组。

  3. 创建一个描述这些节点实例的数组。

  4. 创建一个描述节点材料的数组...

  5. 创建一个描述动画的数组...通过创建骨骼,其附加顶点,变换等的数组来做到这一点。

所有这些之后,您必须编写一个函数来重新组合被描述为数组数组的场景。

我没有足够的技能来做到这一点...我希望有人创造一个榜样以便我可以研究它。

但这就是逻辑。