BlenderAVPWorkflowImage

Note: This article is a work-in-progress. I was battling this issue and wanted to get some thoughts written down.

I’m slowly learning how to use Blender, as it seems the best tool for (cheaply) developing 3D assets for visionOS apps. In this article I’ll try to outline a basic workflow to get from Blender to RealityKit.

The issue right now is that exporting USD from Blender and importing into Reality Composer Pro isn’t straightforward.

TL; DR

The primary issue I was having was that USD exports from Blender to Reality Composer Pro resulted in multiple top-level objects in the file, something RCP doesn’t like. The solution to this is to add a value in the “Root Prim” field of the USD export dialog:

BlenderExport.png

This value needs to start with a leading /. Then you’ll get all the exported objects collected under that one node.

The other thing to note is that you want to name your export with a .usdz extension. This will cause Blender to export a compressed ZIP archive version that includes all the textures and related content.

Reality Composer Pro can then import this .usdz, generally without issue, and all the material assignments remain intact.

About USD

USD is Apple’s 3D file format of choice. It’s modern and can express a wide variety of complex 3D information from object geometry and textures to rigging and animations. While used by Pixar for many years, it’s not well-adopted by the wider 3D community (from what I can tell).

USD files come in three flavors: text (.usda), binary (.usdc), and zip-compressed (.usdz). The uncompressed variants comprise a rood .usda or .usdc file, and one or more folders containing textures or other auxiliary data.

Blender USD Export

Blender exports text and binary versions with a textures folder (at least so far; I’ve only done simple things). It does this unceremoniously, without creating a nice folder to contain it all, so you probably want to create a folder specifically for the export and set that as the destination.

It also (erroneously, I think) exports multiple top-level objects, which Reality Composer Pro dislikes.

More to come…