MaterialXMaterials 1.39.5
Utilities for retrieving materials from remote servers
Loading...
Searching...
No Matches
materialxMaterials.ambientCGLoaderCmd Namespace Reference

Command to download ambientCG MaterialX materials. More...

Functions

 ambientCgLoaderCmd ()
 Utility to download ambientCG MaterialX materials.

Detailed Description

Command to download ambientCG MaterialX materials.

Function Documentation

◆ ambientCgLoaderCmd()

materialxMaterials.ambientCGLoaderCmd.ambientCgLoaderCmd ( )

Utility to download ambientCG MaterialX materials.

Definition at line 9 of file ambientCGLoaderCmd.py.

9def ambientCgLoaderCmd():
10 '''
11 Utility to download ambientCG MaterialX materials
12 '''
13 logger = logging.getLogger('ACG_CMD')
14 logging.basicConfig(level=logging.INFO)
15
16 parser = argparse.ArgumentParser(description='Get materials information and material package from ambientCG.'
17 ' By default the materials will be downloaded and a named and index material'
18 ' package will be extracted.')
19
20 parser.add_argument('--loadMaterials', type=str, default='',
21 help='Load JSON file containing list of materials that can be downloaded.')
22 parser.add_argument('--downloadMaterials', type=bool, default=None,
23 help='Download JSON file containing list of materials that can be downloaded.'
24 ' Has no effect if --loadMaterials is set')
25
26 # Material names query
27 parser.add_argument('--materialNames', type=bool, default=None,
28 help='Return material names. Default is False')
29
30 # Save download information for all materials or a specific one
31 # based on asset identifier
32 parser.add_argument('-sms', '--saveMaterials', type=bool, default=None,
33 help='Save material lists. Default is None.'
34 ' Has no effect if --loadMaterials is set')
35 parser.add_argument('-sm', '--saveMaterial', type=str, default='',
36 help='Save material download information in JSON format')
37
38 # Asset download options
39 parser.add_argument('-m', '--downloadMaterial', type=str, default='',
40 help='Download zip package for a materials which match a given string. Default is a sample material')
41 parser.add_argument('-f', '--downloadmageFormat', type=str, default='PNG',
42 help='Download image format. Valid values include PNG and JPEG. Default is PNG')
43 parser.add_argument('-r', '--downloadResolution', type=str, default='1',
44 help='Download image resulution. Valid values include 1,2,4,8 to indicate 1K to 8K.')
45
46 # Download full database iformation for material assets
47 parser.add_argument('-dd', '--downloadDatabase', type=bool, default=None,
48 help='Download information database')
49 parser.add_argument('-sd', '--saveDatabase', type=str, default='ambientCG_database.json',
50 help='Save information database')
51
52 # Output options
53 parser.add_argument('--output', type=str, default='',
54 help='Output folder for data files. Default location is the current execution folder.')
55 opts = parser.parse_args()
56
57 loader = acg.AmbientCGLoader(mx, None)
58
59 # Set output folder. Default is current folder
60 outputFolder = '.'
61 if opts.output:
62 outputFolder = opts.output
63 if not os.path.exists(outputFolder):
64 # Create output folder if it doesn't exist
65 logger.info(f'Creating output folder: {outputFolder}')
66 os.makedirs(outputFolder)
67
68 # Get materials list which contains download information
69 loadMaterials = opts.loadMaterials
70 downloadMaterials = opts.downloadMaterials or opts.saveMaterials
71 if loadMaterials or downloadMaterials:
72 materialsList = None
73 if len(loadMaterials) > 0:
74 materialsList = loader.loadMaterialsList(loadMaterials)
75 elif downloadMaterials:
76 materialsList = loader.downloadMaterialsList()
77 # Save materials list if specified. Only do so for download case
78 if opts.saveMaterials:
79 output_path = os.path.join(outputFolder,'ambientCG_materialsList.json')
80 logger.info(f'Saving materials list to {output_path}')
81 loader.writeMaterialList(materialsList, output_path)
82
83 # Check if the list of materials is asked to be returned
84 if opts.materialNames:
85 materialNames = loader.getMaterialNames()
86 print(f'{materialNames}')
87
88 # Check if a material asset is specified to downloaded
89 materialName = opts.downloadMaterial
90 if len(materialName) > 0:
91 result = loader.findMaterial(materialName)
92 if result:
93 fileName = loader.downloadMaterialAsset(materialName, opts.downloadmageFormat, opts.downloadResolution)
94 if len(fileName) > 0:
95 loader.writeDownloadedMaterialToFile(outputFolder)
96 else:
97 logger.info(f'Material not found: {materialName}')
98
99 # Check if material database is specified for download
100 databaseFileName = opts.saveDatabase
101 haveDatabaseFileName = len(databaseFileName) > 0
102 downloadDatabase = opts.downloadDatabase and haveDatabaseFileName
103 if downloadDatabase:
104 loader.downloadAssetDatabase()
105 if haveDatabaseFileName:
106 logger.info(f'Download database: {databaseFileName}')
107 path = os.path.join(outputFolder, databaseFileName)
108 loader.writeDatabaseToFile(path)
109 else:
110 logger.info('No database download requested or no output file name specified. Skipping database download.')
111