Importing a material from a USDA file without importing any geometry

I am trying to import a UsdPreviewSurface material from a .usda-file into blender.
The problem that I am facing at the moment is that this apparently only works if the material is attached to an actual mesh. If I add the following code to the usda-file the material gets properly imported alongside with the empty dummy object:

   	def Mesh "ambientCG_PLACEHOLDER_DELETE_ME"
	int[] faceVertexCounts = []
	int[] faceVertexIndices = []
	rel material:binding = </ambientCG_TactilePaving006_2K_JPG>
	point3f[] points = []
	texCoord2f[] primvars:st = []

If this dummy mesh is not in the usda-file then nothing happens upon import.
Is there really no way to just add a material to the list of all materials in the .blend file without pointless dummy objects? Because if that’s the case then it’s a missed opportunity. For example, when importing into Unreal Engine it is totally possible to get just a material from a file without any geometry and I love USD specifically because it allows for this use-case.

I have uploaded a small sample to Google Drive for anyone to play around with this.

1 Like

Thanks for opening this discussion! I’m about to start work on an “Import unassigned materials” option to the USD importer, to support this behavior. I’m thinking we’ll probably want to support this behavior in the exporter as well.

1 Like

This feature is now available for testing in the tmp_usd_import_unbound_mtls experimental build, as described in ⚓ T97195 Import USD materials that are not assigned to any object