USD Materials

   3005   5   1
User Avatar
Member
35 posts
Joined: 12月 2012
Offline
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
7737 posts
Joined: 9月 2011
Online
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
35 posts
Joined: 12月 2012
Offline
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
73 posts
Joined: 4月 2020
Online
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
Offline
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
73 posts
Joined: 4月 2020
Online
Thanks, Rafeek, for the help! I will go give that a try.

Best wishes,
Mary
  • Quick Links