简体   繁体   中英

Convert ( .obj / .fbx ) to .dae runtime which must support iOS SceneKit

I am facing trouble to find a way to convert .obj / .fbx to .dae (iOS scenefit Supported) automatically in background.

In python, it may be available to convert the file from .obj / .fbx to .dae file format. This process should run in background, immediately run after we will get .obj / .fbx file on server.

Here is the sample file, which we are trying to convert.

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

Please help me, if you have any suggestion.

Scenekit on IOS doesn't support dae unless it was included in the app. So because of the “iOS Scenekit Supported” requirement there is no right answer, sort of. Although there are third party libraries (like https://github.com/dmsurti/AssimpKit ) to read and convert many 3d model formats, it won't change the fact dae isn't properly supported on IOS Scenekit .

That said, it is possible to convert OBJ to DAE in SceneKit using the following steps (in IOS 11.2 and later)

  1. Load the obj file into a SCNScene.

  2. Write the scene to a file with .dae extension using SCNScene's writeToURL method.

That will create a .dae file SceneKit can support (but not directly, ie would need to be included in xcode or converted first) that starts with the following:

<?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>

I would second the recommendation for using Assimp or AssimpKit (I've only used the former but the latter might be an easier starting point).

I believe the DAEs on iOS aren't DAEs at all, they just left the suffix the same and the actual files are SceneKit archives. I'm not sure if the API to write them is exposed yet, but I think it might be now since Xcode is now willing to load DAEs and write out SceneKit archives (but it adds the “.scn” suffix, not “.dae”).

It's possible that iOS SceneKit can just load “.scn” files — it won't load true DAEs because the DEA-reading/writing framework was licensed from Sony and is HUGE and the iOS team just doesn't want that giant ugly framework on its system.

Another option would be to just link the iOS app against Assimp — it can load a ton of formats natively so you could skip all the intermediate stuff. It's not NEARLY as huge as Sony's DAE library so it might be acceptable to ship it with your app.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM