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

时间:2018-01-25 10:55:48

标签: ios scenekit

我很难找到一种方法,可以在后台自动将.obj / .fbx转换为.dae(iOS scenefit Supported)。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

  3. 这将创建一个.dae文件,SceneKit可以支持(但不是直接,即需要包含在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>
    

答案 1 :(得分:1)

我会推荐使用Assimp或AssimpKit(我只使用了前者,但后者可能是一个更容易的起点)。

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

iOS SceneKit可能只能加载“.scn”文件 - 它不会加载真正的DAE,因为DEA读取/写入框架是从Sony获得许可的,并且是巨大的,iOS团队只是不想要那个巨人它的系统上的丑陋框架。

另一种选择是将iOS应用程序与Assimp链接起来 - 它本身可以加载大量格式,因此您可以跳过所有中间内容。它并不像索尼的DAE库那么大,所以可以接受你的应用程序发货。