MaterialX / glTF / USD material interop

Continuing the discussion from SIGGRAPH 2023, Open Source Days 2023, etc. Sessions Round-Up
which mentions GLTF, MaterialX, and USD in the presentations:

I’m curious what the thoughts are on maintaining this “triplet” in terms of materials, as there can be any or all of these bidirectional transfers occurring depending on workflow:

  1. USD ↔ MaterialX
  2. USD ↔ glTF
  3. MaterialX ↔ glTF

I’d assume you’d want each to be as lossless as possible and kept in sync as much as possible.

Thanks,
Bernard

1 Like

USD can encode more than MaterialX can encode more than glTF. So if there’s a glTF MaterialX file, you could losslessly

gltF → MaterialX → USD

There’s talk of adopting MaterialX into glTF but until such a thing happens, the reverse direction, USD → MaterialX → glTF is strictly a narrowing.

1 Like

Three.js already has a MaterialX loader. A MaterialX extension for glTF sounds exciting! Could that make glTF useful as an editing format more so than just transmission?

You might want to keep an eye on this extension proposal which could feed into ThreeJS shader nodes (or other node systems). Graph editing ability has been stated as a requirement.

This will also minimize narrowing as adherence to only using “standard” MaterialX node definitions is also a requirement.