SCN to USDZ converting issue with one sided materials (transparent)


In our workflow, we have 3D objects with the type of gltf provided to the iOS via API endpoints. Using a different types of files is not an option here. Inside the iOS, the glb file is converted to a scn file using a third-party framework. The nodes in the converted scn file look as expected and similar to the original glb file.

In the second step, the scn file should be converted to a USDZ file to use in RealityKit. As far as I know, there is only one way to convert scn to USDZ inside the iOS app. which is using an undocumented approach ( assign a usdz format to URL and using write(to:options:delegate:progressHandler:))

let path = FileManager.default.urls(for: .documentDirectory,
                                     in: .userDomainMask)[0]
sceneView.scene.write(to: path)

In the converted USDZ file, all the one-sided materials (transparent) materials are changed to a not transparent material. We tested on a car object, and all the window glasses became not transparent after converting.

On the other hand, if we use the Reality converter app in macOS to convert glb file directly to USDZ file, every node converts as expected, and it works so fine. Is there any workaround to fix that issue? Or any upcoming update to let us use glb file in the app or successfully convert it to USDZ inside the iOS app?




Unfortunately USDZ does not support node's transparency. To workaround this try using textures with transparency (PNG) instead of applying it to the node itself.