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

Swift 如何将复杂的.dae模型导入SceneKit?,swift,scenekit,augmented-reality,blender,arkit,Swift,Scenekit,Augmented Reality,Blender,Arkit,我知道如何将Blender中的单个模型(如汽车)导出为.dae文件,然后导入并使用SceneKit显示。还有一个模型的动画 但我想知道导入更复杂模型的最佳方法是什么。就像城市的一小部分。就像一个场景中有多辆车、多座建筑物和多个人,有不同的动画 有没有一种方法可以做到这一点,而不必将所有内容导出为一个模型和一个动画,然后通过SceneKit中的代码合并并放置所有内容?因此,在Blender/其他3D工具中定义了尽可能多的模型。很明显,您必须从划分为较小部分的3D包中导出复杂模型。当然,您不一定需要

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

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


有没有一种方法可以做到这一点,而不必将所有内容导出为一个模型和一个动画,然后通过SceneKit中的代码合并并放置所有内容?因此,在Blender/其他3D工具中定义了尽可能多的模型。

很明显,您必须从划分为较小部分的3D包中导出复杂模型。当然,您不一定需要单独导出所有三维模型(每个模型)。在任何情况下,准备所有3D模型以便在
游戏引擎中使用都是非常耗时的过程没有单键解决方案

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

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

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


为了实现您的目标,您需要从Blender导出3D场景中较小的部分(逻辑分割,如我前面提到的),将所有部分导入到SceneKit的(ARKit)项目中,然后通过Swift代码将它们组合起来。此外,许多3D软件包可以将多个动画导出为单个动画,并带有所谓的子动画。实际上,有一种方法可以做到这一点

如果您观看关于模型I/O的WWDC视频,这个家伙将演示如何迭代.USD文件以轻松捕获节点、几何体、相关层次结构、材质、动画等

不幸的是,他没有为.dae文件执行此操作

过程如下:

  • 在场景文件中创建节点数组

  • 创建描述每个节点的父节点的数组

  • 创建一个描述这些节点实例的数组

  • 创建一个描述节点材质的数组

  • 创建一个描述动画的数组。。。通过创建骨骼阵列、其附着的顶点、变换等来实现这一点

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

    我没有足够的技术来做这件事。。。我希望有人能给我举个例子,让我来研究一下

    但这就是逻辑