【问题标题】:How to import complex .dae model to SceneKit?如何将复杂的 .dae 模型导入到 SceneKit?
【发布时间】:2019-03-17 11:27:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift scenekit augmented-reality blender arkit


    【解决方案1】:

    很明显,您必须从 3D 包中导出复杂的模型,这些包被分成更小的部分。当然,您不一定需要单独导出所有 3D 模型(基于每个模型)。在任何情况下,准备所有 3D 模型以在Game Engine 中使用都是非常耗时的过程。 没有一键式解决方案

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

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

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

    为了实现您的目标,您需要从 Blender 中导出 3D 场景的较小部分(如我之前提到的逻辑划分),将所有部分导入到 SceneKit (ARKit) 项目中,然后通过 Swift 代码将它们全部组合起来。此外,许多 3D 包可以将多个动画导出为带有所谓的子动画的单个动画。在this SO post你可以找到处理方法。

    【讨论】:

      【解决方案2】:

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

      如果您观看有关 Model I/O 的 WWDC 视频,他将演示如何遍历 .USD 文件以轻松捕获节点、几何图形、相关层次结构、材质、动画等。

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

      流程如下:

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

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

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

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

      5. 创建一个描述动画的数组...通过创建一个包含骨骼、它们附加的顶点、变换等的数组来实现。

      毕竟,您必须编写一个函数来重新组合已被描述为数组数组的场景。

      我不够熟练,无法做到这一点......我希望有人创建一个示例以便我可以研究它。

      但这就是逻辑。

      【讨论】:

        猜你喜欢
        • 2018-01-06
        • 2018-02-22
        • 2014-09-07
        • 2014-09-03
        • 2019-06-01
        • 2017-08-26
        • 2017-12-24
        • 2014-10-10
        • 2014-10-12
        相关资源
        最近更新 更多