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 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) )