USD Materials

   8744   9   2
User Avatar
Member
43 posts
Joined: 12月 2012
オフライン
Is there a way to access the materials that are stored in a USD file? They also only seem visible using the file node instead of the USD import node. I did see another thread talking about this, but it went in a different direction. Basically I just want the materials to be put into a material library instead of having to recreate them manually. Is this possible?
User Avatar
Member
8188 posts
Joined: 9月 2011
オフライン
What are you trying to do? There isn't a facility to access the materials in a USD file from within the Houdini scene as nodes in a Material Library. They can be assigned to primitives in the scene or they can be modified by changing attribute values on shader or material prims with edit property nodes. There is the edit material network LOP which attempts to recreate the material in the scene to varying degrees of success, but it won't work for materials defined in code such as VEX builder materials.

If recreating materials as editable networks for use in solaris is all that's needed, the edit material network is probably the best option.
User Avatar
Member
43 posts
Joined: 12月 2012
オフライン
Thank you for this. I have a script that takes usd materials and converts them to principled shaders so that I can export to gltf. This isn’t yet available in Solaris so I was trying to find an automated way to do so
User Avatar
Member
88 posts
Joined: 4月 2020
オフライン
Hello Experts,

I have a real newbie question. This topic thread looks like the closest to my question, but doesn't quite answer it. I'm importing a usd scene from NVIDIA Omniverse using the Houdini connector and usdimport. I'm also happy instead to import an fbx version of the scene. In either case, the primitives come in with a list of named parts and a list of paths to materials for those parts. I would like to associate those materials with the primitives, but I'm not sure how best to do that. I had thought to try to import them somehow into the materials library, but it sounds from this thread that this isn't the right way to go. (And I'm not finding the way to do that in any case.) Should I instead use the material SOP? But I'm not sure how to point it at the materials on disk by pathname.

I do understand this is a very newbie question. I've dealt with a lot of geometry and point color, but materials are new to me. I'm listening to a variety of tutorials, but I haven't yet found my answer in them. Perhaps I'm not searching for the right thing?

Thanks so much for any help you can offer,
Mary
User Avatar
スタッフ
98 posts
Joined: 8月 2015
オフライン
mgbaker
Hello Experts,
...
In either case, the primitives come in with a list of named parts and a list of paths to materials for those parts. I would like to associate those materials with the primitives, but I'm not sure how best to do that.
...
Should I instead use the material SOP? But I'm not sure how to point it at the materials on disk by pathname.

Hi Mary, this is a great question.
The basics of what you need to do are:
  1. Reference the material on disk. The assetreferenceLOP is the easiest way to do this, but you'll need a separate LOP for each reference made. The "Parent Primitive Type" is typically 'Scope' for materials. The more generic referenceLOP will allow you to do multiple references in a single LOP but is a bit more complex to use.
  2. Assign the referenced material with the assignmaterialLOP. This LOP will let you do multiple assignments in a single LOP.

I hope this helps.

-- Rafeek
User Avatar
Member
88 posts
Joined: 4月 2020
オフライン
Thanks, Rafeek, for the help! I will go give that a try.

Best wishes,
Mary
User Avatar
Member
2 posts
Joined: 2月 2022
オフライン
jsmack
What are you trying to do? There isn't a facility to access the materials in a USD file from within the Houdini scene as nodes in a Material Library. They can be assigned to primitives in the scene or they can be modified by changing attribute values on shader or material prims with edit property nodes. There is the edit material network LOP which attempts to recreate the material in the scene to varying degrees of success, but it won't work for materials defined in code such as VEX builder materials.

If recreating materials as editable networks for use in solaris is all that's needed, the edit material network is probably the best option.
Hey I have a similar issue like this I got a trex animation from skecthfab but they just gave glb and a converted usdz file with which in usdz the animatoon was not coming so I used glb as file for my scene. But the textures that came with glb file doesn't seem to work as usdz how can I transfer usdz textures on it.|
Image Not Found

Attachments:
image_2024-07-24_163111630.png (112.2 KB)

User Avatar
Member
3 posts
Joined: 11月 2018
オフライン
Hello everyone,

I’m currently exploring Solaris and ran into an issue that seems relevant to this topic. It also looks like a previous user may have encountered a similar problem.

I’m trying to import a high-poly model from Sketchfab in USDZ format. The model loads correctly, and materials are visible in the Scene Graph, but they are not assigned to the geometry.

If I import the same model in GLB format, the materials are partially assigned, but the textures are missing.

At the same time, the USDZ version of this model displays correctly in NVIDIA Omniverse, including all textures.

Could you please advise if there is a recommended workflow or a specific sequence of steps to properly interpret this type of model in Solaris and correctly apply materials with textures — primarily for rendering with Karma?

Any guidance would be greatly appreciated. This would not only help me better understand Solaris workflows, but could also be useful for other artists facing a similar situation.

I’ve linked a simple test file in case you’d like to inspect the scene structure and import details.

Hip file with assets [drive.google.com]
Edited by beyonick - 2026年1月31日 13:35:30

Attachments:
Import as GLB.png (1.3 MB)
Import as USD.png (1.6 MB)
NVIDIA Omniverse.png (431.1 KB)

User Avatar
スタッフ
599 posts
Joined: 6月 2020
オフライン
This is almost always due to MaterialBindingAPI not being applied to the asset. Try running usdfixbrokenpixarschemas on that USDZ file (make a backup copy first).
User Avatar
Member
3 posts
Joined: 11月 2018
オフライン
robp_sidefx
This is almost always due to MaterialBindingAPI not being applied to the asset. Try running usdfixbrokenpixarschemas on that USDZ file (make a backup copy first).

That solved it, thank you! Much appreciated.

Attachments:
Screenshot 2026-02-02 144555.png (2.3 MB)

  • Quick Links