I created a cube primitive and now I want to create a material and bind it. It seems that creating a material from stage.DefinePrim is a bit of a hassle as one needs to create a shader and connect things. So I did it through the kit commands instead.
mtl_created = []
omni.kit.commands.execute("CreateAndBindMdlMaterialFromLibrary",
mdl_name="OmniPBR.mdl",
mtl_name="OmniPBR",
mtl_created_list = mtl_created)
mtl_path = mtl_created[0]
omni.kit.commands.execute(
"BindMaterial",
prim_path=cube.GetPath(),
material_path=mtl_path
)
How do I change its diffuse color though? I tried using the attribute from the shader but it cant be found.
shader = self._stage.GetPrimAtPath(mtl_path + "/Shader")
color_attr = shader.GetAttribute("inputs:diffuse_color_constant")
color_attr.Set(Gf.Vec3f(0.6, 0.13, 0.13))
I also tried using the command but thats not working and even it were working it needs to know what the color was previously for some reason.
omni.kit.commands.execute(
"ChangeProperty",
prop_path=mtl_path + "/Shader.inputs:diffuse_color_constant",
value = (0.76, 0.15, 0.15),
prev = (0.2, 0.2, 0.2)
)