Thinking about USDZ inside SceneKit or ModelIO

I've been tinkering with USDZ 3D model and so far I got a hang on creating some USDZ models. It works great as AR Quick Look, sometimes it does not always work as AR Quick Look (if file is over 100 MB, or too many objects). Anyhow, I am actually wondering on how to use it inside SceneKit and as AR inside app.


I tested the basic AR app, replacing "ship" with my own USDZ model. It surprisingly works. Although of course currently with my USDZ model, I do not have light or camera, just simply object with the PBR Materials already embedded. I guess I could always add Light, etc using Swift code. Although I wonder if I could embed it into USDZ so it become a stage ready to be animated.


        let scene = SCNScene(named: "art.scnassets/handblock.usdz")!
        
        // Create a new scene
        //let scene = SCNScene(named: "art.scnassets/ship.scn")!


I am looking at these articles below in order to understand the function of ModelIO, maybe I can use it for USDZ.


* This one seems to be using ModelIO and to wrap it inside SceneKit, code is old so it does not work anymore.

http://iosdeveloperzone.com/2016/05/10/getting-started-with-modelio/


* This one is using ModelIO for Metal, which is probably area I do not need to get into.

http://metalbyexample.com/modelio-materials


What really interest me is the "variants" that is being mentioned sometimes ago with USD or USDZ.


Let say my USDZ is looking something like below. I supposed it should be "easy" if I ever wanted to mix base color, or perhaps adding variations?


If I am not wrong, Apple Animoji / Memoji itself is somekind of USDZ which works with ARKit Face Mesh?


It surprises me that nobody talks about USDZ and SceneKit yet.