swift - 如何将复杂的 .dae 模型导入到 SceneKit?
问题描述
我知道如何从 Blender 中将单个模型(如汽车)导出为.dae
文件,然后将其导入并使用 SceneKit 显示。还有那个模型的动画。
但我想知道导入更复杂模型的最佳方法是什么。就像一个城市的一小部分。就像一个有多辆汽车、建筑物和人的场景,有不同的动画。
有没有办法做到这一点,而无需将所有内容导出为一个带有一个动画的模型,然后通过 SceneKit 中的代码组合并放置所有内容?因此,尽可能多地在 Blender/其他 3D 工具中定义。
解决方案
很明显,您必须从 3D 包中导出复杂的模型,这些包被分成更小的部分。当然,您不一定需要单独导出所有 3D 模型(基于每个模型)。无论如何,准备所有 3D 模型以供使用Game Engine
是非常耗时的过程。没有一键式解决方案。
像城市这样的复杂场景在逻辑上可以划分为一组静态对象:摩天大楼、柱子、沥青、房屋、长凳等。但是动画对象,比如人、树或汽车,必须从 Blender 导出并单独导入到 SceneKit。
请记住,这些 3D 对象(无论是单个对象还是一组对象)的所有对应纹理都必须保存为 UV 映射正方形jpeg
或png
文件(如 512x512 或 1024x1024 像素)。并且不要忘记用于动力学的低多边形碰撞网格。
查看WWDC 2015 SceneKit 会议。您将看到如何在 Xcode 的场景编辑器中构建 3D 场景。
为了实现您的目标,您需要从 Blender 中导出 3D 场景的较小部分(如我之前提到的逻辑划分),将所有部分导入 SceneKit (ARKit) 项目,然后通过 Swift 代码将它们全部组合起来。此外,许多 3D 包可以将多个动画导出为带有所谓的子动画的单个动画。在这篇 SO 帖子中,您可以找到如何处理它。
推荐阅读
- postgresql - 使用 pycparser 编译 Postgresql - 找不到头文件
- android - 调用 MicrophoneHelper 时,Watson SpeechToText 崩溃应用程序 android
- c# - 文本框没有 ScrollBar 属性
- actionscript-3 - actionscript 3 在末尾创建一个带有变化数字的对象
- python - 在另一列的列表中查找熊猫数据框列的最近元素
- mockito - 可以为空的 Map 的 Mockito 参数匹配器
- javascript - 使用递归打印出 BST 的值 - javascript
- java - 文件上传 POST Jersey 如何在服务器端工作
- asp.net - asp:RegularExpressionValidator 禁用按钮
- java - 突然彻底崩溃:找不到符号、ClassNotFoundException(Java、NetBeans)