将 ( .obj / .fbx ) 转换为必须支持 iOS SceneKit 的 .dae 运行时



我在寻找一种在后台自动将.obj/.fbx转换为.dae(支持iOS场景)的方法时遇到了麻烦。

在python中,可以将文件从.obj/.fbx转换为.dae文件格式。这个过程应该在后台运行,在服务器上获得.obj/.fbx文件后立即运行。

这是我们尝试转换的示例文件。

https://s3.ap-south-1.amazonaws.com/p9-platform/DAE/barware_s11624.obj

如果您有任何建议,请帮助我。

IOS 上的 Scenekit 不支持 dae,除非它包含在应用程序中。因此,由于"支持iOS Scenekit"的要求,没有正确的答案。尽管有第三方库(如 https://github.com/dmsurti/AssimpKit)来读取和转换许多3D模型格式,但它不会改变IOS Scenekit上未正确支持dae的事实。

也就是说,可以使用以下步骤在 SceneKit 中将 OBJ 转换为 DAE(在 IOS 11.2 及更高版本中)

  1. 将 obj 文件加载到 SCNScene 中。

  2. 使用 SCNScene 的 writeToURL 方法将场景写入扩展名为 .dae 的文件中。

这将创建一个 SceneKit 可以支持的 .dae 文件(但不是直接支持的,即需要包含在 xcode 中或首先转换),该文件以以下内容开头:

<?xml version="1.0" encoding="UTF-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<authoring_tool>SceneKit Collada Exporter v1.0</authoring_tool>
</contributor>

我支持使用Assimp或AssimpKit的建议(我只使用了前者,但后者可能是一个更容易的起点)。

我相信 iOS 上的 DAE 根本不是 DAE,它们只是保留了相同的后缀,实际文件是 SceneKit 存档。我不确定编写它们的 API 是否已经公开,但我认为现在可能是,因为 Xcode 现在愿意加载 DAE 并写出 SceneKit 存档(但它添加了".scn"后缀,而不是".dae")。

iOSSceneKit可能只能加载".scn"文件——它不会加载真正的DAE,因为DEA读/写框架是从索尼授权的,而且是巨大的,iOS团队只是不希望这个巨大的丑陋框架在其系统上。

另一种选择是将iOS应用程序与Assimp链接 - 它可以在本地加载大量格式,因此您可以跳过所有中间内容。它没有索尼的DAE库那么大,所以把它与你的应用程序一起提供可能是可以接受的。

最新更新