Hello,
This is my first post—apologies if this has already been asked or if it’s in the wrong category.
TL;DR
When exporting multiple UV sets from Maya to USD, Maya UV set names are normalized to st, st1, st2, etc., and are not preserved on a Maya → USD → Maya round-trip by default. The UV set exported as st corresponds to Maya’s current UV set, while additional UV sets are assigned incrementally. We want to confirm whether this ordering is deterministic and whether a standard mechanism exists to preserve or reliably reconstruct original UV set names, without introducing unnecessary customizations to the Maya USD exporter/importer.
Details:
A production question recently came up around exporting multiple UV sets through USD.
In our Katana pipeline, we don’t have issues with either st naming or Maya UV set names (this is mostly Alembic-based). With USD, however, it appears that UV sets are normalized to st, st1, st2, etc. This raises a few questions, both around UV handling specifically and around expectations for round-tripping data in general.
Maya → USD → Maya behavior
Using the default Maya USD export options, a round-trip from:
Maya → USD → new Maya session
does not preserve Maya UV set names. This led us to ask a broader question:
How many other attributes are renamed or lost during export, beyond what is already expected?
We understand that not all Maya data is preserved through USD, but we want to better understand which transformations are deterministic and which are not.
Observed UV export behavior
Based on our testing:
-
By default, Maya exports UV sets as
st,st1,st2, … -
The UV set exported as
stcorresponds to the current UV set in Maya -
This behavior is consistent with Alembic, so we are familiar with the implications
For example, given the following Maya UV sets:
map1
map2
hires (current UV set)
The exported result is:
st → hires
st1 → map1
st2 → map2
This leads to the following question:
Is the ordering of non-current UV sets (
st1,st2, …) deterministic?
Assuming the current UV set is not changed, we want to ensure that the mapping does not vary (e.g. st1 → map2, st2 → map1), since the original UV set names are no longer present.
Proposed approaches
We are currently considering two possible solutions:
Solution 1: Preserve UV set names
-
Export with
preserveUvSetNames -
Post-process the USD to:
-
Alias
st,st1,st2to their original Maya UV set names -
Store the original authored names as metadata
-
-
On import, restore the original UV set names where needed in our pipeline
Our goal here is to maintain authored UV set names for round-trip fidelity, even if renderers continue to rely on st-style primvars.
Solution 2: Reconstruct UV names from st ordering
-
Export without
preserveUvSetNames -
Post-process the USD to:
-
Identify
st,st1,st2 -
Record their intended Maya UV set mappings as metadata
-
-
On import, restore the UV set names within our pipeline as needed
Open questions
We have several competing requirements:
-
Some renderers require UVs to be named
st,st1,st2 -
We want predictable, deterministic behavior when UV set names are stripped
-
We want to avoid unnecessary customization of the Maya USD exporter/importer if a standard solution already exists
Before moving forward with pipeline changes, we want to confirm whether:
-
We are overlooking existing USD or Maya USD mechanisms for this
-
Our assumptions about determinism and expected behavior are correct
Any guidance or clarification would be appreciated.