- Added support for importing UDIM textures.
- Added Material Name Collision USD import menu option, to specify the behavior when USD materials in different namespaces have the same name.
- If no materials with generic purpose (allPurpose) are assigned to the USD primitive, the importer will now fall back on converting assigned materials with purpose preview.
- Minor cleanup in the assign_materials() utility function used by USDMeshReader, removing an unnecessary variable and fixing comments.
The Material Name Collision menu options are
- Modify: Create a unique name for the imported material.
- Skip: Keep the existing material and discard the imported material.
Previously, the default behavior was Skip. This was causing an issue in the ALab scene, where dozens of different USD materials all have the same name "usdpreviewsurface1", so that only one instance of these materials would be imported.
One of the design challenges in implementing the Material Name Collision feature was keeping track of the Blender material that is created for a given USD material, to avoid duplicating materials that are shared. I considered doing this by tagging the Blender materials with a custom property specifying the source USD material path, but this seemed like an intrusive approach. Instead, I decided to add a map to the ImportSettings struct that the USDMeshReader classes can update to record and share this information. This works, but I'm open to suggestions for improving this design.
These changes are committed to the temp-T90535-usd-alab-material-import branch. A build of this branch is available for testing on the experimental builds page.
Repro steps for testing:
Download and extract the "USD ALab scene" from animallogic.com/usd-alab.
In Blender:
- File > Import > Universal Scene Description
- Experimental > Import USD Preview
- Import entry.usda
It might be helpful to toggle off Include > Proxy to visualize the render geometry more clearly.



