def test_Basic(self): # Test CopyLayerMetadata() source = Sdf.Layer.FindOrOpen('layerWithMetadata.usda') self.assertTrue(source) keysToCompare = [ x for x in source.pseudoRoot.ListInfoKeys() if (x not in ['subLayers', 'subLayerOffsets']) ] cpy = Sdf.Layer.CreateNew("cpy.usda") self.assertTrue(cpy) UsdUtils.CopyLayerMetadata(source, cpy) for key in ['subLayers'] + keysToCompare: self.assertEqual(source.pseudoRoot.GetInfo(key), cpy.pseudoRoot.GetInfo(key)) # bug #127687 - can't use GetInfo() for subLayerOffsets self.assertEqual(source.subLayerOffsets, cpy.subLayerOffsets) cpyNoSublayers = Sdf.Layer.CreateNew("cpyNoSublayers.usda") self.assertTrue(cpyNoSublayers) UsdUtils.CopyLayerMetadata(source, cpyNoSublayers, skipSublayers=True) self.assertFalse(cpyNoSublayers.pseudoRoot.HasInfo('subLayers')) self.assertFalse(cpyNoSublayers.pseudoRoot.HasInfo('subLayerOffsets')) for key in keysToCompare: self.assertEqual(source.pseudoRoot.GetInfo(key), cpyNoSublayers.pseudoRoot.GetInfo(key))
def test_Basic(self): # Test CopyLayerMetadata() source = Sdf.Layer.FindOrOpen('layerWithMetadata.usda') self.assertTrue(source) keysToCompare = [x for x in source.pseudoRoot.ListInfoKeys() if (x not in ['subLayers', 'subLayerOffsets'])] cpy = Sdf.Layer.CreateNew("cpy.usda") self.assertTrue(cpy) UsdUtils.CopyLayerMetadata(source, cpy) for key in ['subLayers'] + keysToCompare: self.assertEqual(source.pseudoRoot.GetInfo(key), cpy.pseudoRoot.GetInfo(key)) # bug #127687 - can't use GetInfo() for subLayerOffsets self.assertEqual(source.subLayerOffsets, cpy.subLayerOffsets) cpyNoSublayers = Sdf.Layer.CreateNew("cpyNoSublayers.usda") self.assertTrue(cpyNoSublayers) UsdUtils.CopyLayerMetadata(source, cpyNoSublayers, skipSublayers=True, bakeUnauthoredFallbacks=True) self.assertFalse(cpyNoSublayers.pseudoRoot.HasInfo('subLayers')) self.assertFalse(cpyNoSublayers.pseudoRoot.HasInfo('subLayerOffsets')) for key in keysToCompare: self.assertEqual(source.pseudoRoot.GetInfo(key), cpyNoSublayers.pseudoRoot.GetInfo(key)) # Ensure that the color config fallbacks get stamped out when # bakeUnauthoredFallbacks is set to true. fallbackKeysToCompare = ['colorConfiguration', 'colorManagementSystem'] colorConfigFallbacks = Usd.Stage.GetColorConfigFallbacks() self.assertEqual(colorConfigFallbacks, (cpyNoSublayers.pseudoRoot.GetInfo(Sdf.Layer.ColorConfigurationKey), cpyNoSublayers.pseudoRoot.GetInfo(Sdf.Layer.ColorManagementSystemKey)))
def GetUsdLayerMetaData(filePath): """Return an SdfLayer holding just the layer metadata of the given layer.""" from pxr import Sdf, UsdUtils srcLayer = Sdf.Layer.OpenAsAnonymous(filePath, metadataOnly=True) # Not all file format plugins support metadata-only parsing. # Create a new anonymous layer and copy just the layer metadata. layer = Sdf.Layer.CreateAnonymous(filePath, Sdf.FileFormat.FindById('usda')) UsdUtils.CopyLayerMetadata(srcLayer, layer) return layer