RealityKit, Skeletons, Skinning, and usdz format?

There are the questions I've run into in experiments with skeletal animations and trying to convert content into usdz format for RealityKit


  1. Has anyone discovered a good pipeline for getting a rigged character into usdz? The Xcode converter claims to support Alembic files but out attempts to convert even simple models exported from Max result in the converter crashing.
  2. Has anyone discovered support for skinning in RealityKit? Does anyone know if that is planned feature in the near term?

Replies

No solutions but a +1, i've had no luck getting even the most basic (non-apple) usdz into XCode. Any help appreciated!

I have been able to create usdz animated figures by:


1. Export as fbx from Blender

2. Import into Cheetah3d

3. Export as dae from Cheetah3d

4. Import into a SceneKit asset file in Xcode as dae and convert to scn

5. Export scn to usdz


I found that if I import a dae exported from Blender directly to SceneKit and then export the usdz, it loses its animation. That's why the Cheetah3d step.

These figures show up as animated in Quicklook, but for my purposes, which is rendering in Metal via Model I/O import, I haven't been able to get a consistent rotation and scale working. My figures are sometimes face down in the mud or infinitesimally small.

Thank you Caroline! We're in the midst of something else at the moment, but I'll try to check this out within a few days and I'll let you know how this turns out for us.

Also, I have had now success in multiple animations in a usdz file. I export each animation one by one from Cheetah and convert each animation in SceneKit to a usdz. I then use `usdcat` to convert them each to a usda file, and then by judicious copy/pasting, I can append each animation on to the end of the first usda file.


If someone could point out a better way to do this, I would be very happy 😅

The process is actually "simple" once you get a hang of it. You need Apple's tool usdpython zip bundle, inside you will find usdzconvert. This is the easiest method to bring in Rigged and Animated Characters.


Latest usdzconvert allows you to convert from FBX into USDZ, if you have FBX SDK installed (from Autodesk).


But if you have your 3D animation as GLTF, usdzconvert can convert from GLTF to USDZ.


There are few caviats, like depending on your character animation skeleton hierarchy etc, you need to ensure it is something that USDZ will like. You can try contacting Blender Sushi Guy.

I have tried many pathways, and it seems the easiest now is usdpython gltf -> usdz. My experience is that including animations breaks the rigging even though the animations seem to play. But right now it seems like rigging is inaccessible through RealityKit, so maybe it is best to include the animations at the expense of the rigging for now anyway.

Does this process work for multiple animations?


i.e loading the animations in RealityKit

Entity?.availableAnimations


Cheers

When you say you have had success in multiple animations in a usdz file, do you mean you have been able to see multiple animations for a single skeleton accessible through RealityKit? I have been able to see multiple animations in Xcode below the Skeleton node, but I have found those nodes are inaccessible in RealityCode; however, one of my animations seems to get assigned to the ModelEntity one tier up from the Skeleton as the only one in the availableAnimations property.

Interestingly, if I convert to the a SCN file, save my animations and load them to the tier above Skeleton, the animations still work and at least theoreticall would be available through RealityKit. But I have not been able to export a usdz file from Xcode from my SCN file properly.


I have not yet successfully gotten availableAnimations to list multiple skeletal animations.

Seems to be an issue Apple are aware of.