diff --git a/python/GafferArnoldUI/ArnoldShaderUI.py b/python/GafferArnoldUI/ArnoldShaderUI.py index 31391ad9234..739a8da37d0 100644 --- a/python/GafferArnoldUI/ArnoldShaderUI.py +++ b/python/GafferArnoldUI/ArnoldShaderUI.py @@ -283,8 +283,9 @@ def __translateNodeMetadata( nodeEntry ) : userDefault = __aiMetadataGetStr( nodeEntry, paramName, "gaffer.userDefault" ) if userDefault: - __metadata[paramPath]["userDefault"] = userDefault - + nodeName, _, plugName = paramPath.split( "." ) + Gaffer.Metadata.registerValue( "ai:surface:%s:%s" % ( nodeName, plugName ), "userDefault", userDefault ) + with IECoreArnold.UniverseBlock( writable = False ) : diff --git a/python/GafferArnoldUITest/ArnoldShaderUITest.py b/python/GafferArnoldUITest/ArnoldShaderUITest.py index c2704c88dca..5b079951a18 100644 --- a/python/GafferArnoldUITest/ArnoldShaderUITest.py +++ b/python/GafferArnoldUITest/ArnoldShaderUITest.py @@ -189,7 +189,16 @@ def testUserDefaultMetadata( self ) : self.assertEqual( parms["uvcoords"].value, imath.V2f( 12, 13 ) ) self.assertEqual( parms["filename"].value, "overrideUserDefault" ) self.assertEqual( parms["filter"].value, "bilinear" ) - + + def testBaseClassMetadataLookup( self ) : + + surface = GafferArnold.ArnoldShader() + surface.loadShader( "standard_surface" ) + + # Make sure that metadata registration based on mechanism in GafferScene.ShaderUI works + Gaffer.Metadata.registerValue( "ai:surface:standard_surface:aov_id1", "userDefault", "id_1" ) + + self.assertEqual( Gaffer.Metadata.value( surface["parameters"]["aov_id1"], "userDefault" ), "id_1" ) if __name__ == "__main__": unittest.main()