Good Day.
Can anyone suggest in LOPs how I might use an instance ID in a material. I'm trying to get material variation on each instance of a mesh.
Thank you for any ideas.
lor
simon_o
May 5, 2021 03:01:00
Using the materialvariation node set to point instances and the instances parameter to something like /myinstancerprim1[*]
, you could create a new primvar based on the index variable:
toggle use snippet and set the wrangle to:
value=index
.. which will give you the instanceid as a primvar, so it can be read in your material.
Though probably better for material variation would be to create a color3f primvar already with the desired variation color and just read that directly in your material.
To read primvars in Karma, you can just use a parameter node.
rafal
May 5, 2021 11:01:18
Like Simon said. Here is an example.
P.S. For Karma, you should use Bind VOP rather than Parameter VOP, because inside Mat Lib LOP the semantics of a Parameter VOP is to create an input attribute on the material primitive, while Bind VOP is translated to the standard USD Primvar reader.
NicTanghe
Aug. 26, 2025 07:59:48
These are fully red even though the foo variable seems to be correctly set.
also using usdglobal elemnum into random should logically work but doesn't.
Hamilton Meathouse
Aug. 29, 2025 12:43:00
Hamilton Meathouse
Aug. 29, 2025 12:44:46
Example file above has PointInstancer and InstanceableReference examples