Convert .scn scene to usdz (Swift) - ios

I have lost a lot of sleep over this (in the past 3 years).
I was hooping that Apple would at least be able to export its own .scn Scenes to USDZ without too much problems.
Has anyone been successful in exporting a .scn scene to USDZ from within an app?
I have tried this but to no avail:
https://github.com/piemonte/obj2usdz

Have you taken a look at this:
Batch Converting Apple SCN files into DAE
xcrun scntool --convert fileIn.scn --output fileOut.dae --format dae
Or this:
https://developer.apple.com/forums/thread/104553
They mention a number of ways such as converting to a dae first, and then using the free converter.

Related

How to export and share a .gltf file as .usdz file in iOS through code? [duplicate]

I am creating an app where users can scan objects in 3D, I have a scene which I can easily save in documents directory and share it in .scn format, but I want to share this .scn file as .usdz file via UIActivityController.
Basically I am using this library https://github.com/StandardCyborg/StandardCyborgCocoa
In this library, a scene file is saved as .gltf format, but I want to share this .gltf file which is not supported on iOS devices. Apple only support .usdz file format. So, I want to convert this .gltf file into .usdz file before sharing.
I have been searching different solutions over internet for a week, but nothing is working till now.
Can anyone help me to resolve this issue?
Any help is greatly appreciated.
It's not documented, but SCNScene's write method works with a .usdz URL, at least since iOS 14.7. This is what I'm using in my app.

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)
Load the obj file into a SCNScene.
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, i.e. 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.

Batch Converting Apple SCN files into DAE

Currently I have this test iOS app that basically brute force export SCN files out of the app, basically at around 60 SCN files per second.
Since I do not have any better way to export this on device simulation, this is my current solution.
Anyhow, is there a known way to batch convert SCN file format into DAE Collada? I can do manual export using XCode, but seems to work once at time. Not gonna be fun.
Is there a quick way using Playground to actually do this?
Thanks!
You can try the xcrun command to run scntool and provide it input/output files, then the format.
xcrun scntool --convert fileIn.scn --output fileOut.dae --format dae

Converting FBX file to SCN file for the ARKit

I want to convert my fbx file I made in Maya (2017) to a scn file for the ARKit of iOS 11. What steps do I take to convert the file?
You will need to export your Maya model as a Collada (.dae) file using the available Maya Collada export plugin which you can locate via web search.

Load uncompressed collada file using iOS Scene Kit

I need to load a collada file I downloaded on iOS, I intend to use Scene Kit to do it. But reading the documentation I found out that XCode compresses the collada files on compilation time, and Scene Kit can only load the compressed files.
After some research I ran into this article where the author was able to find the scripts XCode uses and compress the files using them. The problem is that I'm not being able to run them on my server.
So my question is: Is there any other way to load collada files using scene kit? Or is there somewhere where I can find an algorithm to do the compression myself?
if you can't upload compressed files on your server and cannot convert them on the fly on the server, I'm afraid that you will have to manually parse the Collada files and instantiate all the SceneKit objects yourself.

Resources